BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   Aiuto PIC (https://www.baronerosso.it/forum/circuiti-elettronici/36374-aiuto-pic.html)

simone76 14 ottobre 06 09:14

Aiuto PIC
 
Cerco qualcuno che sappia dirmi perchè non riesco a far funzionare portA come ingresso in un 16F628. Linguaggio C. Se si fa avanti qualcuno, poi gli spiego tutto....

:)

MSchiepp 14 ottobre 06 09:19

Citazione:

Originalmente inviato da simone76
Se si fa avanti qualcuno, poi gli spiego tutto....

:)

Proviamo... dimmi qual'è il problema

Michele

simone76 14 ottobre 06 09:32

:lol: grazie

non ho molta esperienza con i circuiti programmabili, ma mi sono finalmente deciso a giocare un po' con i PIC e sfruttare così la scheda che ho comprato un paio di anni fa, che funge anche da scheda sperimentale con alcuni led e pulsanti (scheda Velleman VM-110 col suo programmatore PicProg2006). Come linguaggio, per fretta piu' che altro, uso il C (compilatore mikroC http://www.mikroelektronika.co.yu/). Il mio problema è banale: ho capito come fare alcune cose carine, riesco a mandare in oputput, ma non riesco a far funzionare la portA in input. Come PIC uso dei 16f628. Ti esemplifico il problema, per indagare meglio ho scritto il programmino di prova incentrato sul problema in oggetto:

void main()
{
TRISB = 0x00;
PORTB = 0x00;
TRISA = 0x01;
PORTA = 0x00;
while(1)
{
while(PORTA & 0x01)
{
PORTB |= 0x01;
delay_ms(500); // ritardo 500 msec
}
PORTB &= 0x00;
}
}

Per completezza di informazione ti dico che ho i sei led su RB0, RB1, RB2, RB3, RB4,RB5 (uscita=1 => led acceso) ed i quattro pulsanti su RA0, RA1, RA2, RA3 (premuto => ingresso=1, a riposo ingresso=0). Come oscillatore uso il circuito RC interno.
Il programma semplicemente dovrebbe attendere la pressione del primo tasto (RA0), accendendo il led su RB0 (spegnendolo con un piccolo ritardo).
AIUTO :hail: :mecry:

MSchiepp 14 ottobre 06 09:50

Primo controllo: il pin che usi come ingresso deve avere un pull-up verso il positivo (esterno o interno) e lo devi sentire a zero quando chiude verso massa.

Michele

simone76 14 ottobre 06 09:59

Citazione:

Originalmente inviato da MSchiepp
Primo controllo: il pin che usi come ingresso deve avere un pull-up verso il positivo (esterno o interno) e lo devi sentire a zero quando chiude verso massa.

Michele

ovviamente, questo genere di controllo l'ho fatto... ho misurato la tensione sul pin col tester. sono alcuni giorni che provo!!!!!

Dalle prove che ho fatto ti confermo anche che il programma gira, inoltre ho provato 4-5 chip differenti compreso un 16f627, nuovi.
Ci deve essere un inghippo: forse devo settare da qualche parte la porta come ingresso digitale?

simone76 14 ottobre 06 10:23

Citazione:

Originalmente inviato da MSchiepp
Primo controllo: il pin che usi come ingresso deve avere un pull-up verso il positivo (esterno o interno) e lo devi sentire a zero quando chiude verso massa.

Michele


Attenzione: come ho ben specificato, la mia scheda prevede un 1 logico quando il tasto è premuto, altrimenti è a 0. La resistenza sara' pull down...
La scheda è compatibile con i PIC usati, e col tester misuro la giusta tensione sul pin. Escluderei problemi HW.

simone76 14 ottobre 06 10:27

Il mattino ha l'oro in bocca
 
MMmmh..... è proprio vero quel proverbio, con un po' di concentrazione ho risolto!!!!
ho dovuto spegnere il comparatore analogico (CMCON |= 0x07;) che stranamente era ON........ boooh!!!
Mi sapresti dire dove trovare una spigazione di tutte queste gabole? Il datasheet è un po' pesantino, e poi mi farebbe comodo trovare pezzi di codice C.

grazie comunque :lol:

MSchiepp 14 ottobre 06 11:59

Bravo, quella era la seconda cosa da fare...
Scusa per il ritardo della risposta, ma ero uscito per un voletto mattutino...
Per le spiegazioni la cosa migliore è proprio il data-sheet: è vero che è un po' voluminoso, ma, a parte piccole differenze, descrive praticamente tutta la famiglia di PIC, quindi studiato uno, imparati tutti.
Per il codice sia sul sito Microchip che su quello del tuo compilatore trovi tantissimi esempi di codice per i2c bus, interfacciamento a display, tecniche di lettura e multiplexing... c'è davvero tanto.
Se poi ti serve qualcosa di specifico, chiedi: in trent'anni di programmazione un po' di cose le ho fatte...

Ciao,

Michele

ady 08 novembre 06 11:29

scusate l'intrusione
 
non sò se posso approfittare.
io ho un problema con la scheda easypic3 stò disperatamente tentando di comunicare con il pc via seriale. il test che viene descritto è una sola.
qualcuno sà come risolvere il problema?:hail: :wall: :wall: :wall:

MSchiepp 08 novembre 06 13:01

Citazione:

Originalmente inviato da ady
...non sò se posso approfittare.

Magari con qualche informazione in più...

Michele


Tutti gli orari sono GMT +2. Adesso sono le 08:40.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002