Kann ich in einem Programm die aktuelle SYSCLK (z.B. 168MHz) als Wert auslesen oder gibt es eine andere Möglichkeit, sie zu verifizieren, ohne jetzt das Scope oder den Frequenzmesser zu holen?
Da die MCU nicht wissen kann, welcher Quarz angeschlossen ist: Leider nein. Wenn's nur um Plausibilität geht, ist das Symbol SYSTEMCORECLOCK das, was Du suchst. Davon werden die Teiler abgeleitet.
Du kannst versuchen mit der HAL_GetTick Funktion die Zeit zu messen, z.B. von einer Berechnung. So kannst du die Frequenz etwa ermitteln.
Walter T. schrieb: > Da die MCU nicht wissen kann, welcher Quarz angeschlossen ist: Leider > nein. Wenn's nur um Plausibilität geht, ist das Symbol SYSTEMCORECLOCK > das, was Du suchst. Davon werden die Teiler abgeleitet. OK. Dazu brauche ich aber einen C-Layer. Mein Programm ist in Assembler geschrieben. Gut, ich weiß letztlich, was programmiert wurde und könnte das jetzt auch Schritt für Schritt nachgucken. Andererseits könnte ich eine Baudrate unter den Annahmen programmieren und schauen, ob das richtige Zeichen ankommt. Nur ist es ja gerade Letzteres, was nicht funktioniert (USART3) :) Gut, war nur so ein Gedanke.
Gast
#7076147
Wenn ich dich richtig verstehe, könntest du die interne RTC über den LSI clocken und das Frequenzverhältnis aus einem TIM und der RTC berechnen? Habe das aber noch nicht ausprobiert. Walter T. schrieb: > Da die MCU nicht wissen kann, welcher Quarz angeschlossen ist: Warum sollte sie das nicht können? Die meisten Mikrocontroller haben ja interne Taktquellen, die man als Referenz benutzen könnte.
Gast
#7076160
Walter T. schrieb: > ist das Symbol SYSTEMCORECLOCK Es wäre die Variable "SystemCoreClock", die er aber in seinem Ass-Programm nicht verwendet hat. Sein eigenes Programm kennt er wohl auch nicht. Bei einem unbekannten Programm kann man per SWD die PLL-Register auslesen und abhängig von dem HSI/HSE-Takt die Taktfrequenz ausrechnen.
Gast
#7076245
Christoph K. schrieb: > Kann ich in einem Programm die aktuelle SYSCLK (z.B. 168MHz) als Wert > auslesen oder gibt es eine andere Möglichkeit, sie zu verifizieren, ohne > jetzt das Scope oder den Frequenzmesser zu holen? Prinzipiell: Nein. Zum Messen, Verifizieren und so braucht man 2 Instanzen: Den Prüfling und eine Referenz. Was du hingegen vorhast, ist etwa so, wie weiland der Baron Münchhausen, der sich am eigenen Zopf aus dem Sumpf zog. Bei einigen µC gibt es für irgend ein Pin die Funktion, wo man den Takt (CPU-Takt oder AHB-Takt je nach Plattform) draufleiten kann, heruntergeteilt oder ggf. nicht. Dort kann man dann mit dem Frequenzmesser messen. Mußt du einfach mal im Manual nachschauen. W.S.
Gast
#7076270
W.S. schrieb: > Prinzipiell: Nein. > Zum Messen, Verifizieren und so braucht man 2 Instanzen: Den Prüfling > und eine Referenz. Was du hingegen vorhast, ist etwa so, wie weiland der > Baron Münchhausen, der sich am eigenen Zopf aus dem Sumpf zog. Klingt zwar cool, aber eigentlich hat ein Microkontroller üblicherweise beides. Ist nur die Frage, ob man es entsprechend intern verschalten kann. Bei den ATSAM geht es afaik besser als bei den STM32F.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.