PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega 128 mit Uhr



schmidtkoe
11.08.2006, 19:43
Hallo,

ich möchte gern beim Atmega 128 eine Uhr implementieren. Der Chip ist mit 4 MHz intern getaktet, an den Anschlüssen außen ein 32,768 kHz Quarz. Bis jetzt beschrenken sich meine Erfahrungen auf einfache Aufgaben, die Uhr stellt mich vor Problemen.
Also die Uhr sollte relativ genau laufen und jede Minute auf dem externen LCD die Zeit aktuallisieren. Wer kann mir dazu Tips etc. geben ?
Besten Dank
Andreas

franzl
12.08.2006, 18:54
hallo schmidtkoe,
also das mit dem 32,768 kHz Quarz ist schon mal ziemlich genau. du musst dann eben ein programm schreiben welches mit einem timerinterrupt eine variable hochzählen lässt. bei jedem interrupt A = A + 1 und dann eben z.B. schreiben if A = 60 then Locate Lcd and A = 0 end if
mfg franzl

-tomas-
12.08.2006, 21:56
BASCOM kann das von Hause aus. Lies mal:
CONFIG CLOCK = soft falls Du zusätzlich weitere Dinge in der 1sec-ISR behandeln willst oder BASCOM beim MEGA128 die Register falsch setzt (kann das nicht testen) hier ein Beispiel für den MEGA169, wie Du die Register und ISR selber behandelst:

'Set Timer Register Mega169
Assr = &B1000 'Async with ext. Crystal Oscillator
Tccr2a = &B0101 'prescaler 128: 32.768Hz/(128*256) = 1sec
Tifr2 = &B0011 'Clear Timer/Counter2 - Interrupt Flag TIFR2
Timsk2.toie2 = 1 'Enable Timer2 - Timer/Counter2 Interrupt Task Register TIMSK2
On Ovf2 Isr_softclock Nosave 'OVF2 =$00a ;Overflow2 Interrupt

'...

'*********ISR Timer2 - Async ***************************************
'---------------------------------------------------------------
'Interrupt: Isr_softclock
'Call from: Interrupt Vector Timer2
'Purpose: increment RTC: clock and date
' external 32kHz Oscillator (Async Modus)
'Result: _sec, _min, _hour, _day, _month, _year
'---------------------------------------------------------------
$external _soft_clock
Const _sectic = 0 'Compilerstatement for CONFIG CLOCK = USER , GOSUB <> SECTIC

Isr_softclock:
$asm
'internal Bascom ISR-Routine: Softclock
JMP _SOFT_CLOCK 'original RETI
$end Asm
Return