Forum: Mikrocontroller und Digitale Elektronik Atmega8 interner Oszillator 8MHz möglich?


von Sercan S. (disaster35)



Lesenswert?

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
von Georg G. (df2au)


Lesenswert?

Sercan S. schrieb:
> Oszillator mit 8MHz + 64ms Startup-zeit auswählen

Mach das. So lange du den internen Oszillator nimmst, ist alles gut.

von Herr M. (herrmueller)


Lesenswert?

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.

von Sercan S. (disaster35)


Lesenswert?

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.

von Walter S. (avatar)


Lesenswert?

8MHz geht, aber ich bin sicher dass sich die geschilderte Aufgabe auch 
mit 1MHz bewältigen ließe

von Minimalist (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.
Lade...