Problem ATmega88, Timer 2 mit 32kHz Quarz

Hallo,

ich habe da ein Problem und komme nicht weiter.

Ein ATmega88PA läuft mit dem internen RC Oszillator mit 8 MHz.

An xtal1 und xtal2 hängt ein 32 kHz Uhrenquarz.

Timer 2 wird mit dem Uhrenquarz getaktet.

Der Prozessor wird jeweils so in den Sleep geschickt, dass er von Timer2 aufgeweckt werden kann.

Das ganze läuft meistens. Zuerst dachten wir, es läge am Reset, aber man kann sehen, dass der Prozessor läuft. Lediglich der Timer2 INT kommt nicht.

Wenn ich manuell an Pin1 einen Reset mache, startet das ganze manchmal aber nicht immer.

Initialisierung von Timer 2 sieht so aus:

// Program Timer2 in async (32KHz crystal) SetBit(ASSR,AS2); TCCR2A = 0; TCCR2B = (1

Reply to
Stefan
Loading thread data ...
[...]

Ergänzung:

Hast du eigentlich überprüft, ob der Quarzoszillator überhaupt schwingt, wenn das Device nicht aufwachen mag?

Reply to
Heiko Nocon

Sieht so aus, er schrieb ja "Zuerst dachten wir, es läge am Reset, aber man kann sehen, dass der Prozessor läuft. Lediglich der Timer2 INT kommt nicht". Muesste man an sich sehen koennen wenn man sowohl den internen Oscillator (oder einen daran haengenden Timer) als auch INT2 testweise auf je einen Pin rausgibt.

Hmm, ich muss im Herbst auch einen ATMega in ein Design setzen weil Kundenwunsch. Bei Stefans Kommentaren wie "startet das ganze manchmal aber nicht immer" wird mir so langsam mulmig :-)

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Das hast du offensichtlich falsch verstanden. Es geht überhaupt nicht darum, ob der Prozessor läuft. In den tiefen Schlafmodi läuft der mit Sicherheit nicht, denn genau das ist der Sinn dieser Tiefschlafphasen. MCU-Takt=0.

Es geht vielmehr darum, ob der Oszillator läuft, der den Timer2 antreibt. Der läuft komplett unabhängig von der MCU und deren Taktquelle.

Tut er das nicht, wird der Timer nicht zählen, niemals sein Overflow oder eine der OCR-Grenzen erreichen und somit niemals die MCU aus ihrem Tiefschlaf wecken können.

Man sollte wenigstens ein grundlegendes Verständnis der Funktionsweise haben, bevor man so ein Teil benutzt. Und ich kann aus eigener, recht umfassender Erfahrung bestätigen, daß die AVRs im Allgemeinen durchaus tun, was sie sollen.

Aber natürlich gibt es, wie bei jedem komplexen Gebilde, gelegentlich Probleme bei eher ungewöhnlichen "use cases". Einen solchen Fall hast du ja durch unsere kürzliche PM-Kommunikation mitbekommen. Das ist aber die absolute Ausnahme, nicht die Regel.

Der Anwendungsfall des OP ist hingegen ein ziemlich konventioneller, bei mir allein z.B. in mindestens drei Projekten realisiert. Erfolgreich und ohne jegliche Probleme realisiert.

OK, das schließt natürlich nicht aus, daß irgendeine Besonderheit in der Anwendung des OP für Probleme sorgen kann. Aber in dem, was er geschrieben hat, konnte ich diesbezüglich nichts entdecken.

Reply to
Heiko Nocon

Vielleicht habe ich das missverstanden, ich war davon ausgegangen dass Stefan das Oszillieren ueberprueft hat. Geht ja recht einfach, notfalls mit einem MW-Taschenradio eine der Oberwellen als Schwebung gegen einen schwachen Sender abhorchen.

Wenn er tatsaechlich nicht schwingt oder Aussetzer hat dann vielleicht die gesetzten Buerdekapazitaetswerte ueberpruefen. Auch mal per DSO die Versorgung beobachten. Ein Kunde hatte diese Woche Start-Aussetzer mit einem MSP430 und das lag an kurzen VCC-Einbruechen beim Wake-up.

