PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fusebits und Uhrenquarz (wie?)



Ineedhelp
18.08.2008, 15:52
Hi

ich mache momentan ein paar kleine projekte um mein wissen zu erweitern.
Nun bin ich bei der zeit angekommen und möchte die dargestellte zahl einer LED anzeige jede sekunde um 1 erhöhen (hochzählen).

Dazu habe ich jetzt eine LED Anzeige, ein Uhrenquarz (32,768 kHz) und einen AVR (Tiny2313). Ich möchte, dass die sekunde sehr genau ist, da ich in meinem nächsten projekt eine binäre uhr bauen will und so dieses wissen brauche.

Ich möchte gerne in C Programmieren und habe AVR Studio und WinAVR zur Verfügung. Den tiny programmiere ich über das ATMEL Evaluations-Board von Pollin.

Nun meine Fragen:
Um ein externes Quarz zu nutzen muss ich ja die Fusebits des AVRs ändern. Wie mache ich das mit den angegebenen Tools?
Hat da vielleicht jemand einen guten Link?

Wie verarbeite ich die Quarzsignale dann im AVR damit es eine sekunde wird
Habe auch selber nach dem Weg gesucht...
Der Timer läuft ja mit der Frequenz vom Quarz, zählt so bis zu einem bestimmten Bereich (Vorteiler) hoch und gibt einen Interrupt aus und fängt wieder bei 0 an.
Bei meiner Frequenz und einem Vorteiler von 1024 hätte ich also mit dem 32 Interrupt eine Sekunde. (richtig?)

Danke an Euch

Dirk
18.08.2008, 17:58
Hallo Ineedhelp,

bei manchen ATmegas kann man zusätzlich zum normalen Quarz auch noch einen Uhrenquarz 32768 Hz anschließen. Damit läuft dann ein Timer im asynchronen Modus und kann einen 1 Sek-Takt für eine Uhr erzeugen.

Der 2313 kann das so nicht. Den Uhrenquarz würde ich für den 2313 auch nicht als Hauptquarz verwenden (zu langsam).

Gruß Dirk

ebendt
18.08.2008, 20:07
Ich habe eine Uhrensteuerung mit einem Tiny13 gebaut. Der Timer hat mir alle 0,5 Sekunden einen Interrupt erzeugt. In deinem Beispiel mit 32kHz müßtest du bei einem Vorteiler von 1024 den Timer noch 32 (Startwert $FF-$20) Impulse zählen lassen um einmal pro Sekunde einen Interrupt zu erhalten. Ob der Prozessor mit 32kHz für deine Zwecke noch schnell genug ist kann ich allerdings nicht beurteilen. Aber es gibt sie ja auch mit zwei Anschlußmöglichkeiten für Quarze.

Ineedhelp
18.08.2008, 23:43
danke erstmal

wie ungenau wäre meine uhr denn ungefähr, wenn ich sie mit dem tiny2313 und ohne externem Quarz (also mit dem internen) betreiben würde? auf einen Monat gesehen?

habe hier auch noch einen Atmega 16-8 liegen. Kann ich den mit dem uhrenquarz betreiben? wenn ja wie?


Den Uhrenquarz würde ich für den 2313 auch nicht als Hauptquarz verwenden (zu langsam).

geht ein schnellerer quarz für den tiny2313? welchen würdest du denn verwenden?

Rofo88
19.08.2008, 03:40
Mit dem internen Taktgenerator ist keine Uhr zu bewerkstelligen die auf nen Monat genau läuft. Selbst mit nem Quarz ist die Abweichung nach einem Monat im Minutenbereich (läst sich aber auch noch Kompensieren). Wenns über lange Zeit genau sein soll hilft nur DCF77.

Ja ein schnellerer Quarz ist möglich.
3,6864 MHz z.b. kommt aber auch darauf an was Du für Rechenpower brauchst.

Ineedhelp
19.08.2008, 11:49
achso
und wie machen die das bei den digital armbanduhren (die ohne DCF77).
die laufen doch auch ziemlich genau?

viel rechenpower brauche ich ja nicht, will ja nur ein paar leds ansteuern
und die zeit damit ausgeben

aber naja, bestelle ich halt jetzt schon ein DCF77 (hatte ich die nächste zeit eh vor)

danke

Rofo88
19.08.2008, 13:48
die laufen doch auch ziemlich genau?

Aber halt nur ziemlich. Ich habe hier ein Modell erwischt was im Monat um ca. 2 Min abweicht. Mit nem µC und nen Quarz kommst da auf unter 30 sek. im Monat wenn Du da die Geschwindigket bissel kompensierst. (Da bekommt man dann auch raus um wieviel so ein Quarz doch danebenliegt)

Mit nem Funkmodul bist Du da auf der sicheren Seite und die Zeit ist immer genau (Schaltjahr usw.)

Ineedhelp
19.08.2008, 15:46
okay, danke
bin überzeugt

jetzt muss mir nur noch jemand erklären wie ich in C oder mit AVR Studio/WinAVR die fusebits eines AVRs ändere (rein aus intresse)

tholan
19.08.2008, 17:01
Hi,
dafür gibts ne Menge Progrämmchen.
Ich nutze die SP12 -Beschaltung zum PPort.
Die Kompilate spiele ich mit "Twinavr" in den Atmel.
Hiermit lassen sich auch grafisch und bequem die Fuses einstellen.

Ineedhelp
19.08.2008, 19:09
gefällt mri nicht so gut, weil ich keinen lpt programmer habe

welche gibt es denn noch? ist keiner in winavr oder avr studio integriert?
würde den gerne mit meinem pollin board nutzen

ebendt
19.08.2008, 19:45
wie ungenau wäre meine uhr denn ungefähr,

Ich habe ohne weitere Maßnahmen mit einem Uhrenquarz eine Genauigkeit von ca. 1 Sekunde pro Tag erreicht. ATmel gibt für seine internen Taktgeneratoren übrigends eine Abweichung von 3% an. Wenn das calibration Byte entsprechend gesetzt ist auch 1% (siehe entsprechende Aplication Note)


habe hier auch noch einen Atmega 16-8 liegen. Kann ich den mit dem uhrenquarz betreiben? wenn ja wie?

Dazu mußt den Quarz nur entsprechend des Vorschlags im Datenblatt anschließen und die Fusebits entsprechend setzen. Danach nützen übrigends viele Programmiergeräte nichts mehr, da sich der Chip nicht mehr ohne weiteres programmieren läßt.


Den Uhrenquarz würde ich für den 2313 auch nicht als Hauptquarz verwenden (zu langsam).

geht ein schnellerer quarz für den tiny2313? welchen würdest du denn verwenden?

BurningWave
20.08.2008, 21:55
welche gibt es denn noch? ist keiner in winavr oder avr studio integriert?

Doch, in AVR Studio ist der Programmer "AVR Prog" integriert. Menü "Tools" -> "AVR Prog...".

mfg

Ineedhelp
21.08.2008, 11:18
danke
die info habe ich gesucht

leider kommt eine fehlermeldung

"No supported board found"

ich habe aber das pollin board an den com1 angeschlossen

kennt jemand einen trick, um das zu umgehen?