Immettere dati nelle variabili del PIC tramite seriale
Oct 08, 2009 4 Replies
G
Geppo
Ciao a tutti, vorrei realizzare un cs con un PIC16F876 per comandare dei rele. Tramite Visual basic vorrei fare un programmino che tramite la seriale vado a modificare delle temporizzazioni sul pic. Tipo ora funziona a tutto temporizzato a 10 secondi , tra 2 mesi lo attacco al pc e tramite il programmino imposto 20 seocndi e deve rimanere temporizzato tale valore Immagino quindi che il programma che devo sviluppare in VB dovra modificare delle variabili, o scrivere su delle allocazione nella ROM. QUalcuno mi potrebbe aiutare per capire come sviluppare dalla parte elettronica i collegamenti del pic ?
Grazie mille!
Didn't find your answer? Ask the community — no account required.
L
Lazer
"Geppo" ha scritto nel messaggio news:4ace56ba$0$1105$ snipped-for-privacy@reader2.news.tin.it...
Puoi inviare i dati dal PC al PIC tramite la seriale. Li catturi e poi li metti in una o più variabili in RAM. Puoi salvarli anche nella EEPROM del PIC, se necessario. Non credo che tu possa memorizzarli sulla ROM. La seriale del PIC funziona a 5 Volt me se usi un MAX 232 completi l'interfaccia con il PC.
G
Geppo
Grazie mille LAzer volevo poi dire EEPROM e non ROM scusatemi ;-) Grazie ancora provo a relizzare il programma e vediamo che fa ;-) "Lazer" ha scritto nel messaggio news:DVszm.77829$ snipped-for-privacy@twister1.libero.it...
P
Pier GSi
"Geppo" ha scritto nel messaggio news:4ace66ef$0$824$ snipped-for-privacy@reader5.news.tin.it...
In genere io definisco il formato del un pacchetto, in questo modo ad esempio :
header - dato1 - dato2 - dato3 - checksum
header potrebbe essere due volte 255, sarebbe meglio se tale sequenza non potesse ripetersi nel resto del pacchetto, gestendo checksum ed un timeout di ricezione non è cosa IMHO indispensabile. Checksum puo' essere la somma ad 8 bit di tutti i bytes oppure il complemento ad uno.
nel pic ricevi tutti i dati incrementando un contatore man mano che arrivano per definirne la posizione e salvi dato1 - dato2 - dato3 in tre variabili (un array char ad es. ) temporanee, all'arrivo del checksum (il sesto byte in questo caso) fai la somma e verifichi, se il checksum calcolato è uguale al checksum ricevuto sposti i dati nella posizione definitiva, altrimenti scarti.
Se non arrivano 6 byte in un tempo predefinito ( a 9600 baud potrebbe essere
15-20 mS per stare larghi) azzeri il contatore "posizione" per cui il byte che successivamente arriva alla USART diventerà il primo.
Ciao, Pier.
formatting link
L
Lazer
Qui trovi un datasheet con tutta la famiglia. Alla figura 5 trovi proprio il 232 con i collegamenti necessari. Il chip ha 2 traslatori in ingresso e 2 in uscita. Se non usi i segnali di controllo ti bastano 1 in ingresso e 1 in uscita e lasci gli altri non collegati..
formatting link
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.