mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Arduino M0 Pro Reset Serial


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Patrick B. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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!

von Frank (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Patrick B. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Lothar (Gast)


Bewertung
0 lesenswert
nicht lesenswert
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.

von Marco H. (damarco)


Bewertung
0 lesenswert
nicht lesenswert
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
von Draco (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Kann es sein das ein BrownOut Detection zuschlägt und somit ein Reset to 
Bootloader ausführt?

von Frank (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Oder er fängt sich beim Start des PC irgendwelche Zeichen ein die er 
nicht verträgt. Also im Bootloader oder im normalen Programm.

von Marco H. (damarco)


Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.