Ich habe eine Text Datei mit Uhrzeiten. Diese sollen in den internen EEPROM gespeichert werden.
Nun habe ich es über die Seriellen Schnittstelle versucht und folgendes gebastelt:
Vieleicht weil das Terminalprogram wenn Du Eter drückst ein CR und NL mitschickt.
Außerdem hat der UNO nur 1kByte EEPROM. Du solltest auch kontrollieren ob Du am ende angekommen bist sonst fängt das ganze wieder am Anfang an.
Grüße Uwe
a) Das Schreiben des EEPROMs ist sehr langsam: Das Beschreiben aller 1024 EEPROM-Adressen eines Arduino UNO dauert mehr als 3 Sekunden.
b) Der Empangs-Puffer der Seriellen Schnittstelle ist (nur) 64 Zeichen groß.
Beides kombiniert führt zu den Problemen, die du hast.
Die ersten Zeichen werden richtig ins EEPROM geschrieben, dann läuft der Puffer über und es kommt zu verstümmelten Zeichenfolgen.
Abhilfe:
Wie beim Füttern eines Kleinkindes (schön langsam: Löffelchen für Löffelchen), darst du die Serielle Schnittstelle nur mit kleinen Portionen füllen, also nicht die gesamte Datei "in einem Rutsch" senden.
Stelle das Zeilenende des Seriellen Monitors auf "kein Zeilenende" und sende immer nur z.B. 60 Zeichen auf einmal, danach erst die nächste Portion.
So bleibt genug Zeit für den EEPROM-Schreibprozess, ohne dass der Serielle Puffer überläuft.
Hallo vielen Dank für die Antworten. Ich hätte gedacht, dass die Serielle Schnittstelle die Zeichen alle auf einmal versucht zu schicken und somit eine Art Page write durchgeführt wird.
Ist es möglich:
ein Page write auf den Internen EEPROM durchzuführen?
Eine Art Begrenzung für den Seriellen Eingang einzubauen, sodass nur portionsweise abgearbeitet wird wenn mehr als 64 Zeichen vorhanden sind?
noiasca:
grad nachgesehen, im "CoolTerm" gibts eine Option unter Transmit: "use transmit line delay", das kannst in ms Schritten setzen.
oder auch ein Option um die paketgröße festzulegen und ein delay zwischen den Paketen zu machen.
CoolTerm ist ja wirklich sehr cool!
Ich wollte gerade vorschlagen, so etwas z.B. in Python zu realisieren. Das ist ja nun nicht mehr nötig.