Gerüstprotokoll für RS485-bus

Gast #1449884
Lesenswert?

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
Gast #1449897
Lesenswert?

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
#1449901
Lesenswert?

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
Gast #1449919
Lesenswert?

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;
         }
      }
   }
}
Gast #1449920
Lesenswert?

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;
}
   }
#1449988
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren