Hallo,
durch nicht erfolgreiches Aufspielen einer Anwendung (culfw) wurden im Installationsprozess wohl die lock-fuses SPM und LPM gesetzt. D.h. m.E., dass "SPM nicht erlaubt ist, in den Urloader-Bereich zu schreiben und LPM nicht erlaubt ist, aus dem Urloader-Bereich zu lesen, wenn LPM aus dem Anwenderbereich ausgeführt wird. Wenn die Interruptvektoren in den Anwenderbereich gelegt wurden, sind die Interrupts gesperrt, wenn sie aus dem Urloaderbereich ausgeführt werden".
Aber was bedeutet dies für den weiteren Gebrauch des Nano (ein Blink-Programm lässt sich erfolgreich flashen)?
Wenn ein über die Arduino-IDE entwickeltes Programm Interrupts verwendet, gibt es Probleme / Abweichungen gegenüber dem Urszustand zu erwarten?
Ist es zutreffend, dass die lock-bits nicht über die Arduino-Umgebung zurück gesetzt werden können? Ein flashen des bootloaders ist jedenfalls fehl geschlagen.
Führt ein Chip-Reset zur Zerstörung des Nano?
vielen Dank für Antworten
Grüße
Fehler beim Brennen des Bootloaders.
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x78
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x66
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x7e
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x1e
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x66
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x78
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x1e
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x06
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x98
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x9e
Nach hier nützt das Bootloaderbrennen ohnehin nichts, da hierdurch die lock-bits nicht gelöscht werden.
Das Blink-Programm nutzt m.W. keine Interrupts (z.B. INT0, PCINT0 oä.) mit den ISR-Routinen ISR(INT0_vect).
Ein Löschen soll über ein High-Voltage-Reset (12V) möglich sein. Dies ist unproblematisch, wenn der atmega328p quasi nackt vorliegt. Im Nano ist er jedoch mit anderen Komponenten verbaut. Und hier besteht schon die Frage, ob 12 V bei diesen Komponenten Schaden anrichten.
den bootloader habe ich versucht, mit direkt an den USP-Port angeschlossenen Nano zu brennen. Ich habe also nicht einen Arduino als ISP wie beim flashen anderer µC dazwischen geschaltet. Mein Fehler, wenn es das sein sollte.
das atmegas328p Datenblatt habe ich auch schon einige Zeit konsuiltiert. Um in die Tiefe einzusteigen, man sehe es mir nach, benötige ich als des Englischen mächtiger aber nciht nicht mit einem Universitätsgrad der Elektrowissenschaft versehen Menschen Hilfestellung.
Und nochmal, aber jetzt in abschließender Deutlichkeit:
Da "Blink" funktioniert, ist deine Diagnose "Interrupts tun es nicht" definitiv falsch.
Der Fehler "Wenn ein über die Arduino-IDE entwickeltes Programm Interrupts verwendet, gibt es Probleme" liegt also nicht an den Interrupts. Sondern ist ein Fehler in deiner Anwendung.
Tipp:
Höchst vermutlich, ist es für dich unmöglich das Problem zu beheben, solange du an der falschen Stelle rum dokterst.