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
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 )
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.)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.