Empfangen mit dem Microcontroller

OP #1492805
Lesenswert?
• ▲
▼
Hi Leute,

Ein Mitstudierender und ich versuchen im Moment, Daten die vom Rechner 
kommen mit dem Microcontroller zu empfangen.

Im web und der uni-bibliothek haben wir uns so gut es ging mit der 
Methode "empfangen" vertraut gemacht.
Das Programm funktioniert aber leider nicht so, wie wir es uns 
vorgestellte haben.
Wir hoffen auf einige tipps und tricks von euch.

Im Anhang findet ihr das C-Programm und die Headerdatei die wir benutzt 
haben.

gruß
Angehängte Dateien:
Gast #1492826
Lesenswert?
• ▲
▼
for(;;)
  {

  *pt_empfangene_daten = uart_getc_wait();

  pt_empfangene_daten++;          //zählt pointer pt1 hoch, setz damit 
Adresse im Array ein weiter
  }


is das nicht ne Endlosschleife? irgendwann wird dein Speicher überlaufen 
und nix passiert....
Gast #1492891
Lesenswert?
• ▲
▼
Hi
Schade, das ich von C nicht so viel Ahnung habe, aber hier gibt's ein 
Tutorial in Assembler. Sehr schön und verständlich.
Ich habe mir einen Buffer im Variablenbereich eingerichtet und dort 
werden einlaufende Zeichen (der UART macht's mit Interupt) eingetragen.
Ich benötige dafür ein Zeigerregister für die Adresse des Buffers und 
zwei Offsetvariablen, um für Lese- und Schreibzugriffe die Adresse von 
der Basisadresse des Buffers zu berechnen. Sind die Lese- und 
Schreiboffsets gleich, ist kein neues Zeichen gekommen. In der ISR wird 
beim Eintreffen eines neuen Zeichens die Offsetvariable für 
Schreibzugriffe erhöht und auf die Größe des Buffers geprüft. Ist sie 
größer, setzt man sie auf 0 und fängt wieder bei der Basisadresse an. 
(Ringpuffer) Anschließend addiert man die Offsetvariable auf die 
Basisvariable und trägt das eingetroffenen Zeichen ein. Im zyklischen 
Programm (polling) vergleicht man Lese- und Schreiboffset. Ist ein 
Unterschied, erhöht man den LeseOffset, vergleicht ihn mit der 
Puffergröße und setzt ihn evtl. zurück. Anschließend addiert man auf die 
Basisadresse den Leseoffset und holt sich das eingetroffene Zeichen zur 
Bearbeitung. Ich hoffe, es war verständlich.
Gruß oldmax

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.