Prozessor läuft im Debug-Modus schneller als im Normalem Modus

OP Persönliche Seite #4214973
Lesenswert?
• ▲
▼
Hallo,

ich habe ein etwas komisches Problem.
derzeit arbeite ich auf einem Cortex-m4 Prozessor(Atmel SAM4SD32C). 
Dieser kann über eine PLL mit bis zu 120Mhz getacked werden.
Der Fehler ist mir über die USART Schnittstelle aufgefallen.

Wenn der Prozessor im Debugmodus läuft(Atmelstudio F5) läuft der 
Prozessor Takt so wie er soll. bzw. die Baudrate der gesendeten Pakete 
entspricht der erwarteten Baudrate.
Bricht man nun aber den Debugvorgang ab, sodass der Controller geresetet 
wird und der Prozessor unabhängig vom PC startet stellt sich die 
Baudrate so ein, dass sie einer 12Mhz clock entsprechen würde.

Die Baudrate überprüfe ich mit einem Logic Analyser mit Auto-Baudraten 
Erkennung.

Hat einer vielleicht eine Idee wie es zu diesem verhalten kommt?

Danke
Grüße
OP Persönliche Seite #4215013
Lesenswert?
• ▲
▼
das würde zumindest die 12Mhz erklären.
während der Initialisierung warte ich solange, bis das PLL-lockbit 
gesetzt ist, bevor ich die Master-Clock auf die PLL umbiege.


PMC->PMC_MCKR = PMC_MCKR_CSS_SLOW_CLK; // select 32k hz als Takt quelle
// enable 12mhz oszilator
PMC->CKGR_MOR =  CKGR_MOR_KEY_PASSWD  | CKGR_MOR_MOSCXTEN 
|CKGR_MOR_MOSCSEL ;
// enable PLLA teiler(1-255)  muliplizierer 7(-62) + 1
//Takt = 12mhz / 6 * "x"
 PMC->CKGR_PLLAR = CKGR_PLLAR_DIVA(6)| CKGR_PLLAR_MULA("X")
                  |CKGR_PLLAR_PLLACOUNT(62) | CKGR_PLLAR_ONE ;

//warte auf lockbit
   while ((PMC->PMC_SR&(PMC_SR_LOCKA))) {}

 //  Aktivire PLLA als Master Clock
 PMC->PMC_MCKR = PMC_MCKR_CSS_PLLA_CLK  ;
#4216368
Lesenswert?
• ▲
▼
Ich kenne diesen ARM bisher nicht, aber normalerweise muss man bei einem 
Quarzozillator warten bis er hochgefahren ist, bevor man ihm verwendet. 
Das kann ich hier nicht erkennen.

Das läuft also normalerweise so:
- Oszillator einschalten
- Warten bis er hochgefahren ist
- Oszillator verwenden

Mit PLL schliesst sich dann dessen Sequenz an.
OP Persönliche Seite #4216377
Lesenswert?
• ▲
▼
A. K. schrieb:
> Ich kenne diesen ARM bisher nicht, aber normalerweise muss man bei einem
> Quarzozillator warten bis er hochgefahren ist, bevor man ihm verwendet.
> Das kann ich hier nicht erkennen.
>
> Das läuft also normalerweise so:
> - Oszillator einschalten
> - Warten bis er hochgefahren ist
> - Oszillator verwenden
>
> Mit PLL schliesst sich dann dessen Sequenz an.

Mit de Erklärung klingt es logisch :)
Danke

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.