PIC e lampeggio led

Ciao a tutti!

Con un 16f84a sono riuscito a far lampeggiare un led senza problemi... ma con il pic16f877a non ci riesco proprio! Questo è il codice:

PROCESSOR 16F877A RADIX DEC INCLUDE "P16F877A.INC" ERRORLEVEL -302

__CONFIG 0x1FD1

;Disable flash program code protection ;Disable in-circuit debugger mode ;Disable flash program memory protection bits ;Disable data eeprom code protection ;Enable LVP ;Disable BOR ;Enable power up timer ;Disable watch dog timer ;Select XT oscillator

LED EQU 4

ORG 0x20 Count RES 2

ORG 0x00 BCF STATUS, RP1 BCF STATUS, RP0 CLRF PORTA BSF STATUS, RP0 MOVLW 0X06 MOVWF ADCON1 MOVLW 0XCF MOVWF TRISA BCF TRISA, LED

MainLoop CALL Wait BTFSC PORTA, LED GOTO LightOn BSF PORTA, LED GOTO MainLoop

LightOn BCF PORTA, LED GOTO MainLoop

Wait CLRF Count CLRF Count+1

WaitLoop DECFSZ Count, 1 GOTO WaitLoop DECFSZ Count+1, 1 GOTO WaitLoop RETURN

END

Qualcuno sa dirmi dove sbaglio? La programmazione del pic avviene correttamente e ho provato sia con un quarzo da 20mhz (si tratta di un PIC16F877A-I/P) che con uno da 2 mhz

Reply to
Ila
Loading thread data ...

"Ila" ha scritto

[cut]

Hai lasciato a 1 RP0... o e' una svista nel riportare il codice?

Claudio F

Reply to
Claudio F

"Ila" ha scritto

Non sono sicuro, non ho fatto prove in merito pero' mi pareva di si.

Claudio F

Reply to
Claudio F

Per la config word ho risolto, un errore da parte mia. Il codice per il lampeggio nn funzionava, anche dopo aver corretto la svista che mi avevi segnalato. Poi ho notato che toccando con una mano la massa del circuito, il tutto funzionava! Questo nn lo so proprio spiegare... bho? Cmq ora alimento a pila (ma nn credo si trattasse di alimentatore, ho provato anche con un altro e idem) e uso questo codice:

PROCESSOR 16F877A RADIX DEC INCLUDE "P16F877A.INC" ERRORLEVEL -302

__CONFIG B'11111100110001'

;Disable flash program code protection ;Disable in-circuit debugger mode ;Disable flash program memory protection bits ;Disable data eeprom code protection ;Disable LVP ;Disable BOR ;Enable power up timer ;Disable watch dog timer ;Select XT oscillator

LED EQU 1

ORG 0x20 Count RES 2

ORG 0x00 BCF STATUS, RP1 BSF STATUS, RP0 MOVLW B'00000110' MOVWF ADCON1 BCF TRISA, LED BCF STATUS, RP0

MainLoop CALL Wait BTFSC PORTA, LED GOTO LightOn BSF PORTA, LED GOTO MainLoop

LightOn BCF PORTA, LED GOTO MainLoop

Wait CLRF Count CLRF Count+1

WaitLoop DECFSZ Count, 1 GOTO WaitLoop DECFSZ Count+1, 1 GOTO WaitLoop RETURN

END

Che ovviamente va bene con i 4MHz mentre per i 20MHz è necessario passare in HS Inoltre ho notato una svista anche sul datasheet nel codice di esempio per inizializzare la PORTA (parlano di digital input invece di digital I/O... va bhe!) Ultima cosa: hai idea di che cosa possa provocare il difetto con l'alimentatore? Ho provato ad aggiungere qualche condensatore ma niente... Forse una questione di rete? Oppure il bug del pic16f877a descritto qui

formatting link
a pagina 3?

Grazie ancora

Reply to
Ila

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.