Immettere dati nelle variabili del PIC tramite seriale

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!

Reply to
Geppo
Loading thread data ...

"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.

Reply to
Lazer

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...

Reply to
Geppo

"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 caso della somma potremmo avere :

255 - 255 - 12 -20 - 45 - 75

FF - FF - 0C - 14 - 2D - 4B

Quindi trasmetti dal pc, in VB, con

mscomm1.output=chr$(255) + chr$(255) + chr$(12)+chr$(20)+chr$(45)+chr$(75)

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

Reply to
Pier GSi

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

Reply to
Lazer

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.