Arduino Leonardo: Erkennung Power-On Reset

Gast #6448665
Lesenswert?

Hallo,

gerade bastle ich an einem kleinen Projekt, in dem der Leonardo mit ein 
paar Tastern als Makro-Tastatur verwendet werden soll. Funktioniert auch 
schon einigermaßen.
Jetzt habe ich das Problem, dass nach dem Hochfahren des PCs der 
Leonardo gestartet wird und dann nicht vom PC als Tastatur erkannt wird. 
Dazu muss ich den Leonardo resetten.

Die Idee ist jetzt, das Power-On Reset (POR) in der Software zu 
erkennen, eine fixe Zeit, z.B. 2 Minuten abzuwarten bis der PC 
hochgefahren ist. Dann soll ein Reset per Software ausgelöst werden 
(z.B. über Watchdog Timeout) und der Leonardo wird dann vom PC erkannt.

Es gibt da auch ein Status-Register MCUSR (Datenblatt Seite 59: 
http://ww1.microchip.com/downloads/en/devicedoc/atmel-7766-8-bit-avr-atmega16u4-32u4_datasheet.pdf).

Allerdings funktioniert die Erkennung eines POR damit nicht. Der Grund 
dafür scheint zu sein, dass der Bootloader dieses Register löscht (Zeile 
119):
https://github.com/arduino/ArduinoCore-avr/blob/master/bootloaders/caterina/Caterina.c

Am Bootloader will ich nicht rum pfuschen. Deshalb die Frage: Gibt es 
noch eine andere Möglichkeit, einen POR zu erkennen als das Register 
auszulesen?

Vielen Dank und Grüße
Michael
Gast #6448739
Lesenswert?

Naja, die Leute, die den Bootloader geschrieben haben, dachten sich 
sicher was dabei. Und bevor ich mir da Probleme einhandle, fasse ich da 
lieber nichts an.
Darauf verzichten will ich aber nicht, sonst muss ich mir einen 
Programmer besorgen.

Habe aber diese Lösung gefunden:
Man schreibt eine Signatur ins RAM und schaut nach einem Reset, ob sie 
schon da ist. Beim POR ist sie nicht da, bei andern Resets schon.

https://forum.arduino.cc/index.php?topic=364549.0

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren