Gast
#3791087
Hallo Forum, folgendes Problem liegt vor: Ich habe einen Atmel Cortex-M3 Controller, genauer gesagt den Arduino-Due (SAM3X8E), welcher sich ganz gerne mal von alleine zyklisch resetet. Den Controller programmiere ich ueber Atmel Studio 6.2 und den SAM ICE Programmer von Atmel. Board und Programmer sind ueber JTAG verbunden. Der Reset ist voellig unabhaengig vom Programmcode und tritt sogar bei einem einfachen Programm wie:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
auf. Der Reset tritt aber nicht immer auf! Es kann sein das ich das Programm drei mal neu flashe und alles laeuft super. Beim vierten mal einspielen kommt es dann zu dem Reset. Um diesen zustand zu beseitigen muss ich ueber die Arduino-IDE (teilweise mehrmals) ein Programm auf den Controller bringen, und das dann wieder ueber AS ueberschreiben, und dann funktioniert es wieder ne weile, bis nach ein paar mal neu flashen das spiel von vorne losgeht. Reset bedeutet in allen Faellen, das der Reset_Haendler() angesprungen wird! Der Reset tritt (wenn er auftritt) immer Zyklisch auf, nach ziemlich exakt 17.8 sekunden. Das heisst: Programm startet und laeuft. Nach 17.8 Sekunden wird der Reset_Handler angesprungen. Programm beginnt von vorne. Nach 17.8 Sekunden wieder reset und immer so weiter. Der Reset wurde auf mehreren Wegen bestaetigt: 1. Wenn ich das Programm im Debug laufen lasse, springt Atmel Studio nach besagter Zeit in den Reset_Handler und haelt das Programmm an. 2. Das verhalten ist ebenfalls ueber eine LED visualisierbar. Erst hatte ich den Verdacht das der Controller auf dem Board vielleicht einen Schuss hat, also hab ich mir einen neuen Arduino-Due besorgt, aber Pustekuchen: selbes verhalten! Es spielt auch keine Rolle, ob ich das Board ueber MikroUSB oder ein 12V-Netzteil mit Spannung versorge. Bei Versorgung ueber MikroUSB ist es ebenfalls egal, ueber welche von den zwei USB-Buchsen auf dem Due ich das Board versorge. Was mir noch auffaellt: Egal was ich mache, ich kann das Due-Board immer ueber die Arduino-IDE flashen. Zum Vergleich: Nehme ich das Arduino Mega2560, verbinde das ueber einen Programmer mit Atmel Studio, und sage dann in AS "Erase Chip", dann ist der Controller danach nicht mehr ueber die Arduino-IDE ansprechbar, logisch, der Bootloader wurde ja auch geloescht. Beim Due kann ich machen was ich will, er ist immer ueber die Arduino-IDE flashbar, also auch noch nach einem "Erase Chip". Ich habe den Verdacht das der Bootloader, der irgendwo liegt, wo ich ihn nicht ohne weiteres loeschen kann, den Reset ausloesen koennte. Zusammenfassung: Der Reset tritt nicht nach jedem Flashvorgang auf. Wenn er auftritt, dann immer Zyklisch nach 17.8 Sekunden, und dann immer und immer wieder nach besagter Zeit. Der Reset ist unabhaengig vom Programmcode. Reset bedeutet anspringen des Reset_Handler() Habt ihr vielleicht eine Idee wie ich rausbekommmen koennte, was den Reset genau ausloest? Ich bin fuer jede Hilfestellung dankbar!