Sida 1 av 1
					
				9-bitars seriell från PC till PIC
				Postat: 11 september 2008, 12:51:15
				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.
			 
			
					
				
				Postat: 11 september 2008, 12:54:22
				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?
			 
			
					
				
				Postat: 11 september 2008, 13:09:05
				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/ 
			
					
				
				Postat: 11 september 2008, 13:26:03
				av sodjan
				Om du ända skriver alla program själv, så är det ju bara
att hitta på ett protokol med inbyggd adressering.
			 
			
					
				
				Postat: 11 september 2008, 13:27:37
				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..
			 
			
					
				
				Postat: 11 september 2008, 13:29:32
				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
 
			
					
				
				Postat: 11 september 2008, 13:31:24
				av Micke_s
				Här har du ett!
http://www.hth.com/snap/ (Vendor id 00480 

)
 
			
					
				
				Postat: 11 september 2008, 13:37:54
				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.
			 
			
					
				
				Postat: 11 september 2008, 13:41:05
				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.
			 
			
					
				
				Postat: 11 september 2008, 20:05:06
				av lgrfbs