Forum: Mikrocontroller und Digitale Elektronik Empfangen mit dem Microcontroller


von Carl C. (keine_ahnung)


Angehängte Dateien:

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ß

von Sebastian (Gast)


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....

von oldmax (Gast)


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

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
Noch kein Account? Hier anmelden.