Autor Tema: PIC18F2550: Puertos quemados?  (Leído 3093 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Yio

  • PIC10
  • *
  • Mensajes: 4
PIC18F2550: Puertos quemados?
« en: 07 de Julio de 2008, 20:27:23 »
Hola a todos.
Estuve programando un PIC18F2550 con un JDM plus de RdSS
Grabo el PIC, lo leo y veo los datos pero en el protoboard no pasa nada.
Pruebo el .hex con el PIC18 simulator IDE y responde bien
En los puertos no mido ni un cero ni un uno. Ya revisé configuraciones de entrada/salida y hasta hice un .hex bien sencillo para probarlo.
¿Es posible que haya quemado los puertos de I/O?
Creo que en un momento me equivoqué de resistencias al conectar leds y hasta es posible que haya conectado un led directamente entre pin de salida y masa, oops!!! 
Es que hacía mucho que no hacía nada en electrónica :lol:

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: PIC18F2550: Puertos quemados?
« Respuesta #1 en: 07 de Julio de 2008, 20:41:55 »
Hola Yio bienvenido al foro.

Tu problema mas bien parece un problema de las conexiones del PIC. ¿Tienes bien puestas las 2 (o tres masas) del PIC?

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: PIC18F2550: Puertos quemados?
« Respuesta #2 en: 07 de Julio de 2008, 22:46:28 »
Hola.

Si no saca nada es porque no esta conectado el MCLR a Vcc o se te olvido conectar el cristal (tambien pueden ser los contactos de las protoboard ... a mi me ha sucedido que teniendo todo conectado no funcionaba y era la p*** protoboard que tenia mal los contactos!!!! )

Saludos.
El papel lo aguanta todo

Desconectado Yio

  • PIC10
  • *
  • Mensajes: 4
Re: PIC18F2550: Puertos quemados?
« Respuesta #3 en: 08 de Julio de 2008, 20:57:48 »
Gracias por contestar.
Son todas cosas que sospeché
Cambié de lugar el micro en el protoboard, le puse un cristal de 4MHz y los dos capacitores a masa por si había configurado mal el reloj, medí la tensión en la pata 20 (Vdd), medí entre las patas de masa 8 y 19 (Vss) y los 5 v, puse el MCLR a 5 v directo y también con una resistencia de 10k.
Hice, para probar, algo tan tonto como esto (con bits de config para descartar posibles errores):
Código: [Seleccionar]
LIST P=18F2550 , F=INHX32 ;directive to define processor
#include <P18F2550.INC> ;processor specific variable definitions


GOTO L1
;
L1: CLRF PORTC,A
      MOVLW 0x0F
      MOVWF TRISC,A
L2:  BTFSC PORTC,2,A
       BSF PORTC,5,A
       BTFSS PORTC,2,A
       BCF PORTC,5,A
       GOTO L2
END

En el PIC 18 simulator IDE anda bien pero en protoboard no
Uso un regulador 7805 conectado a una fuente regulada variable ajustada a unos 6,3 volts y mido 5v a la salida del 7805.

Ya encargué otro PIC para probar y de paso tenerlo de repuesto

Saludos
« Última modificación: 11 de Julio de 2008, 21:49:49 por Yio »

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: PIC18F2550: Puertos quemados?
« Respuesta #4 en: 08 de Julio de 2008, 21:35:56 »
Hola:

Hice, para probar, algo tan tonto como esto (con bits de config para descartar posibles errores):

Parece que te esmeraste demasiado en hacerlo como dices en esa frase porque en tu programa para empezar no has configurado los puertos, y viendo esto pues es muy probable que también estes configurando mal los fusibles referentes al oscilador, y encima al led le estas mandando frecuencia por si no te has dado cuenta asi que ese led en el mejor de los casos se encenderá solo un poco.

Javicho.

Desconectado Yio

  • PIC10
  • *
  • Mensajes: 4
Re: PIC18F2550: Puertos quemados?
« Respuesta #5 en: 11 de Julio de 2008, 21:52:26 »
Perdón, pegué cualquier código
Ahí corregí el código que pone a 1 el pin 16 (RC5) cuando pongo en 1 el pin 13 (RC2)

Tengo dudas respecto al WinPic800, la solapa Config. quisiera que la ignore y sólo preste atención a la configuración en el código y no sé si es así
« Última modificación: 11 de Julio de 2008, 22:15:48 por Yio »

Desconectado Yio

  • PIC10
  • *
  • Mensajes: 4
Re: PIC18F2550: Puertos quemados?
« Respuesta #6 en: 12 de Julio de 2008, 21:31:35 »
Bueno, ya lo hice andar  :-/
pero con el RC2 como entrada y el RC1 como salida.
(Cuando pongo a +5 el RC2, el RC1 se pone a +5, y cuando pongo a masa el RC2, el RC 1 da cero)

El RC5, si bien el PIC 18 simulator lo pone a uno cuando le doy un uno al RC2, no es así con el simulador del MPLAB ni tampoco en el protoboard.
El RC5 debe estar reservado como data+ para el USB, pero de todas maneras no me importa porque este pin no lo iba a usar, era sólo para probar el PIC

El código queda así, con las directivas de config., aunque no me queda claro si la configuración del ADC, OSC, USART, etc., que pongo después del main, no deberían estar en otro lado, más arriba o que se yo...
Código: [Seleccionar]
LIST P=18F2550 , F=INHX32 ; tipo de procesador, formato del fichero hexadecimal de salida
NOLIST
#include <P18F2550.INC> ; processor specific variable definitions
processor 18F2550

; PLL Prescaler Selection bits:
CONFIG PLLDIV = 1          ; NO USO / No prescale (4 MHz oscillator input drives PLL directly)

; CPU System Clock Postscaler:
CONFIG CPUDIV = OSC1_PLL2   ; [OSC1/OSC2 Src: /1][96 MHz PLL Src: /2]

; USB Clock Selection bit (used in Full Speed USB mode only; UCFG:FSEN = 1):
CONFIG USBDIV = 1           ; USB clock source comes directly from the primary oscillator block with no postscale

; Oscillator Selection bits:
CONFIG FOSC = INTOSC_HS     ; Internal oscillator, HS used by USB

; Fail-Safe Clock Monitor Enable bit:
CONFIG FCMEN = ON           ; Fail-Safe Clock Monitor enabled

; Internal/External Oscillator Switchover bit:
CONFIG IESO = ON            ; Oscillator Switchover mode enabled

; Power-up Timer Enable bit:
CONFIG PWRT = ON            ; PWRT enabled

; Brown-out Reset Enable bits:
CONFIG BOR = SOFT           ; Brown-out Reset enabled and controlled by software (SBOREN is enabled)

; Brown-out Voltage bits:
CONFIG BORV = 2                       

; USB Voltage Regulator Enable bit:
CONFIG VREGEN = OFF         ; USB voltage regulator disabled

; Watchdog Timer Enable bit:
CONFIG WDT = OFF            ; Hardware Disabled - Software Controlled

; Watchdog Timer Postscale Select bits:
CONFIG WDTPS = 256          ; 1:256

; MCLR Pin Enable bit:
CONFIG MCLRE = OFF          ; RE3 input pin enabled; MCLR disabled

; Low-Power Timer 1 Oscillator Enable bit:
CONFIG LPT1OSC = OFF        ; Timer1 configured for higher power operation (MENOR SENSIBILIDAD AL RUIDO EN EL TIMER1)

; PORTB A/D Enable bit:
CONFIG PBADEN = ON          ; PORTB<4:0> pins are configured as analog input channels on Reset

; CCP2 MUX bit:
CONFIG CCP2MX = ON          ; CCP2 input/output is multiplexed with RC1

; Stack Full/Underflow Reset Enable bit:
CONFIG STVREN = ON          ; Stack full/underflow will cause Reset

; Single-Supply ICSP Enable bit:
CONFIG LVP = OFF            ; Single-Supply ICSP disabled (In Circuit Serial Programming)

; Extended Instruction Set Enable bit:
CONFIG XINST = OFF          ; Instruction set extension and Indexed Addressing mode disabled (Legacy mode)

; Background Debugger Enable bit:
CONFIG DEBUG = OFF          ; Background debugger disabled, RB6 and RB7 configured as general purpose I/O pins

;   Code Protection bit Block 0:
CONFIG CP0 = OFF            ; Block 0 (000800-001FFFh) not code-protected

;   Code Protection bit Block 1:
CONFIG CP1 = OFF            ; Block 1 (002000-003FFFh) not code-protected

;   Code Protection bit Block 2:
CONFIG CP2 = OFF            ; Block 2 (004000-005FFFh) not code-protected

;   Code Protection bit Block 3:
CONFIG CP3 = OFF            ; Block 3 (006000-007FFFh) not code-protected

;   Boot Block Code Protection bit:
CONFIG CPB = OFF            ; Boot block (000000-0007FFh) not code-protected

;   Data EEPROM Code Protection bit:
CONFIG CPD = OFF            ; Data EEPROM not code-protected

;   Write Protection bit Block 0:
CONFIG WRT0 = OFF           ; Block 0 (000800-001FFFh) not write-protected

;   Write Protection bit Block 1:
CONFIG WRT1 = OFF           ; Block 1 (002000-003FFFh) not write-protected

;   Write Protection bit Block 2:
CONFIG WRT2 = OFF           ; Block 2 (004000-005FFFh) not write-protected

;   Write Protection bit Block 3:
CONFIG WRT3 = OFF           ; Block 3 (006000-007FFFh) not write-protected

;   Boot Block Write Protection bit:
CONFIG WRTB = OFF           ; Boot block (000000-0007FFh) not write-protected

;   Configuration Register Write Protection bit:
CONFIG WRTC = OFF           ; Configuration registers (300000-3000FFh) not write-protected

;   Data EEPROM Write Protection bit:
CONFIG WRTD = OFF           ; Data EEPROM not write-protected

;   Table Read Protection bit Block 0:
CONFIG EBTR0 = OFF          ; Block 0 (000800-001FFFh) not protected from table reads executed in other blocks

;   Table Read Protection bit Block 1:
CONFIG EBTR1 = OFF          ; Block 1 (002000-003FFFh) not protected from table reads executed in other blocks

;   Table Read Protection bit Block 2:
CONFIG EBTR2 = OFF          ; Block 2 (004000-005FFFh) not protected from table reads executed in other blocks

;   Table Read Protection bit Block 3:
CONFIG EBTR3 = OFF          ; Block 3 (006000-007FFFh) not protected from table reads executed in other blocks

;   Boot Block Table Read Protection:
CONFIG EBTRB = OFF          ; Boot block (000000-0007FFh) not protected from table reads executed in other blocks


ORG 0

Main

; Interrupciones :
clrf INTCON ; No uso las Interrupciones por ahora (se usarán para Almacenar/Cambiar de Programa)
clrf INTCON2 ;
clrf INTCON3 ;
clrf PIE1 ;
clrf PIE2 ;
; Osciladores :
movlw B'01100010' ; <IDLEN><7>=0(idle disabled, un sleep=>provoca sleep, no idle)
movwf OSCCON ; OSCCON<IRCF2:IRCF0>=OSCCON<6:4>=110 (=4MHz), <1>=1=internal oscillator (SCS0 es indiferente)
movlw B'10000000' ;
movwf OSCTUNE ; <7>=1=31.25KhZ=8mhZ/256(INTOSC/256)
; USART salida MIDI (TRISC, TXSTA, RCSTA, BAUDCON)
bcf TRISC,6 ; =0 => RC6 es salida (TX)
clrf SPBRGH
movlw B'00000111' ; SPBRG = 7 decimal <= Frec 31250Hz (frec principal Fosc = 4MHz)
movwf SPBRG
movlw B'01001000' ; BAUDCON<6>=1=Rx sin utilizar (idle), BAUDCON<3>=BRG16=1 (16-bit BaudRateGenerator)
movwf BAUDCON
clrf TXSTA ; TXSTA<4>=0=ASYNC, TXSTA<2>=BRGH=0
bsf RCSTA,SPEN ; Serial Port Enable bit
bsf TXSTA,TXEN ; TXSTA<5>=TXEN=1 (Tx enabled)
; ADC
movlw B'00000101' ; <7:6>=uu, <5:2>=ADCch=0001=AN1=rueda1, 
movwf ADCON0 ; <1>=0=dont start conversion, <0>=1 = ADC Enabled
movlw B'00000011' ; 00=-,00=Vss y Vdd ref, ADCON1<PCFG3:PCFG0>=0011=AN11 a AN0 son analógicas
movwf ADCON1 ; Vss y Vdd de ref., <3:0>=<PCFG3:PCFG0>=0000 (AN12:AN0 son analógicas)
; Acquisiton Time = 2.45µS (Tacq) . FOSC=4MHz => TOSC= 250nS => 1 instruccion = 4ciclos de 250nS = 1000nS = 1µS,
; Tacq = 2.45µS , CantInstrucc = 2.45µS/1µS = 2.4 ~= 3 instrucc.
movlw B'00010000' ; 0=LeftJustified(tomo ADRESH), 0=- , ADCON2<ACQT2:ACQT0>=010=4*Tad , 100=Fosc/2 (A/D Conversion Clock)
movwf ADCON2 ; Tad = 4 TOSC , Fosc max. = 5.71 MHz

; Inicialización de puertos
clrf PORTA
movlw B'00111111' ; RA<5:0> son entradas,
movwf TRISA ; RA<7:6> son salidas -no existen-
clrf PORTB
movlw B'00011110' ; RB<4:1> son entradas
movwf TRISB ; RB<7:5,0> son salidas (no las uso)
movlw B'00000110' ; <7>=1=T0 detenido, <6>=0=16-bit, <5>=0=cuenta Internal instruction cycle clock, <4>=0=flanco asc
  movwf T0CON ; <3>=0=con prescaler, <2:0>=110=4MHz/128=31250Hz
; TIMER3 MODULE
clrf PORTC
movlw B'10000010' ; <7>=1=16-bit, <6,3>=00 no comparadores, <5-4>=00=prescaler=1:1,
  movwf T3CON ; <2>=0=sync externo , <1>=1=clock externo de T13CKI, <0>=0=detenido
bsf TRISC,0 ; =1 => RC0=T13CKI es entrada de clock de Timer3


;##########################################################################


L1: CLRF PORTC,A
      MOVLW B'00001101' ; RC2 entrada, RC1 salida
      MOVWF TRISC,A
L2:  BTFSC PORTC,2,A
       BSF PORTC,1,A
       BTFSS PORTC,2,A
       BCF PORTC,1,A
clrwdt
bsf PORTC,7
       GOTO L2
END
« Última modificación: 12 de Julio de 2008, 21:35:18 por Yio »