-
-
Erfahrener Benutzer
Roboter Genie
> aber trotzdem scheitert alles an den zwei KB Speicher des Kontrollers.
Für ein Ereignisprotokoll braucht es so oder so externen Speicher. Da hilft das interne SRAM natürlich nicht viel.
@Robin:
Schau Dir mal die zahlreichen SD Karten Projekte für AVRs an. Dann sollte vielleicht klarer werden was hier gemeint ist.
Aber wie gesagt - recht kompliziert.
Einfacher geht es für das was Du vor hast (mit einem EEPROM als Speicher) so:
Man könnte z.B. das XMODEM Protokoll (-->google xmodem avr) nachbilden und dann die Protokolldaten mit HTerm oder Hyperterminal empfangen - womit man es dann direkt in eine txt Datei schreiben kann.
Oder besser selbst eine kleine PC Software schreiben die die Daten empfängt und eine Datei erzeugt. Dann reichen auch noch einfachere Protokolle wie das was ich weiter oben schon angedeutet habe: Der PC sendet nur ein "schick mir alle daten" an den Mikrocontroller, dieser schickt alle Daten an den PC und fertig 
D.h. die PC Software muss sich darum kümmern die Daten zu empfangen und in eine Datei (oder mehrere) zu schreiben oder irgendwas anderes damit zu machen.
Das geht genau so wie ich es oben beschrieben habe. Musst nur das senden leicht anpassen so das es zu Deinen Daten passt.
(Text, einzelne Bytes, Zahlenwerte, was auch immer...)
Dem EEPROM ist es übrigens (genau wie der seriellen Schnittstelle) völlig egal wie die Daten darin abgespeichert werden.
Du kannst z.B. im einfachsten Fall in den ersten zwei Bytes abspeichern wie lang das Protokoll ist und danach einfach bei jedem Ereignis eine neue Meldung abspeichern und den Zähler für die Protokolllänge inkrementieren (=auslesen, hochzählen und wieder abspeichern).
Um Speicherplatz zu sparen würde ich nicht die Ereignisse in Form von Text abspeichern, sondern z.B. jeder Eintrag 3 Bytes lang:
<Ereignistyp> <Daten> <Daten>
Wenn also z.B. ein Ereignis "Kollision, Bumper Links gedrückt!" eintritt dann würden man abspeichern:
401
4 = Bumper
0 = rechts ist nicht gedrückt
1 = links gedrückt
Entspechend noch andere Codes für andere Ereignisse definieren.
Nur ein Beispiel - kann man natürlich noch viel eleganter lösen als das.
Die Daten können dann entweder direkt vom AVR dekodiert werden
ala if(daten[0]==4) writeString("Kollision, Bumper ") usw. oder von der PC Software.
Hab jetzt keine Zeit das noch weiter auszuführen ich denke die grundsätzliche Idee sollte klar sein.
MfG,
SlyD
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen