Hallo an alle, ich möchte für ein kleines Projekt eine Kommunikation aufbauen auf dem RS485-Bus. Es soll ein Master-Multislaves-Prinzip sein.Die Übertragung ist für maxi 10 Teilnehmer ausgedacht und übertragung von 9600 Baud. hat jemand was ähnliches schon programmiert ? ich würde mich freuen auf ein kleines Code auf dem ich meine Programmierung aufbauen werde. Danke im voraus. Karl
dazu gibt es fertige sachen im netz ansonst [startbyte] [länge] [slaveadresse/geräteadresse] [datenbyte(s)] [checksumme] sowas kann man schnell zusammenfrickeln und läuft ausreichend sicher für kleine anwendungen
Karl schrieb: > Hallo an alle, > > ich möchte für ein kleines Projekt eine Kommunikation aufbauen auf dem > RS485-Bus. Es soll ein Master-Multislaves-Prinzip sein.Die Übertragung > ist für maxi 10 Teilnehmer ausgedacht und übertragung von 9600 Baud. > > hat jemand was ähnliches schon programmiert ? ich würde mich freuen auf > ein kleines Code auf dem ich meine Programmierung aufbauen werde. > > Danke im voraus. > Karl Such mal nach DMX bzw -> http://www.digital-enlightenment.de/usbdmx.htm
hi danke für die ersten hilfestellungen. aber von wegen fertige sache im Netz , habe ich schon gegooglet und noch nichts gesehen. >Such mal nach DMX >bzw -> http://www.digital-enlightenment.de/usbdmx.htm In der Seite, geht es nicht um mein Thema. ich suche ein kleiner Wind, der mich vorwärts schieben kann. Und ich hoffe ihr könnt mir das anbieten thks Karl
Ich verstehe zwar nicht warum dich das nicht weiter bringt - aber gut ist dann nicht mehr mein Problem. Nochmals als Tipp: DMX ist RS485
> Gerüstprotokoll für RS485-bus
Es gibt nicht den RS485-Bus :-/
RS485 ist eine Definition für die physikalische Übertragung von
einzelnen Bits/Bytes. Wie und welche Daten wann und wozu übertragen
werden, ist in diesem Standard nicht festgelegt...
> Nochmals als Tipp: DMX ist RS485
Es ist eher ein RS422 mit mehreren Empängern.
Denn RS485 zeichnet sich durch die Multimasterfähigkeit aus. Genau das
gibt es bei DMX aber nicht.
void sys_protocol_handler(void) { unsigned int tmpgetc; unsigned int tmpstatus; unsigned char tmpdata; static unsigned char frame_count; tmpgetc = uart_getc(); tmpdata = (unsigned char) tmpgetc; tmpstatus = (tmpgetc & 0xFF00); if(tmpstatus == UART_NO_DATA) { if(ftimer_fidt_elapsed == TRUE) { frame_count = 0; ftimer_fidt_elapsed = FALSE; } } else { ftimer_fidt_reset = TRUE; if(frame_count < 5) { Frame_RxBuf[frame_count] = tmpdata; frame_count++; } else { if(tmpdata == '\n') { Frame_RxBuf[frame_count] = tmpdata; Frame_RxBuf[frame_count+1] = STRINGEND; frame_count = 0; fframe_valid = TRUE; } else { frame_count = 0; } } } }
ISR(TIMER2_OVF_vect) { // Communication Protocol Timer/Counter if(ftimer_fidt_reset == TRUE) { handler_count = INNER_DEAD_TIME; ftimer_fidt_reset = FALSE; } if(handler_count != 0) { handler_count--; } else { ftimer_fidt_elapsed = TRUE; handler_count = INNER_DEAD_TIME; } }
Karl schrieb: > hat jemand was ähnliches schon programmiert ? ich würde mich freuen auf > ein kleines Code auf dem ich meine Programmierung aufbauen werde. Suche mal in der Codesammlung unter "RS485", da habe ich vor längerer Zeit etwas eingestellt (Thema "RS485 Funktionen"). Grüße Michael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.