ciccioc74 Inserito: 30 luglio 2007 Segnala Share Inserito: 30 luglio 2007 salve espongo il problema: ho un led sul pin 4 della porta A di un pic 16f876( ho provato anche con un 16f877) collegato a massa tramite una resistenza di 330R . Come compilatore uso MikroC . il listato è semplificato a questo: #define LED5 PORTA.F4 void initizializza(){ PORTA = 0; TRISA = 0;//led ADCON0=0; ADCON1=0x06; return; } void main() { initizializza(); while (1) { LED5=1; delay_ms(500); LED5=0; delay_ms(500); } } Ho collegato un pull-up da 10k sul pin ma niente. Se uso la porta B funziona. Il pin A.4 è open drain e pensavo di risolvere col pull up .... Sembra che con un bd682 funziona ma mi sembra eccessivo per un led, in oltre, anche gli altri pin della porta sembrano non funzionare a modo: #define LED6 PORTA.F5 #define LED1 PORTA.F3 #define LED2 PORTA.F2 #define LED3 PORTA.F1 #define LED4 PORTA.F0 #define LED5 PORTA.F4 void initizializza(){ PORTA = 0; TRISA = 0;//led } void main() { initizializza(); while (1) { LED1=1; delay_ms(300); LED2=1; delay_ms(300); LED3=1; delay_ms(300); LED4=1; delay_ms(300); LED5=1; //questo non si accende! delay_ms(300); LED6=1; delay_ms(300); }in questa maniera si dovrebbero accendere a i vari led (e restare accesi) invece si accende il primo, poi si spegne e si accende il secondo ecc... AIUTOOO! cambio mestiere? Link al commento Condividi su altri siti More sharing options...
aduri Inserita: 2 agosto 2007 Segnala Share Inserita: 2 agosto 2007 Sull'uscita delle porte metti una resistenza da 330ohm 1/4W - led e collega a massa.Vedi anche il sito di un mio amico che ti puo' essere utile.http://www.fisertek.it/index_000011.htmlhttp://www.fisertek.it/images/schema_led.gif Link al commento Condividi su altri siti More sharing options...
ciccioc74 Inserita: 8 agosto 2007 Autore Segnala Share Inserita: 8 agosto 2007 scusa se non ti ho risposto prima. Il mio schema è simile a quello in figura solo che i led sono collegati alla porta A. Non mi funziona. Ho messo anche dei pull-up ma niente...Ho il sospetto che la porta a dei micro PIC16f è solo ingresso (stabile) e in qualche rara applicazione uscita(non stabile ) Link al commento Condividi su altri siti More sharing options...
aduri Inserita: 9 agosto 2007 Segnala Share Inserita: 9 agosto 2007 Con ADCON1=0x06 e TRISA=0 abiliti la porta A come uscite per il resto non dovresti avere problemi. Link al commento Condividi su altri siti More sharing options...
ciccioc74 Inserita: 9 agosto 2007 Autore Segnala Share Inserita: 9 agosto 2007 non dovrei avere problemi ma li ho . Sul forum di mikroelettronika mi dicono che a loro funziona sulla scheda easypic . Ma a parte i pull up e la resistenza in serie non saprei cosa può avere di particolare. sai dove reperire lo schema di easypic? grazie tante , comunque, per il supporto Link al commento Condividi su altri siti More sharing options...
ciccioc74 Inserita: 22 agosto 2007 Autore Segnala Share Inserita: 22 agosto 2007 problema risolto. Il fatto è che una operazione di scrittura sulla porta del pic viene interpretata come read-modify- write. Se la tensione alla porta non è sufficiente a far leggere il coretto stato, al momento della modifica ha gia un dato sbagliato. Uso per questo una variabile globale: la aggiormo col corretto valore e la copio sulla porta (non bit a bit ma a byte): char set_temp_A=0; void set_porta_a(char sbit_A){ set_temp_A=set_temp_A | sbit_A; PORTA=set_temp_A; } void reset_porta_a(char rbit_A){ rbit_A = ~ rbit_A; set_temp_A=set_temp_A & rbit_A; PORTA=set_temp_A; } void complement_port_A(char cobitA){ int cotemp=0; cotemp=set_temp_A & cobitA; if (cotemp == 0) //il led era spento set_porta_a(cobitA); else reset_porta_a(cobitA); } main() { ... complement_port_A(0x10); } Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 23 agosto 2007 Segnala Share Inserita: 23 agosto 2007 bravo ... Link al commento Condividi su altri siti More sharing options...
RESNIC Inserita: 23 agosto 2007 Segnala Share Inserita: 23 agosto 2007 Sinceramente non ho capito il problema... qualcuno me lo vuole spiegare? Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora