Nein das kannst du auch machen. Musst du mal gucken indem du auf "Bearbeiten" klickst. Kann dir selber nicht genau sagen wie das geht.
Und die 1 Sekunde kannst du am besten mit einer Stoppuhr oder einer Digital Uhr mit Sekundenanzeige nachprüfen ;)
Druckbare Version
Nein das kannst du auch machen. Musst du mal gucken indem du auf "Bearbeiten" klickst. Kann dir selber nicht genau sagen wie das geht.
Und die 1 Sekunde kannst du am besten mit einer Stoppuhr oder einer Digital Uhr mit Sekundenanzeige nachprüfen ;)
Ich will ne Uhr draus bauen, also lass ich die Sekunde jetzt erst mal ne Sekunde sein und mess dann Später die Verzögerung über nen ganzen Tag ;-) Ist, glaube ich, einfacher wie die Sekunde jetzt zu messen.
EDIT1: Man, bin ich blind: Thema als erledigt Markieren ist ganz einfach. Einfach oben auf "Themen-Optionen"->"Markiere Thema als erledigt"
Für eine Uhr würde ich aber eher ein 32kHz Quarz nehmen. Lässt sich besser runterfallen als 1 bzw. 16 MHz ;)
1 Int pro Sekunde geht auch stressfreier:
Hier wird der Timer1 (16Bit) eines ATMega32 im CTC Mode benutzt. Dabei läuft der Zähler von 0 bis Max (hier 0x7a12 bzw. 31.250) und wird dann da automatisch auf 0 gesetzt, wodurch man sich das counter neu setzen jedesmal in der ISR spart :). da du noch nen 8 bit timer benutzt kann es sonst zu überschneidungen kommen, was das neu setzen des Counters verzögern würde, die Sekunden wären also ab und zu ein paar Takte länger.Code:// ****** timer int, send message to counter tiny
ISR(SIG_OUTPUT_COMPARE1A) {
// --- irgendwas machen
}
// ****** init 16bit timer
void init_timer(void) {
// --- set counter to 0
TCNT1 = 0;
// --- control registers
TCCR1A = 0;
TCCR1B = (1<<WGM12) | (1<<CS12); // CTC mode, prescaler 256 for 8 MHz
TIMSK = 0x10; // besser: TIMSK |= 0x10; da TIMSK hier auch für timer0+2 zuständig ist...
// --- set max for compare
OCR1A = 0x7a12; // 0x7a12 bei clk/256 @ 8,0 MHz ohne Rest :)
}
Für ne LED Matrix tät ich eher empfehlen in der refresh ISR die frames zu zählen und danach das Bild zu ändern, bzw. die Zeit zu zählen.
Noch schicker wirds wenn du 2 Framebuffer benutzt und dann immer im gerade nicht angezeigten rummalst, dann wirkt das Ganze noch stabiler :)
Einen externen Uhren IC könnte man dann noch per Knopfzelle puffern (z.B. DS1307 hat da direkt Pins für), die Synchronisation per GPS ist einfacher als man denkt (und für <€40,00 machbar!) und beides täte auch 1x pro Sekunde nen Puls liefern. Also am Besten gleich RXD/TXD, Int0 oder Int1 und SDA+SCL freilassen, spart später das umstricken...
Ich hoffmal das war jetzt nützlich und halbwegs verständlich :P
Ja ich hatte eigentlich nen 32k Quarz, aber ich hab meine Atmega32 über falsche Fusebits zerstört und hab jetzt nur noch nen Atmega8 und da ist es nicht so einfach nen 2ten Timer anzuschliessen.
Ich benutze jetzt den 16 Bit Timer, so wie im ersten Post beschrieben um die Zeit zu "zählen" und den 8 Bit Timer um die Matrix zu multiplexen. Mal schauen wie genau die Uhr dann wird und ob ich dann noch was ändern soll.
PS: Hab 2 Buffer, damit nichts flackert^^