Sehe ich auch so, war eher scherzhaft gemeint. Man sollte die uC-Familie reinsetzen fuer die der Kunde entweder schon Leute hat die das alles programmieren koennen oder lokal welche finden kann. Einer der Gruende fuer meine diversen 8051 Einsaetze. Allerdings kommt stets ein eigener POR/BOR rein, ist seit gut 25 Jahren so und wird wohl auch die naechsten

25 Jahre so bleiben. Es sei denn sie legen die IC Design Schaltung dazu offen :-) [...]
--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Das Problem ist nur das auch ein 10:1 Tastkopf einen 32khz Oszilator stark beeinflussen kann.

Vor allem auch mal ueberpruefen was der Quarz denn haben will. Es gibt den 32ern ja zwei sich staerker unterscheidende Typen.

Olaf

Reply to
Olaf Kaluza

Bei mir funktioniert dieser Code:

ASSR|=_BV(AS2); while(ASSR&7); TCCR2=5; TCNT2=0; TIMSK|=_BV(TOIE2); sei();

--
MFG Gernot
Reply to
Gernot Fink

ASSR|=_BV(AS2); while(ASSR&7); TCCR2=5; TCNT2=0; TIMSK|=_BV(TOIE2); sei();

sorry, cut and paste hate zwei Zeilen verbunden.

--
MFG Gernot
Reply to
Gernot Fink

Ich auch, nur andere :-)

Doch, geht, mache ich oft. Sind viel mehr als ein paar nW und das Substrat "geht mit", von da dann raus auf Draehte die zu Knoeppen oder Displays fuehren. Bei der Buerouhr hoert man im unteren MW-Bereich ab

5cm Enfernung vom Plastikgehaeuse das Fiepen. Viel Energie hat die nicht da sie ewig mit AA Zellen laeuft.

Oh-oh, grosses Fehler, grosses Fehler :-)

Kein Scherz, so ein MW Radio ist erstaunlich nuetzlich wenn man mitkriegen will ob irgendwas "durchgeht". Schaltregler, uC, DSP, was immer. Fast alles hat seinen "normalen Kakophonie-Footprint" auf Mittelwelle. Da hoert man wenn sich was gross aendert und vor allem wenn was anfaengt den Schluckauf zu kriegen.

In der Hoffung dass der Tastkopf die nicht abgewuergt hat ... :-)

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

"Joerg" schrieb im Newsbeitrag news: snipped-for-privacy@mid.individual.net...

Hi, ack. Und wers garnichtmehranders will, schießt sich soeinen "EMV-Spürer" in der Bucht. Radio ohne io... hab mir in der Sturm-&Drangzeit damals, als EMV "erfunden" wurde, auch mal soein Schlangenölgerät geschossen. Piepste gar nett vor Monitoren...konnte mit dem "Elektrosmog-Alarm" den Einkauf greulich erschrecken. Ein Gerät der Friedrich Mueller Forschung. ;-) piept und blinkt ab 2 milliGauss...nein sowas, den kriegt man immer noch 170712256101 die Dummen wachsen nach...offenbar ne verbesserte Version, das Batteriefach von meinem geht sauschwer auf.

--
 mfg,
gUnther
Reply to
gUnther nanonüm

Oh ja, solche Dinger kommen wohl gleich hinter Atomstromseparatoren :-)

Ich benutze etliche Wuenschelrutenverfahren und hatte mal gedacht was wohl passieren wuerde wenn ich mitten in Berkeley mit weissem Kittel, Gasmaske, einem Piepsdings und Antenne hier und da an Bueschen schnueffle. Da wo viele jetzt schon Strahlungsparanoia haben. Dann ab und zu die Stirn runzeln und "Oh-oh!" sagen. Hab's aber lieber gelassen ...

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Am 10.08.2012 22:12, schrieb Gernot Fink:

Schon klar,

