9-bitars seriell från PC till PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
rbrakhya
Inlägg: 22
Blev medlem: 22 februari 2006, 10:14:48

9-bitars seriell från PC till PIC

Inlägg av rbrakhya »

Hej!
Försöker få till adressering av flera pic:ar mha EUSARTens 9-bitarsläge med adress detection. Programmerar i VB6.

Vet att PC:ns usart inte stödjer 9-bitars kommunikation, men har fått veta att man kan använda paritetsbiten för att fuska fram en 9:e bit.

Har försökt med "Mark" och "Space" som paritet i mscomm men jag får det inte att funka. När jag tittar på oscilloskopet så syns inte paritetsbiten.

Någon som har erfarenhet av detta? Stödjer alla usarts dessa paritetstyper?
PC:n är inte jättegammal, typ 4 år.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Allvarligt: låt bli!

Det är inte besväret värd och det finns en inbyggd osäkerhet på om det fungerar i alla lägen.

Och sedan: varför alls?
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Du får ha en PIC som brygga och kapsla in meddelandena från datorns 8bitars uart och lägga på den sista biten i pic:en

Exempel på meddelande [SOH] ADDRESS [STX] Text [ETX] [EOT]

och skicka address och text som hex eller om det är okej att skicka allt som läsbar text till noderna.

http://www.asciitable.com/
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Om du ända skriver alla program själv, så är det ju bara
att hitta på ett protokol med inbyggd adressering.
rbrakhya
Inlägg: 22
Blev medlem: 22 februari 2006, 10:14:48

Inlägg av rbrakhya »

Tack för svaren. Ville slippa ta interrupt från datat som skickas eftersom det kan bli upp till ett hundratal noder i systemet. Men jag kommer iofs inte att skicka så mycket data per nod..

Som ni säger, det är nog inte värt det..
rbrakhya
Inlägg: 22
Blev medlem: 22 februari 2006, 10:14:48

Inlägg av rbrakhya »

sodjan skrev:Om du ända skriver alla program själv, så är det ju bara
att hitta på ett protokol med inbyggd adressering.
Ja, har bara läst något kort om detta. Ska sätta mig in i det.

Tack
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Här har du ett!
http://www.hth.com/snap/ (Vendor id 00480 :D)
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

De gånger jag har behövt detta har det varit enkelt:

[STX]123,6738[ETX]
STX = 0x02
ETX = 0x03

Detta betyder alltså att jag har skickat:
0x02 '1' '2' '3' ',' '6' '7' '8' '3' 0x03

Och dekodningen är enkel: samla ihop alla bytes som kommer i en buffer, se till att den inte overflower. På en STX ska den bara nolla input-räknaren och på ETX ska den kolla med de insamlade värden om det är till "min" adress.

Om det är rätt adress utförs en funktion eller vad som ska göras.

För tillfället har jag ett projekt som förvisso är oadresserat men likaväl har ett skapligt protokoll:
[STX]Funktion, Läsa/Skriva, Index, Data[ETX]

Den delar upp datan (som är i ren text) med just ',' och det fungerar klickfritt. Att jag har Index med beror på att t.ex. temperaturer kan ställas/läsas och det finns ett antal att välja mellan.

Ska jag läsa ett värde anger jag bara '0' i de oviktiga värden samt ställer Läs/Skriv-flaggan till 'R', enkelt som fan.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Jo, ascii protokoll har fördelen att de är läsbara rakt av, så länge man inte är ute efter maximal hastighet så är det lungt.
Användarvisningsbild
lgrfbs
Inlägg: 7319
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Inlägg av lgrfbs »

NMRA-DCC klarat 9999 adresser + en del annat också.
http://www.nmra.org/standards/DCC/stand ... rp921.html
Skriv svar