Hallo, ich bin eher ein Laie im Mikrocontrollerbereich, also falls ich Unsinn schreibe, schlägt mich bitte nicht :D Tipps und Verbesserungsvorschläge sind gerne gesehen :) Derzeitig habe ich ein Projekt indem ich wie im Betreff schon genannt, mit den Atmega8 arbeite (genauere Bezeichnung: ATMEGA8-16PU). In dem Projekt ist auch ein 7-Segmentanzeige vorhanden welches Gemultiplexed (<-- Nennt man das so ?) wird. Während ich was cooles auf der Segmentanzeige zeige, muss ich pro Sekunde c.a. um die 900 Taktsignale über einen Anschluss, welches ich als Eingang definiert habe, einlesen (dies klappte leider nicht ganz, da ich mit den internen Oszillator arbeite, welcher Werksmäßig mit 1MHz ausgeliefert wird). Da die Taktsignale unterschiedlich lang sein können habe ich es in Pseudocode erklärt so gelöst: Anzahl Taktsignale = 0 Takteingegangen = false WENN Takteingegangen DANN Takteingegangen = true WENN SONST Takt nicht eingegangen und Takteingegangen=true DANN Anzahl Taktsignale++ und Takteingegangen=false Und später werte ich diese Taktsignale aus und zeige etwas auf der Anzeige. Um auf der Anzeige etwas anzeigen zu können muss ich gezwungenermaßen (bzw. es schien mir am logischsten) modulo operationen verwenden (1000er Stellen, 100er Stellen etc.). Da ich c.a. 900 Taktsignale nicht mit den internen Oszillator, welcher Werksmäßig auf 1MHz "runtergetaktet" ist nicht einlesen kann (da schnellste Timer mit 8-Bit auf c.a. 400 Interrupts pro Sekunde kommt), bzw. ich einige Signale verpassen würde, müsste ich es ja hochtakten und da kommen wir zu der Sache, dass ich den ATMega8 auf 8MHz "hochtakten" möchte. Jetzt kommen wir zu einer Sache, womit ich mich nicht beschäftigt habe und vorsichtig mit bin, genau zu den Fuses. Ich habe gelesen, dass es mit der internen Oszillator funktionieren würde, bin mir aber nicht sicher ob es auch geht :D Ich habe einiges aus dem Datenblatt gelesen und wollte mir nicht unbedingt den Mikrocontroller versauen. Im angehängten Bild sieht man in Atmel Studio 7, dass ich den internen Oszillator mit 8MHz + 64ms Startup-zeit auswählen kann. Das hat mich ermutigt und bin aus Jux und Tollerei auf Program gegangen und siehe da Atmel Studio 7 warnt mich davor, dass wenn ich den Clock-Time verändere auf etwas was nicht in Verbindung mit meinem Controller Verfügbar ist, könnte mein Mikrocontroller aufhören zu funktionieren und ich lieber die Experten aus dem Forum Mikrocontroller.net fragen soll, ob ich es tatsächlich machen wolle (letzteres hat mir mein inneres gesagt nicht Atmel Studio :D). Im Anhang findet Ihr auch ein Auschnitt aus dem Datenblatt vom Atmega8 in dem Steht, dass die 8MHz verfügbar sein sollen. Ich bedanke mich bei jeden, der mir helfen wird und evtl. Verbesserungsvorschläge geben kann. Liebe Grüße :)
:
Bearbeitet durch User
Sercan S. schrieb: > Oszillator mit 8MHz + 64ms Startup-zeit auswählen Mach das. So lange du den internen Oszillator nimmst, ist alles gut.
Genau, der Atmega8 interner Oszillator kann 8Mhz ohne Probleme. Deine gewählte Einstellung wäre richtig. Es muss halt INT. RC osz sein, dann funktioniert es.
Danke euch, ich probiere es gleich mal aus :) Ich finde es immer wieder Klasse wie aktiv dieses Forum ist und wie schnell Ihr immer antwortet.
8MHz geht, aber ich bin sicher dass sich die geschilderte Aufgabe auch mit 1MHz bewältigen ließe
Warum zählst du die eingegangenen Impulse nicht mit dem Timer? Der kann das in Hardware ganz ohne CPU load. 900 signale/s sind für einen microkontroller gähnend langsam! Die 8 Bit Timer zählen bis 256 und feuern dann ein Interrupt ab. Du musst nur die Überläufe zählen, und am Ende den Zählerstand addieren. Mit dem 16bit Timer kannst du direkt bis 65535 zählen lassen.
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.