PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega128L - 32.768kHz Quarz schwingt nicht



TRM2000
22.09.2006, 22:55
Hallo,..

.., ich will mit einem Atmega128L eine RTC aufbauen.

Hab' hierzu diese specs gelesen:
ATmega128(L) (391 pages, revision N, updated 03/06): http://www.atmel.com/dyn/resources/prod_documents/doc2467.pdf
AVR042: AVR Hardware Design Considerations: http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf
AVR134: Real-Time Clock using the Asynchronous Timer:http://www.atmel.com/dyn/resources/prod_documents/doc1259.pdf

An den TOSC pins der MCU sollte es eigentlich funktionieren einen 32.768kHz Quarz ohne weitere Beschaltung zu betreiben.


"A crystal can then be connected between the TOSC1 and TOSC2 pins to serve as an independent clock source for Timer/Counter0. The Oscillator is optimized for use with a 32.768 kHz crystal. Applying an external clock source to TOSC1 is not recommended."


"As shown in Figure 2-1, the crystal should be connected directly between pins TOSC1 and TOSC2"

Die "RTC Application Note" für den 103 - Hab' ich für den Atmega 128
abgeändert. Compilieren und Flashen klappt (seriell). Alles geht - bis auf den Quarz.


void MCU_INIT(void)
{

int temp0, temp1; // Give the 32.768kHz Quarz time to stabilize,..
for (temp0=0;temp0<0x0020;temp0++)
{
for(temp1=0;temp1<0xffff;temp1++);
}

TIMSK &= ~((1<<TOIE0)|(1<<OCIE0));
ASSR |= (1<<AS0);
TCNT0 = 0x00;
TCCR0 = 0x05;
while(ASSR&0x07);
TIMSK |= (1<<TOIE0);
}

[...]

void SIG_OVERFLOW0 (void)
{
/////// TU IRGENDWAS
sei();
}


[...]

int main(void)
{
MCU_INIT();
sei();

while(1)
{
TCCR0=0x05;
while(ASSR&0x07);
}

return 0;
}


Folgendes Problem:

Wenn ich die Einschwingzeit zu niedrig einstelle,.. geht garnichts obwohl der Quarz schwingt. - Ab einer gewissen Zeit scheint er stabil zu laufen bzw. die Auswertepins (TOSC). Nach etwa 10 Sekunden ist aber wieder Schluss ( wenn "er" gut "drauf ist" manchmal auch 1 Minute - danach wieder tod,.. bis zum Neustart ). ( Egal wie hoch ich die Einschwingzeit stelle - selbes Ergebnis )

Kann mal jemand drüber gucken ob der Code irgendeinen Fehler hat ?

Eine denkbare Möglichkeit wäre noch :

AVcc hab' ich mit einem 100nF "Bunker"kondensator versehen - Nicht aber Vcc an Pin21/Pin52. Die TOSC Pins liegen am selben Port wie Vcc-Pin21. Sind aber aufgrund der selbstgebastelten Platine jetzt schwer "zu erreichen".

Hat das jemand von euch eventl. schon mal gehabt ? - Gibts sonst noch weitere Gründe warum das sich so verhalten könnte ?

Kann es sein das hierdurch der Port ( auf dem auch einige Led's betrieben werden ) zu stark schwankt und der Port irgendwie "stehenbleibt" ? ( Vcc ist übrigens 3.0-3.3 V )


For devices with multiple pairs of power and ground pins, it is essential that every pair of pins get its own decoupling capacitor.

Hab' ich mir selbst hier die Antwort schon gegeben ?;)
[Hab' leider keinen 100nF da ,.. sonst würd' ich's einfach ausprobieren ]

( Vielleicht hatte oder bekommt noch jemand das gleiche Problem ;) )

Gruss,
TRM