mikrocontroller.net

Forum: Compiler & IDEs mehrere Bytes über Uart empfangen + in EEPROM schreiben


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Halli hallo,

nachdem ich es geschafft habe meinen EEPROM beim Flashen zu füllen, so
möchte ich mich jetzt der neuen Aufgabe zuwenden ca. 200 Bytes von der
UART zu empfangen, diese wenn nötig zwischenzuspeichern und dann in den
EEPROM zu schreiben. Dabei sind jetzt folgende Probleme bzw. Fragen
aufgetreten. Ich denke mal für Jörg sind das kinderleichte Sachen ;-)

1.meine Uart geht. ich kann damit problemlos ein Zeichen Empfangen und
auch Senden. Wenn ich jetzt aber gleich eine Folge von Bytes senden
möchte, wie muss man da vorgehen? Ich habe Peters Bibliothek
ausprobiert, aber da passiert bei mir gar nichts.Bin mir nicht so
sicher was ich da falsch gemacht habe. In anderen Beiträgen habe ich
gelesen, dass man ein Protokoll braucht, um die Daten richtig zu
empfangen. Muss ich mir das selbst ausdenken? Was hat es mit den sachen
y-modem,x,modem,z-modem, kirmit etc. auf sich? Wo findet man diese und
was kann man damit anfangen?

2.habe in einem anderen Thread erfahren, dass man die Daten von der
Uart empfangen und auch gleichzeitig noch in den EEPROM schreiben
kann,wenn man unter 800 baud bleibt. Macht das Sinn oder sollte man in
jedem Falle einen Buffer verwenden?

3.In meinem Terminalprogramm kann man gleich Files versenden, wenn man
eben so wie ich mehrere Zeichen verschicken möchte. Gibt es da ein
bestimmtes Format an das ich mich halten muss, oder kann ich die
Zeichen einfach hintereinander schreiben und fertig?

Vielen Dank, ich hoffe Ihr könnt mir weiterhelfen...

Ciao Thomas

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wuerde Puffer und Protokoll empfehlen. schnell und zuverlaessig. ein
kleines programm auf dem PC sollte reichen. XYZ-Modem muss nicht.

prinzip:
- sende startzeichen "eeprom schreiben" (PC->AVR)
- sende startadresse im eeprom als byte/word (PC->AVR)
- sende anzahl der nutzdaten-bytes (<= puffergroesse) (PC->AVR)
- sende 1-n bytes nutzdaten fuer eeprom (PC->AVR), avr legt diese
erstmal in den buffer ab.
- AVR beginnt mit eeprom-schreibvorgang sobald letztes byte da. also
alle bytes n aus dem buffer in eeprom-schreiben, beginnend mit der
gegebenen startadresse.
- PC wartet auf bestaetigung durch AVR (definiertes zeichen AVR->PC)

solange wiederholen bis alle bytes uebertragen sind geschrieben

wird im prinzip auch so bei bootloader-programmen gemacht (AVR910 und
STK500 protokoll), da diese meist neben flash- auch eeprom-read/write
unterstuetzen. vielleicht kann fuer die aufgabe etwas code aus meinem
"avrprog-kompatiblen" bootloader "recycled" werden.
( http://www.siwawi.arubi.uni-kl.de/avr_projects/#avrprog_boot )

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Xmodem + CRC ist auch nicht so schwierig (gibt's garantiert
hinreichend Beispiele im Internet), hat halt den Vorteil, daß man eine
simple Fehlererkennung dabei hat.

Zusammen mit Xon/Xoff-Flußsteuerung kann man auch beliebig lange
Datenströme verwalten, ohne daß man den kompletten Puffer für alle
Bytes im RAM vorhalten muß.  (Flußsteuerung ist im Wiki erklärt.)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.