Ich mache ein Senior-Projekt und muss eine große Textdatei Zeile für Zeile an einen AVR (atmega32) senden, der ein Klavier mit ~ 36 Solenoiden und Schieberegistern steuert. Dies muss automatisch und sehr schnell erfolgen. Ich kann den Text nicht manuell im Terminal eingeben. Ich muss 3 Zeichenfolgen Zeile für Zeile an einen AVR senden und zwischen jeder Zeile auf eine Bestätigung warten, um vom AVR fortzufahren.
213, 25, EIN
321, 25, AUS
521, 36, EIN --> was das Spielen der Note C zur Zeit = 521 ms darstellt
Das Protokoll müsste wie folgt aussehen:
Wie ist dies zu erreichen?
Das Problem ist, dass ich nicht alle Textdateien in einem Array speichern kann, da der AVR zu klein ist (der größte atmega ist 512 KB, wenn ich mich recht erinnere). Ich muss die Textdatei mit dem Terminal (Hyperterminal) Zeile für Zeile streamen . ABER wie sendet man eine Zeile über das Terminal, wartet, bis der Atmega den Vorgang beendet hat -> sendet eine Bestätigung zurück an den PC, um die nächste Zeile zu streamen?
Was Sie brauchen, ist "Flow Control" oder "Handshaking".
Für USART können Sie Hardware-Flusskontrolle mit RTS/CTS verwenden , aber viele USART-Implementierungen lassen sie heute weg. Wenn Sie Ihre Hardware fertig haben und diese Pins nicht angeschlossen sind, können Sie " Software-Flusskontrolle " mit "XON/XOFF" versuchen, da diese beiden Codes nicht in Ihrer Textdatei erscheinen (es handelt sich um nicht druckbare Zeichen). Verwenden Sie sie also, da eine Flusskontrolle möglich ist. Aber im Vergleich zur Hardware-Flusskontrolle ist letztere möglicherweise etwas langsamer.
Die Hauptbeschränkung bei Ihnen ist, dass Ihre MCU nicht stark genug ist, um die gesamte Datei zu verarbeiten, daher ist es sinnvoll, die Datei auf dem PC-Ende zu analysieren.
Wenn Sie nicht in ein kompliziertes USART-Programm auf dem PC eintauchen möchten, können Sie Tera Term ausprobieren , einen Open-Source-, programmierbaren, praktischen „Hyperterminal“-Killer.
Ignacio Vazquez-Abrams
David Tweed
Napster
Napster
Napster
Ignacio Vazquez-Abrams
David Tweed
Chris Stratton
Ignacio Vazquez-Abrams
Napster
Ignacio Vazquez-Abrams
Napster
Ignacio Vazquez-Abrams
Napster
Ignacio Vazquez-Abrams
Napster
Ignacio Vazquez-Abrams
Napster
David Tweed