Den größten Unterschied sehe ich jetzt bei "while(ARRR&7);"

Ansonsten scheint mir das identisch zu sein.

Ich hab das inzwischen etwas modifiziert.

--alt----------------------------------------- Bisher hatte ich zwei INT-Quellen mit denen ich den Wake-up machen konnte: Timer2 und ein PCINT

PCINT wurde aber erst enabled, wenn Timer2 angesprungen war Wenn dann PCINT auftritt, wird der wieder deaktiviert, und soll dann durch den Timer2 wieder freigegeben werden.

Hintergrund ist, ich wollte aus Stromspargründen nicht jeden PCINT verarbeiten.

------neu----------------------

PCINT wird sofort freigegeben und nicht mehr disabled.

jetzt hab ich folgendes Phänomen: Der Prozessor läuft los, Timer2 läuft aber nicht über. Wenn PCINT ausgelöst wurde, läuft plötzlich auch Timer2.

Keine Ahnung, ob da vieleicht durch den Wake-Up der Quarzoszillator gestartet wird.

Ich hab heute noch nichts weiter gemacht. Gestern Abend hatte ich erstmal die Schnauze voll.

Gruß

Stefan

Reply to
Stefan

Im allgemeinen funktioniert das mit den ATmegas sehr zuverlässig. Ich würde sogar sagen, weit besser als früher mit den 8031 Derivaten.

Gruß

Stefan

Reply to
Stefan

Stefan schrieb:

Ich hatte mal bei einem MSP430 das Problem, dass der

32-kHz-Quarzoszillator nicht zuverlässig starten wollte. Es gibt von TI eine Application Note (SLAA322, [1]) dazu, die auch Hinweise enthält, wie man das Layout sinnvollerweise macht. In meinem Fall war es der Hinweis "Connect the crystal housing to ground", der die Lösung gebracht hat.

Christian [1]

--
Christian Zietz  -  CHZ-Soft  -  czietz (at) gmx.net
WWW: http://www.chzsoft.de/
PGP/GnuPG-Key-ID: 0x6DA025CA
Reply to
Christian Zietz

Am 11.08.2012 10:37, schrieb Christian Zietz:

Ok, klingt interessant. Ich werd mal die APP Notes von Atmel durchsehen, was die da schreiben.

Das Kuriose ist, ich hab in einer anderen Anwendung das gleiche schon einige hundert Mal aufgebaut. Da ist das Problem aber nicht aufgetreten, weil da den PCINT nicht über den Timer2 aktiviert habe. Außerdem ist der Timer2-Int da nicht unbedingt nötig. Scheint so zu sein, dass der Timer dann irgendwann kommt.

Reply to
Stefan
[...]

Heisst das der Quarzoszillator lief doch nicht, oder manchmal nicht? Sind die Buerdekapazitaeten ok? Quarz ok?

Verstaendlich :-)

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Ja, die AVRs sind normalerweise ziemlich brav. Machen auch EMV-technisch wenig Probleme. Joerg soll sich da mal keine Sorgen machen solange potentielle Errata nichts anderes erwarten lassen. Die muss man bei Atmel nichtmal separat runterladen, die stehen im normalen Datenblatt mit drin.

Micha

--

Das Lesen von *Sektoren* gehoert nicht zum "ueblichen" Gebrauch einer
Festplatte. Die *Dateien*, um die es sich hier handelt, [...]
                                        Hans-Peter Diettrich in dchlf
Reply to
Michael Baeuerle

Ich mache mir auch keine Sorgen drum, Atmel war zu mir bisher auch (meist) gut. Bis auf einen 89C51 der nicht ganz bis zur beworbenen Takfrequenz kam. Kurz vor der Hoechstgeschwindigkeit ging die gelbe Lampe mit dem Schraubenschluesselsymbol an und es gab Zuendaussetzer :-)

Der Kunde sagte mir dass die ATMega vom Code her recht effizient seien. Doch das wichtigste ist dass die sich bereits damit auskennen, also keine Lernkurve.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.