Forum: Mikrocontroller und Digitale Elektronik Controller resetet sich (Coortex-M3)


von Kaj (Gast)


Lesenswert?

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
#include "sam.h"  // kommt von Atmel
2
#include <stdint.h>
3
4
int main(void)
5
{
6
  SystemInit(); // kommmt ebenfalls von Atmel, freq. usw. wird eingestellt
7
8
  uint64 i = 0;
9
  while(1)
10
  {
11
    i++;
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!

von Kaj (Gast)


Lesenswert?

/push

von Pit S. (pitschu)


Lesenswert?

Das hört sich nach einem Wtchdog an. Was passiert denn in der 
SystemInit() ?

von Ecki (Gast)


Lesenswert?

Du musst den Watchdog ausschalten, die Arduino-Libraries machen das 
automatisch, aber wenn du den SAM3X8E zu Fuss programmierst, ist er nach 
dem Reset noch aktiviert. Mehr dazu in Kapitel 17.4 vom reference 
manual.

von Kaj (Gast)


Lesenswert?

Peter Schulten schrieb:
> Was passiert denn in der SystemInit() ?
Da wird der System-Takt und PLL eingestellt.


Peter Schulten schrieb:
> Das hört sich nach einem Wtchdog an.

Ecki schrieb:
> Du musst den Watchdog ausschalten,

Is ja der knaller, das wars :)
Ich danke euch!

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
Noch kein Account? Hier anmelden.