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
Also im Moment hab ich die LEd folgendermaßen Blinken:
1 | ' Timer Konfiguration für das Blinkende Lämpchen |
2 | On Timer0 Lampe 'Interrupt-Routine für Timer0-Overflow |
3 | Config Timer0 = Timer , Prescale = 1024 'Takt: Quarz/1024 |
4 | Enable Timer0 'Timer0-Overflow-Interrupt einschalten |
5 | Enable Interrupts 'Interrupts global zulassen |
6 | |
7 | Do
|
8 | Loop
|
9 | |
10 | Lampe: |
11 | If Blink_verzoegerung = 10 Then |
12 | Blink_verzoegerung = 0 |
13 | If Pinb.4 = 1 And Fehlgeschlagen = 0 Then Reset Portb.4 Else Set Portb.4 |
14 | Else
|
15 | Incr Blink_verzoegerung |
16 | End If |
17 | Return
|
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
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.