Forum: Mikrocontroller und Digitale Elektronik Quarz und PLL settings am AT91sam7S256 (Olimex sam7-p256)


von icke (Gast)


Lesenswert?

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

von Andy (Gast)


Lesenswert?

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

von icke (Gast)


Lesenswert?

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