Hi, bin so ziemlich neu hier und kenne mich nicht alzugut aus, daher
vorab entschuldigung wenn das hier im Falschen Forum ist. Mit der
Suchfunktion konnte ich ebenso nichts dazu finden :(
Meine Frage ist, gibt es eine Möglichkeit um den Quarz zu Prüfen ob er
noch richtig "Zählt"?
Und zwar arbeite ich mit Basic Bascom und die Idee ist, bei dem ATmega32
(de besitzt ja 2 Quarze. Einmal den 11MHz und einen der 32k Hz ist.
Zurück zu der Idee, ich zähle einmal wieviele Takte der 32k Hz macht und
Parallel dazu wieviele der 11MHz macht und vergleiche diese dann mit
einem Tolleranzwert von 5% und wenn das Stimmt, dann funktionieren beide
richtig.
Die Frage ist nur wie man das jetzt im Code am besten umsetzt und was es
dort zu beachten gibt.
Danke für die Aufmerksamkeit und Hilfe :)
Mfg
Cyber
@Cyber
>Hi, bin so ziemlich neu hier und kenne mich nicht alzugut aus, daher>vorab entschuldigung wenn das hier im Falschen Forum ist. Mit der
Sinnvollerweise ist das ein Beitrag im Forum uC & Elektronik. Ist aber
nicht tragisch.
>Meine Frage ist, gibt es eine Möglichkeit um den Quarz zu Prüfen ob er>noch richtig "Zählt"?
Da gibt es viele.
>Und zwar arbeite ich mit Basic Bascom und die Idee ist, bei dem ATmega32>(de besitzt ja 2 Quarze. Einmal den 11MHz und einen der 32k Hz ist.
Einen am normalen Quarzeingang (XTAL1/2 und an Timer 2)
>Zurück zu der Idee, ich zähle einmal wieviele Takte der 32k Hz macht und>Parallel dazu wieviele der 11MHz macht und vergleiche diese dann mit>einem Tolleranzwert von 5% und wenn das Stimmt, dann funktionieren beide
5% ist meilenweit weg von der Toleranz eines normalen Quarzes. Selbst
schlechte Quarze haben max. +/- 100ppm Toleranz (das sind 0,01%).
Wirklich sinnvoll messen kannst du eigentlich nur mit einem
Freqeunzzähler.
>Die Frage ist nur wie man das jetzt im Code am besten umsetzt und was es>dort zu beachten gibt.
Lass einen Timer eine PWM erzeugen und miss die Frequenz mit einem
Frequenzzähler. Man sollte niemals direkt am Quarz messen, das verfäscht
das Ergebnis.
Wenn du keinen hast, kann man sich mit einem Trick behelfen. Programmier
eine Uhr mit Sekundenanzeige. Stell die auf die Sekunde genau mit dem 8
Uhr Zeichen der Tagesschau. Lass die Uhr eine Woche lang laufen. Schau
dann nach, um wieviel die Uhr eine Woche später vom 8 Uhr Zeichen der
Tagesschau abweicht.
MFG
Falk
uff jetzt hast mich total überrumpelt :D
Also der Tolleranzwert sollte bei maximal 0.01% liegen.
Der 11MHz Quarz ist an XTAL1 und XTAL2 angeschlossen. Der 32768Hz Quarz
liegt an (PortC.6/7) TOSC1/2 Das ist der Timer 2.
Hoffe ich hab das jetzt soweit Richtig verstanden (Bin wirklich blutiger
Anfäger)
Das andere Problem ist ich hab keine Ahnung was du mit Frequenzzhler
meinst, aber ich glaube ich habe auch zuwenig Informationen geliefert,
versuche ich jetzt zu ergänzen :)
Ich habe hier bei der Platine leider nur eine einzige LED die an PortB.4
liegt mit der ich mir was anzeigen lassen kann. Das heißt ich kann da
leider nichts weiteres dranmachen sowas wie ein Display etc. habe nur
die LED.
Das ganze soll ein 48 Stunden Testprogramm werden mit dem man die ganzen
"Funktionen" von ATmega32 testet. dazu gehört auch ob der Quarz richtig
läuft oder nicht. Von daher klappt das nicht mit einer Woche testlaufen
lassen und mit Uhr und so :(
Der Test vom Quarz sollte (ich wiess nicht ob es Realistisch ist)
maximal paar Minuten oder gar nur wenige Sekunden lag dauern.
Das Programm ist bisher so aufgebaut, das es alle test (Speicher, Pins
ob es kurschlüssse gibt etc, den Quarz, das Shiftregister) immer wieder
abwechselnd durchtestet ob die Bits alle richtig ankommen oder nicht.
Hoffe konnte es nn deutlicher ausdrücken.
Mfg
Cyber
@Cyber
>Hoffe ich hab das jetzt soweit Richtig verstanden (Bin wirklich blutiger>Anfäger)
Soweit so gut.
>Das andere Problem ist ich hab keine Ahnung was du mit Frequenzzhler
Ein Freqeunzzähler ist ein Gerät, das, wie der Name vermuten lässt, die
Freqeunz eines Signals messen kann.
>Das ganze soll ein 48 Stunden Testprogramm werden mit dem man die ganzen>"Funktionen" von ATmega32 testet. dazu gehört auch ob der Quarz richtig>läuft oder nicht. Von daher klappt das nicht mit einer Woche testlaufen>lassen und mit Uhr und so :(
Warum willst du das machen? Das macht Atmel schon.
>Der Test vom Quarz sollte (ich wiess nicht ob es Realistisch ist)>maximal paar Minuten oder gar nur wenige Sekunden lag dauern.
Das geht mit einem Frequenzzähler (wenns ganz genau sein soll).
Wenn es aber nur darum geht, die Funktion an sich zu testen reicht es
aus, die LED im 1 Sekundentakt blinken zu lassen. Wenn sie blinkt
funktioniert der Quarz und hat max. die +/-100ppm Abweichung (was für
die allermeisten Anwendungen ausreicht).Wenn der Quarz kaputt ist geht
gar nix.
MFG
Falk
> Warum willst du das machen? Das macht Atmel schon.
Ja ist ne Aufgabe hier.. Hab hier Praktikum und soll das jetzt schreiben
um einnige Platinen auf Kurzschlüsse und so weiter durchzutesten :)
Der Speicher wird z.b. gerade so getestet das ich da einmal so ziemlich
ale möglichen Kombinationen an Bits reinschreibe und diese darauf auch
gleich auslese und schaue obs übereinstimmt oder nicht. Beim
Shiftregister (über eine extra platine) schriebe ich da ebenso schrifft
für schritt die Bits rien und (dank der extraplatine) Fange ich die
Ausgabe auf PortA ab und schaue da obs stimmt oder nicht. So ähnlich
läufts bie de restlichen Pins.
Das hab ich auch fertig.
Und jetzt das mit Quarz...
Ne Frage nochmal zum Frequenzzähler. Muss man den Extra anbringen? Oder
ist er da schon irgend wie drinne das ich auf ihn zugreifen kann?
@Cyber
>Ja ist ne Aufgabe hier.. Hab hier Praktikum und soll das jetzt schreiben>um einnige Platinen auf Kurzschlüsse und so weiter durchzutesten :)
Ok. Das sit dann aber ein Funktionstest, wie er nach der Produktion von
Platinen durchgeführt wird.
>Ne Frage nochmal zum Frequenzzähler. Muss man den Extra anbringen? Oder
Ja. genauso wie ein Multimeter zum Spannung messen. Es gibt auch
Multimeter mit Frequenzzähleeingang. Die sind zwar nicht sonderlich
genau aber für deine Anwendung ausreichend.
MFG
Falk
> Ok. Das sit dann aber ein Funktionstest, wie er nach der Produktion von
Platinen durchgeführt wird.
genau so ein ähliches teil muss icha uch machen. Weil die hier die
Platinen selbst löten. Also werden nicht fertig gekauft.
> Ja. genauso wie ein Multimeter zum Spannung messen. Es gibt auch
Multimeter mit Frequenzzähleeingang. Die sind zwar nicht sonderlich
genau aber für deine Anwendung ausreichend.
Hmm ich glaube nicht das er hier so ein multimeter in einem 48H testlauf
an jede einzelne anschließen will :(
Der Test soll wirklich so ablaufen: Man startet ihn, nach 48 Stunden
kommt man wieder und WENN die LED Blinkt (hab das bisher sogemacht das
ich mit dem Timer0 die LED immer blinken lasse) dann traten keine Fehler
auf, aber wenn die leuchtet dann ist bei dem Test irgend wo etwas schief
gelaufen und man muss nun genauer schauen was. Versthest du was ich
meine? Das ganze soll unabhängig von anderen Zusätlichen Gerären
laufen.. Programm einbrennen und laufne lassen und dann schauen ob der
Test OK war oder Fehlschlug. :(
@Cyber
>Hmm ich glaube nicht das er hier so ein multimeter in einem 48H testlauf>an jede einzelne anschließen will :(>Der Test soll wirklich so ablaufen: Man startet ihn, nach 48 Stunden
Warum eigentlich 48 Stunden? Kurzschlüsse und RAM-Fehler findet man in
Sekunden. Oder soll eine Art-Burn in gemacht werden ?(Dabei werden die
Boards under Maximal/Minimaltemperatur geetestet)
>gelaufen und man muss nun genauer schauen was. Versthest du was ich>meine?
Ja.
>Das ganze soll unabhängig von anderen Zusätlichen Gerären>laufen.. Programm einbrennen und laufne lassen und dann schauen ob der>Test OK war oder Fehlschlug. :(
Das wird so nicht gehen, ein wenig Hardware brauchst du schon. Nur
Münchhausen konnte sich selbst aus dem Sumpf ziehen. Der Selbsttest vom
RAM geht so, aber den Quarz wirst du so nciht testen können. Du MUSST
eine externe (Takt)referenz haben.
Im einfachsten Fall brauchst du einen Umschalter, um mehrere Borads mit
einem Messgerät messen zu können.
MFG
Falk
> Warum eigentlich 48 Stunden? Kurzschlüsse und RAM-Fehler findet man in> Sekunden. Oder soll eine Art-Burn in gemacht werden ?(Dabei werden die> Boards under Maximal/Minimaltemperatur geetestet)
Wenn ich das wüsste..^^
Soweit ich das Verstanden habe, werden diese nach dem Löten ein 48
Stunden Dauerbetrieb test machen, um Fehler die nach einem Dauerbetrieb
auftreten auszuschließen. Ist so ein Rechtliches Ding. Wenn da keine
Fehler auftreten, wird es an die Kunden ausgeliefert.
> Das wird so nicht gehen, ein wenig Hardware brauchst du schon.
Ist es möglich einem Timer zu sagen welchen Quarz er von den beiden
Verwenden kann?
Der 11MHz sitzt ja an Timer zwei. Gibt es Timer die an dem 32kHz sitzen?
Okey.. also ich habe jetzt mit ihm nocheinmal gesprochen und glaube ich
hatte vorhin etwas missverstanden. Oder gerade Falsch erklärt. ich
versuchs nochmal:
Bei dem Test geht es darum zwei Sachen zu Prüfen.
Die eine Sache wäre um zu sehen ob ob der eine Quarz (11MHz) wirklich
"selbst" arbeitet oder ob der Chip mit dem Internen Quarz arbeitet. Also
sehen ob der Chip wirklich mit dem 11MHz Quarz arbeitet.
Die andere wäre um zu sehen ob der 32kHz Quarz ein lebenszeichen von
sich gibt oder nicht.
Also man muss da nicht alles auf millionstel genau haben. Nur schlicht
und einfach zu sehne ob die beiden Quarze arbeiten oder nicht
Schuldigung für die Verwirrenden erklärungen :(
Mfg
Cybi
@Cyber
>Bei dem Test geht es darum zwei Sachen zu Prüfen.>Die eine Sache wäre um zu sehen ob ob der eine Quarz (11MHz) wirklich>"selbst" arbeitet oder ob der Chip mit dem Internen Quarz arbeitet. Also>sehen ob der Chip wirklich mit dem 11MHz Quarz arbeitet.
Das ist recht einfach. Eine LED blinken lassen (per Software-Delay). Die
Geschwindigkeit ist direkt vom Prozessortakt abhängig. Der MEGA32 kann
intern mit max. 8 MHz getaktet werden. Ist das der Fall, blinkt die LED
zu langsam. Das kann man auch automatisch messen. Z.B. mit einem
Monoflop,das auf eine Sekunde eingestellt ist. Der MEGA wird so
programmiert, dass er bei 11 MHz so ziemlich genau 1 Sekunde die LED
blinken lässt. Läuft er zu langsam (8 MHz intern), geht das Monoflop (ne
LED dranhängen) aus.
>Die andere wäre um zu sehen ob der 32kHz Quarz ein lebenszeichen von>sich gibt oder nicht.
Da musst du nur einen Timer auf den exteren 32kHz Quarz als Taktquelle
schalten und ebenfalls eine LED blinken lassen (per Interrupt).
>Schuldigung für die Verwirrenden erklärungen :(
Kein Prolem, wir haben alle mal klein angefangen.
MFG
Falk
Blink_verzoegerung dient dazu damit er erst nach dem 10 "Interrupt" das
Lämpchen aufleuchten lässt.
Fehlgeschlagen dient dazu, wenn irgend ein Test Fehlschlägt, leuchtet
die Lampe die ganze Zeit.
Das heißt im Moment sind alle meine Lämpchen (die eine einzige -.-) die
ich habe und verwenden darf vergeben.
Das heißt ich muss das jetzt irgen wie ohne wieteren Lämpchen Testen
müssen.
Wäre der Test auch so möglich (das ist jetzt der Test nur für den Quarz
11MHz um zu sehen ob er funktioniert oder ob es nur der Interne ist) das
man einen Timer (T2) startet.
Dann lässt man ein "waitms 1000" los. Während die 1000 milisekunden
warten, werden die Overflows von Timer 2 gezählt. Ist die eine Sekunde
vorbei stoppt man den Timer und dann hat man die Zahl der overflows.
Diese Multipliziert man mit 65536 (hab die zahl gerad nicht mehr genau
im Kopf) und schaut ob man ungefähr an die 11.000.000 rankommt oder
nicht. Wenn das so um den dreh ist dann kann man sagen, ja der prozessor
läuft mit den 11Mhz also mit dem Quarz.
Am Ende hat man dann die
@Cyber
>Das heißt im Moment sind alle meine Lämpchen (die eine einzige -.-) die>ich habe und verwenden darf vergeben.>Das heißt ich muss das jetzt irgen wie ohne wieteren Lämpchen Testen>müssen.>Dann lässt man ein "waitms 1000" los. Während die 1000 milisekunden>warten, werden die Overflows von Timer 2 gezählt. Ist die eine Sekunde>vorbei stoppt man den Timer und dann hat man die Zahl der overflows.
Was glaubs du, woher weiss die CPU wann 1000ms vorbei sind? Dazu musst
du ihm in Bascon die Quarzfreqenz angeben. Und dann vergleichst du zwei
Unbekannte gegeneinander. -> keine gute Idee
Mein Vorschlag
Wenn alle internen Test erfolgreich sind, blinkt die LED im 1s Rhytmus.
Tut sie das wirklich im 1s Rhytmus weiss man, dass A) die interen Tests
und b) der 11 MHz Oszillator OK sind. Blinkt sie gar nicht oder mit der
falschen Frequenz ist einer der Test schief gegangen.
MfG
Falk
> Wenn alle internen Test erfolgreich sind, blinkt die LED im 1s Rhytmus.> Tut sie das wirklich im 1s Rhytmus weiss man, dass A) die interen Tests> und b) der 11 MHz Oszillator OK sind. Blinkt sie gar nicht oder mit der> falschen Frequenz ist einer der Test schief gegangen.
Das gut, danke :D
Bleibt dann nur noch der 32kHz..
Der ist ja soweit ich das nun weiss da um dem Prozessor quasi die "zeit"
einzuspeisen und schlicht erklärt setzt er mit jedem Takt ein Pin von 0
auf eins und zurück.
So könnte man ja messen wie oft er das zu einer bestimmten Zeit gemacht
hat und dann kann mana auch sagen ob der "grobgesehen" richtig zählt
oder nicht?
@Cyber
>Bleibt dann nur noch der 32kHz..>Der ist ja soweit ich das nun weiss da um dem Prozessor quasi die "zeit">einzuspeisen und schlicht erklärt setzt er mit jedem Takt ein Pin von 0>auf eins und zurück.
Ein Takt halt. Funktioniert genauso wie der 11 MHz Oszillator.
>So könnte man ja messen wie oft er das zu einer bestimmten Zeit gemacht>hat und dann kann mana auch sagen ob der "grobgesehen" richtig zählt>oder nicht?
Das geht ohne Problem genau. Genauso mit nem Timer Interrupt wie du das
schon gemacht hast. Nur halt als Taktquelle nicht den 11 MHz, sondern 32
kHz verwenden.
MFG
Falk
Super danke! :)
ne andere kleine Frage wären diese Einstellungen so ok?
$regfile = "m32def.dat" ' specify the used micro
$crystal = 11000000 ' used crystal frequency
$hwstack = 40 ' default use 32 for the hardware stack
$swstack = 20 ' default use 10 for the SW stack
$framesize = 40
und die andere.. wie kann ich ihm sagen.. wie ein timer eine andere
Taktquelle nehmen soll? Wenn die antwort keine Umstände macht :)
Mfg
Cyber
@Cyber
>ne andere kleine Frage wären diese Einstellungen so ok?
Sieht gut aus, aber da erwischst du meine Achillesferse. Ich hab von
Bascom keine Ahnung ;-)
>und die andere.. wie kann ich ihm sagen.. wie ein timer eine andere>Taktquelle nehmen soll? Wenn die antwort keine Umstände macht :)
Das sollte im Handbuch/Hilfe stehen.
MfG
Falk
Okey dann bedanke ich mich nochmals für deine Hilfe und sehe zu das ich
da was auf die Beine stelle ^^
Bis bald, man schriebt sich bestimmt irgend wann mal wieder ^.^
Mfg
Cyber
Hrm.. ich könnt gerad heulen T_T
Also hab gerad nochmal mit jemanden unterhalten und irgend wie hatte ih
das heute Mittag verdrängt/vergssen das der Test am Ende auch aussagen
soll, ob einer der Fehler irgendwan während des 48h Tests auch nur ganz
ganz kurz aufgereten ist oder nicht. Weil WENN dann wäre der 48 Test
Fehlgeschlagen und man kann ja da jetzt nicht 48 sitzen und da Lämpchen
beobachten :(
Das heißt das ganze muss doch nun so getestet werden.. unabhängig von
dem Lämpchen -.-
Mal auf den monoflop zurück zu kommen. Hab jetzt danach gegoogelt aber
nichts gescheites gefunden.. was ist es nochmal ganz genau? Bzw. wie
funtzt er? Oder hat jemand ne nette Seite wo es erklärt steht?
Mfg
Cyber :(
@Cyber
>Hrm.. ich könnt gerad heulen T_T
Boys don't cry . . . ;-)
>Also hab gerad nochmal mit jemanden unterhalten und irgend wie hatte ih>das heute Mittag verdrängt/vergssen das der Test am Ende auch aussagen>soll, ob einer der Fehler irgendwan während des 48h Tests auch nur ganz>ganz kurz aufgereten ist oder nicht. Weil WENN dann wäre der 48 Test
Und was lernen wir daraus? Ein klare und umfassende Spezifikation der
Anforderugen ist das A und O.
>Fehlgeschlagen und man kann ja da jetzt nicht 48 sitzen und da Lämpchen>beobachten :(>Das heißt das ganze muss doch nun so getestet werden.. unabhängig von>dem Lämpchen -.-
Und du brauchst schon einiges an Prüfaufbau.
>Mal auf den monoflop zurück zu kommen. Hab jetzt danach gegoogelt aber>nichts gescheites gefunden.. was ist es nochmal ganz genau? Bzw. wie>funtzt er? Oder hat jemand ne nette Seite wo es erklärt steht?
Schau mal in Datenblatt vom NE555 bzw. 74HC123.
Ein Monoflop macht im Prinzip aus einem kurzen (Start)Impuls einen
Ausgangsimpuls definierter Länge.
MFG
Falk
Kann ich den Quarz mt 32kHz zählen lassen von 0 bis 32768 und wenn dann
ein overflow ist wird ein interrupt ausgelöst? Wenn ja.. welcher
interrupt ist es? Der int0 int1 oder int2?
Mfg
Cyber
Ich formulier mal die Frage anders :)
Ist es möglich mit dem 32k Quarz von dem Mega Interrupts auszulösen?
Oder suche ich mir da gerad ein wolf ^^
danke im voraus :)
Cyber
@Cyber
>Ist es möglich mit dem 32k Quarz von dem Mega Interrupts auszulösen?
Ja.
>Oder suche ich mir da gerad ein wolf ^^
Möglich, wenn gleich unnötig ;-)
Mega32 Datenblatt, Kapitel 8-Bit Timer/Counter 2 with PWM and
asynchronous Operation
Register ASSR, Bit 3 - AS2
MFG
Falk
danke hat geholfen nun bin ich ein großen schritt weiter ^^
Zusammenfassung:
Sofern das AS2 bit aus dem ASSR register gesetzt ist, benutzt der 8-Bit
Counter2 den Clock aus von dem 32kHz Quarz (TOSC1/TOSC2)
Das heißt quasi ich muss jetzt dasn AS2 bit setzen, den Counter2 starten
und schon habe ich nach dem Takt des 32kHz Quarzes bei jeden 256. Zahl
ein kleinen Interrupt. Ist das richtig so?
Lieben Gruß
Cyber