Gerüstprotokoll für RS485-bus

Gast #1449884
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
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.