Problema con PIC16F876

Salve a tutti ho fatto un programmino banale per accendere e spegnere 2 led su RC0 e RC1 di un PIC16F876 in PICC:

#include #include #define XTAL_FREQ 4MHZ #include "delay.c"

main(){ TRISC=0b11000000; //setta I/O PORTC

while(1){ ComUnita=1; ComDec=1; DelayMs(254); DelayMs(254); DelayMs(254); DelayMs(254); DelayMs(254); RC0=0; RC1=0; DelayMs(254); DelayMs(254); DelayMs(254); DelayMs(254); DelayMs(254); } }

il problema è che sull'uscita del pic la tensione che leggo senza nulla attaccato è 0V quando è "0" e 0.69V quando è a "1" e quindi i led non si accendono. Ho provato a cambiare RC0 e RC1 con altre 2 uscite del portB e i led si accendono senza problemi. Da cosa dipende questo problema? Grazie

--
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
 Click to see the full signature
Reply to
NeMeSi
Loading thread data ...

"NeMeSi" ha scritto nel messaggio news:djn5va$hm9$ snipped-for-privacy@news.newsland.it...

Nel listato sopra, quando è che metti a 1 i portC ?

Reply to
Roberto P.

Scusa ho fatto male il copia/incolla ComUnità e ComDec erano RC0 e RC1:

#include #include #define XTAL_FREQ 4MHZ #include "delay.c"

main(){ TRISC=0b11000000; //setta I/O PORTC

while(1){ RC0=1; RC1=1; DelayMs(254); DelayMs(254); DelayMs(254); DelayMs(254); DelayMs(254); RC0=0; RC1=0; DelayMs(254); DelayMs(254); DelayMs(254); DelayMs(254); DelayMs(254); } }

--
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
 Click to see the full signature
Reply to
NeMeSi

"NeMeSi" ha scritto:

Prova a fare:

Invece di queste due righe metti: PORTC=0x03;

Invece di queste altre metti: PORTC=0x00;

Reply to
Michele

Michele ha scritto:

Questo è solo lo stralcio di un programma con il quale devo poter controllare ogni singolo bit della porta quindi non posso e poi il cambiamento di stato lo fà è solo che i valori di tensione sono bassi e cono capisco perchè!! Non è neanche il pic rotto perchè l'ho provato anche con uno nuovo.

--
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
 Click to see the full signature
Reply to
NeMeSi

NeMeSi ha scritto:

Hai impostato correttamente tutti i fuse?

Marco / iw2nzm

Reply to
Marco Trapanese

"NeMeSi" ha scritto nel messaggio news:djnc6d$6ps$ snipped-for-privacy@news.newsland.it...

Controlla di non aver impostato T1CON.T1OSCEN, altrimenti RC0 e RC1 diventano input, indipendentemente da come setti il TRISC. Controlla anche le impostazioni relative al pwm (se lo usi)

Reply to
Roberto P.

Marco Trapanese ha scritto:

I fuse li programmo da EPICWin e ho messo: Power-up timer enable e brown-out reset enable il resto tutto disattivato e quarzo XT. La cosa strana è che lo stesso programma lo compilo e lo provo su un

16F877 e tutto funziona.
--
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
 Click to see the full signature
Reply to
NeMeSi

"NeMeSi" ha scritto:

Guarda che facendo PORTC=0xZY controlli lo stesso ogni singolo bit e lo fai con un'istruzione sola! Comunque segui il consiglio di Roberto P. vedi se hai impostato altre cose!

Reply to
Michele

T1CON.T1OSCEN non l'ho modificato e di default è a 0 e il PWM non lo uso quindi è tutto nello stato di default.

--
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
 Click to see the full signature
Reply to
NeMeSi

Michele ha scritto:

Si ma se ad esempio io devo cambiare RC1 passando da 0 a 1 senza sapere in che stato sono gli altri bit della porta come faccio??

--
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
 Click to see the full signature
Reply to
NeMeSi

NeMeSi ha scritto:

PORTC |= 0x02;

Marco / iw2nzm

Reply to
Marco Trapanese

NeMeSi ha scritto:

Fai un OR/AND con una maschera. Es. settare RC0 RC0=RC0||0x01 Resettare RC1 RC1=RC1&&0xFD Se non ho sbagliato i conti ;-)

--
Ciao
Diego
Reply to
Diego Marson

Diego Marson ha scritto:

Ma non è molto più semplice e comprensibile un RC1=0; o RC1=1????

--
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
 Click to see the full signature
Reply to
NeMeSi

NeMeSi ha scritto:

Forse si, ma con le maschere è più veloce (quando prendi mano) e puoi fare settaggi su più bit in un colpo solo. Poi comunque credo che il compilatore, quando scrivi rc1=0 non faccia altro che fare un and bit a bit con una maschera.

--
Ciao
Diego
Reply to
Diego Marson

"NeMeSi" ha scritto nel messaggio news:djngfk$mh8$ snipped-for-privacy@news.newsland.it...

Infatti, deve funzionare anche così. Nel tuo sorgente includi in 'pic.h', ha le impostazioni dei registri corrette per il 16f876 ? Non è che usi la versione lite che compila solo per il 16f84 ?

Reply to
Roberto P.

RC0 RC1 sono anche i pin SCL e SDA della periferica I2c... La hai disabilitata??? Non ricordo se di default e' disabilitata, mi sembra di si, ma potrebbe essere quello il problema e visto che non hai ancora risolto... i miei 2 cents. ciao Angelo

Reply to
MarcoAngelo

"MarcoAngelo" ha scritto nel messaggio news:435f4fa2$0$24637$ snipped-for-privacy@reader3.news.tin.it...

SCL e SDA sono RC3 e RC4

Reply to
Roberto P.

Roberto P. ha scritto:

No uso la versione completa. La cosa da tenere in considerazione e che ho scritto nel primo post è che il cambiamento di stato lo fa ma i valori di tensione che leggo per lo stato logico 1 sono 0.69V e quindi troppo bassi.

--
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
 Click to see the full signature
Reply to
NeMeSi

"NeMeSi" ha scritto nel messaggio news:djnl5d$a0t$ snipped-for-privacy@news.newsland.it...

Banale, ma hai provato con un'altro pic ? Hai messo un carico sulle porte ? Nel caso, puoi provare anche con un led + 470ohm e verificare cosa succede se lo colleghi con l'anodo al port (per provare la chiusura verso 0) o il catodo al port (per provare la chiusura verso vcc) Provato a disabilitare il wdt (ferse l'uscita cambia troppo rapidamente e non riesci a vederlo con il tester, hai possibilità di verificare con l'oscilloscopio ?)

Reply to
Roberto P.

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.