Datum: 22.04.2008 16:16
Ich habe hier einen Denkfehler dem ich nicht auf die Spur komme und hoffe, das sich von Euch schon mal jemand damit beschäftigt hat. Die Funktion AT91F_PMC_GetMasterClock(pPMC,pCKGR,SLOWCLK) aus der Atmel Lib liefert mir bei einem externen 18,432MHz Quartz 54,712MHz zurück. MAINF steht auf 10275 und damit ist der Wert eigentlich auch richtig. Wie kann ich aber nun MCK oder MAINCK ermitteln? Eigentlich wollte ich über MAINF und SlowCLK die externe Frequenz errechnen und mir dann über (MUL+1)/DIV PLLCK ermitteln. Danach den PRES noch genommen und dann hat man MCK. Durch die Abweichung geht das aber alles nicht und wenn ich die Werte dann noch für die Baudrate einer seriellen Schnittstelle heranziehe sind die Abweichungen viel zu groß. Was übersehe ich hier??? Danke für eure Hilfe!
Datum: 24.04.2008 08:32
Mhh - nutzt das von euch niemand? Wie bekommt ihr denn exakte Zeitscheiben hin? Ich habe das nun mit fest definierten Werten gemacht, aber das ist doch sicher nicht die Lösung, oder?
Datum: 24.04.2008 13:29
Also, wenn du den standard 18,432 MHZ Qzarz verwendest + den dazu üblichen asm startup code, dann ist die MCK auf 48MHZ eingestellt (wegen USB). Andere Quarze brauchste übrigens auch andere Kondensatoren um den Quarz.
Datum: 24.04.2008 13:33
Ja der MCK ist auf 48MHz, aber wie kann ich das zur Laufzeit im Programm berechnen? Auser dem MAINF Register das die Anzahl der Masterclock Cycles während 16 Slowclock Cycles angibt hab ich doch nichts zum auslesen, oder?
Datum: 25.04.2008 08:47
Wieso willst du eine Konstante zur Laufzeit berechnen? Was spricht gegen ein Define? //-------------- // Master Clock //-------------- #define EXT_OC 18432000 // External ocilator MAINCK #define MCK 48054857 // MCK (PLLRC div by 2) #define MCKKHz (MCK/1000)
Datum: 25.04.2008 10:49
Einfach um den Code allgemeingültig zu halten. Der Slowclock ist ja konstant und der externe Oscillator kann ja auf jedem Board anders sein. Um nun bei unterschiedlichen Oscillatorfrequenzen die Zeitscheiben für meinen Code zu erzeugen benötige ich halt den MCK zur Laufzeit.
Datum: 25.04.2008 19:44
schau dir doch mal meinen MCK-scanner im SPI-port zum AT91SAM7xxx an. Das Einzigste was der braucht ist das define zur Quarz-Frequenz, den Rest ermittelt er aus den Registern - wenn es das war was du sucht... http://www.embedded-os.de/index.html?pcfat_port.htm
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel