Moin Moin, ich habe momentan ein kleines Problem mit dem Arduino M0 Pro und der seriellen Verbindung. Es werden über den Arduino diverse Signale analog eingelesen und dann über die Serielle- Schnittstelle ausgegeben. (Programming Port) Problem ist wie folgt: Der Arduino ist an dem PC angeschlossen. Dann wird der PC hochgefahren und über z.B. das Programm HTerm oder eine eigene VB.net Software die Kommunikation mit dem Arduino hergestellt. Nun wird eine Anfrage an den Arduino gesendet, dass er die Daten ausgeben soll. Dies macht er aber nicht es kommt rein gar nichts zurück! Erst wenn ich manuell einmal den "Reset- Button" betätige klappt alles einwandfrei! Laut diversen Beiträgen aus Foren soll der Arduino beim setzen des "DTR" Sigals einen Reset durchführen. Ich habe aber das Gefühl das dies mein Aruino nicht macht! Wo liegt mein denkfehler? Kann ich den Arduino M0 Pro irgendwie dazu bewegen sauber zu starten bzw. ihn per serieller Schnittstelle einmal sauber resetten? Vielen Dank für eure Hilfe! :) Schönen Abend!
Du könntest auch den Watchdog verwenden: Es muss vom PC alle x Sekunden eine Anfrage kommen und richtig interpretiert werden. Dies setzt dann in deinem zu schreibenden Arduino Programm den Watchdog zurück. Wenn nichts kommt oder eine falsche Anfrage, dann läuft der Watchdog über und resettet den UC.
Ja natürlich das wäre nun auch mein nächster Ansatz aber ich kann es mir nicht erklären warum dieses Verahlten überhaupt auftritt. Es kann doch nicht sein das ich den Arduino mit Spannung versorge und dann nachdem er hochgefahren ist ihn nochmal reseten muss. Irgendwas muss ich doch da übersehen.
Patrick B. schrieb: > Es kann doch nicht sein das ich den Arduino mit Spannung versorge > und dann nachdem er hochgefahren ist ihn nochmal reseten muss Kenne den M0 Pro nicht aber bei anderen Arduino blockiert nach Strom an der Bootloader erst mal für ca. 6 sec und startet dann erst den User Code. Beim M0 Pro soll aber ein Debugger drauf sein d.h. man kann den Bootloader entfernen und darüber flashen. Dann wird der User Code natürlich sofort gestartet.
Da ist doch ein debugger mit oben, einfach schauen wo er im Code hängen bleibt. Möglicherweise hängt er im Bootlader. Reset an sich auslösen geht wohl nur im Zusammenhang mit einen Löschen des Flash. Nicht unbedingt. Wenn der Flash leer ist landet er im Bootloader, da der M0 keinen ROM hat liegt dieser unterhalb des Programmcodes. Jetzt müsste man in das Linker Script schauen aber ich glaube kaum das dieser überschrieben wird. Denn dann wäre das Board per Native USB Port nicht mehr programmierbar. Der Debugger löst einen Hardreset und Erase aus und beschreibt dann den Flash. Womöglich oberhalb des Bootladers ;) Offenbar hat das Debugger Interface zwei USB Treiber zur Verfügung. Den Serial Port und EDBG. An den RX/TX LEDs am Board kann man ja schauen ob überhaupt Daten zu dem SAMD gehen. Wenn ja liegt es wirklich am Programm bzw. Bootloader.
:
Bearbeitet durch User
Kann es sein das ein BrownOut Detection zuschlägt und somit ein Reset to Bootloader ausführt?
Oder er fängt sich beim Start des PC irgendwelche Zeichen ein die er nicht verträgt. Also im Bootloader oder im normalen Programm.
Nun ja der Bootloader schaut ob auf der Serial bzw. USB was kommt. Im Normalfall sollte der Bootloader nur starten wenn der Flash leer ist. Es gibt einen Pin der den Flash löscht und dann nach dem Reset wird der Bootloader gestartet. Da nach einen Reset es ja läuft ist er unwahrscheinlich das er im Bootloader verbleibt. Ursache ist wahrscheinlich das die Serielle Schnittstelle nocht nicht richtig initialisiert wurde USB oder im M0. Deswegen mal schauen ob sich an den RX/TX Leds was bewegt.
:
Bearbeitet durch User
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.