Hallo, ich habe versucht den gesockelten 18.432MHz Quarz auf dem Olimex SAM7-P256 gegen einen 16MHz Quarz auszutauschen. Hierzu habe ich nach dem Studium der AppNotes und Datenblaetter folgende Aenderungen an der PLLR Config im startup source vorgenommen (aus dem Rowley Crossworks AT91SAM7_Startup.s): [...] #elif OSCILLATOR_CLOCK_FREQUENCY==16000000 #define CKGR_PLLR_VAL (0 << CKGR_PLLR_USBDIV_BIT) | (5 << CKGR_PLLR_MUL_BIT) \ | (0 << CKGR_PLLR_OUT_BIT) | (63 << CKGR_PLLR_PLLCOUNT_BIT) | (1 << CKGR_PLLR_DIV_BIT) [...] Flash Wait States habe ich belassen wie vorher, ebenfalls die settings von 72 fuer die FMCN, das sah annaehernd identisch aus für die 1.5 usec. Der Multiplier hat einen Wert von 6 - da steht 5, weil das hier wohl als MUL+1 definiert wurde, ein Vergleich mit dem startup sample fuer den 18.432MHz Quarz bestaetigt diese Rechnung jedenfalls. Ich weiss nicht recht, wie ich den Wert in CKGR_MOR anpassen muesste, ich hab das einfach mal auf 0x40 gelassen. Kann mich jemand aufklaeren? Das betrifft auch den CKGR_PLLR_PLLCOUNT Wert. Stehen die beiden in irgenteiner Relation zueinander? Ist PLLCOUNT der Wert, der aus der Startup Time des Atmel PLL Filter Calulator Tools abgeleitet wird? Anyway, nun zu meinem Problem: Mit o.g. settings und einer Freq.+Quarz von 16MHz, bleibt der Controller in einer Wait-Schleife im startup-code haengen. Und zwar hier: /* Set the master clock prescaler */ ldr r0, =(1 << PMC_MCKR_PRES_BIT) str r0, [r1, #PMC_MCKR_OFFSET] 1:/* Wait for MCKRDY */ ldr r0, [r1, #PMC_SR_OFFSET] tst r0, #PMC_SR_MCKRDY beq 1b So... Wenn ich nun mit meinem Finger auf den Quarz druecke gehts auf einmal, auch, wenn ich wieder loslasse. Ich vermutete erst, dass der Kontakt nicht OK sei, allerdings klappt das nur sehr selten bis garnicht, wenn ich mit einem Stück Kunststoff draufdruecke. Das ist somit wohl eher ein elektrisches Problem, oder? Jetzt frag ich mich natuerlich, warum Olimex das Teil sockelt, wenn man das PLLRC und die Kondensatoren am Quarz eh nicht auswechseln kann... Oder gibt es da eine gewisse Toleranz? Das Atmel Calculator Tool fuer das PLLRC bestaetigt die Werte fuer den Olimex Schaltplan (R1=1k5, C1=10n, C2=1n) und berechnet fuer einen 16MHz Quarz sehr abweichende Werte von etwa R1=250, C1=40n, C2=4n) bei einer PLL Frequency Bandwidth von 30kHz und einer Startup Time von 1.9ms. Kann man da was machen, oder muss ich das Olimex Board einfach zwangslaeufig mit den 18.432MHz betreiben? Sind meine Berechnungen ansonsten (grundsaetzlich) korrekt, d.h. kann ich die Ergebnisse ruhigen Gewissens heranziehen, wenn ich ein eigenes Board mit abweichendem Quarz baue? Vielen Dank schonmal fuer ernstgemeinte Hinweise, sollte ich was uebersehen haben, wuerd ich mich ueber einen Kommentar freuen... Gruss & Dank! thorsten
icke schrieb: > So... Wenn ich nun mit meinem Finger auf den Quarz druecke gehts auf > einmal, auch, wenn ich wieder loslasse. Hallo Icke, ich kenne zwar das Board nicht, aber hast Du einen Widerstand zwischen den Quarz-Anschlüssen? Wenn nicht, dann versuche mal 1M. Hatte mal ein ähnliches Problem mit einem MAC71. Da schwingt vielleicht einfach der Oszillator nicht richtig an. Andy
Hi, Andy schrieb: > ich kenne zwar das Board nicht, aber hast Du einen Widerstand zwischen > den Quarz-Anschlüssen? Wenn nicht, dann versuche mal 1M. Das Board (ein Entwicklungsboard von Olimex - http://www.olimex.com/dev/pdf/ARM/ATMEL/SAM7-P256-SCH-REV-E.pdf) hat das laut Schaltbild nicht drauf. Ich hab eben einen Widerstand von 1M zwischen die Beine eines 16MHz Quarzes gelötet und es damit mal getestet, leider ohne Erfolg. Gruesse, thorsten
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.