BASCOM Uhr mit Butterfly

Gast #371911
Lesenswert?

Hallo zusammen,

komme beim programmieren von Time/Date/Timer des Butterfly unter
Bascom
nicht weiter. Der Time$, Date$ werden nicht aktualisiert ( bleiben auf
00:00:00 stehen. Deklarierung und Prog. hab ich auch mit den bei
Bascom
enthaltenen Beispielen versucht zum laufen zu bringen ... nix.
Kann es am verwendeten Butterfly liegen?

Danke für eure Antwort
Gast #371914
Lesenswert?

Hallo zusammen,

an ein bisschen Quältext solls nicht hängen. Ist eigentlich nur eine
geringfügige Änderung eines Bsp.textes von Josef Franz Vögel im
Bascom.

$regfile = "M169DEF.DAT"      ' Butterfly

Config Clock = Soft
Disable Interrupts

'configure the date format
Config Date = Ymd , Separator = -                           '
ANSI-Format
'This sample does not have the clock started so interrupts are not
enabled
' Enable Interrupts

'dim the used variables
Dim Lvar1 As Long
Dim Mday As Byte
Dim Bweekday As Byte , Strweekday As String * 10
Dim Strdate As String * 8
Dim Strtime As String * 8
Dim Bsec As Byte , Bmin As Byte , Bhour As Byte
Dim Bday As Byte , Bmonth As Byte , Byear As Byte
Dim Lsecofday As Long
Dim Wsysday As Word
Dim Lsyssec As Long
Dim Wdayofyear As Word


 Do
' Example 1 with internal RTC-Clock
_sec = 12 : _min = 30 : _hour = 18                          ' Load
RTC-Clock for example - testing

Lsecofday = Secofday()
Print "Second of Day of " ; Time$ ; " is " ; Lsecofday
Loop

Mit diesem Code macht's im Simulator und im Butterfly keine
fortlaufende Zeit.

Gruß Sebastian
Gast #371916
Lesenswert?

Ich das zwar kann zwar nicht Bascom, aber die Zeilen:

Config Clock = Soft
Disable Interrupts

Deuten darauf hin, dass die Interrupts deaktiviert sind und nicht
aktiviert werden. Ich sehe auch keine Interrupt-Routine
(Tick-Tack)
#371918
Lesenswert?

Klar sollte die funzen, aber ohne Interrupt-Routine passiert ja nichts.
Es muss auf jeden fall folgendes rein:

Config TimerXXX = Timer, Prescale= XX    'Konfiguriere TimerXXX
Enable TimerXXX       'TimerXXX an
On  TimerXXX   SprungXXX   'Dahin springen wenn Int.
Enable Interrupts          'generell Interrupts zulassen

SprungXXX:
  'hier die Variablen hochtzählen oder so
Return

Mehr dazu hier:
http://www.roboternetz.de/wissen/index.php/Bascom_und_Timer
Gast #371919
Lesenswert?

Danke für die Info MasterFX. Bin davon ausgegangen, dass die Timer
autark laufen, wie ich das von anderen Proz. kenne (CC1 / CC2-> ok
Betrieb Sys. dahinter)und der Wert sich dann im Time$ bzw. Date$
wiederfinden.
Das sollte dann bei den Beispielen aber auch mit dabeistehen, da ich
mir vorstellen kann, dass andere Einsteiger beim nachvollziehen die
gleichen Probleme haben.

Für einen schnellen Programmablauf teile ich dann die interne 8Mhz
Clock? Aber wozu dann der externe 32k Uhrenquarz?
#371920
Lesenswert?

Den externen Quarz kannst du natürlich auch verwenden. Damit bekommt man
ziemlich genaue Uhren hin (wegen genaue Sekunde). Zudem kannst du den uC
dann in den Sleep-Modus versetzten, so das er nur alle 500 oder 1000ms
"aufwacht" und dadurch erheblich weniger Strom verbrauen, was für den
Batteriebetrieb besonders interessant ist.
Gast #371921
Lesenswert?

Sorry,
Config Clock = Soft ; Disable Interrupts funktioniert anscheinend nur
bei MCU`s mit interem RTC und demnach auch Time$ und Date$.
Lt DB hat der 169er nicht.
Das mit den Timer-Interrupt will beim 169er unter BASCOM nicht funzen.
Stell ich mich zu blöd an.
Im BASCOM-Simulator läuft folgendes Demo nur mit dem 2313 nicht aber
mit dem 169er (auch nicht auf dem Butterfly in real)
Der Timer läuft und läuft und trotzdem wird kein Interrupt ausgelöst.
Bascompoblem? Lt DB muss er.

$regfile = "2313def.dat"
'$regfile = "m169def.dat"  ' keine Chance
$crystal = 8000000


'Configute the timer to use the clock divided by 1024
Config Timer0 = Timer , Prescale = 1024

'Define the ISR handler
On Ovf0 Tim0_isr
'you may also use TIMER0 for OVF0, it is the same
'On Timer0 Tim0_isr ' dasselbe


Enable Timer0                                               ' enable
the timer interrupt
Enable Interrupts                                           'allow
interrupts to occur
Do
 Print Timer0  'your program goes here
Loop

'the following code is executed when the timer rolls over
Tim0_isr:
  Print "     *";
Return

End
Gast #483801
Lesenswert?

Hallo !

Ich benutze BASCOM. Aber damit die Uhrzeit "richtig" läuft muss doch der 
Attiny "logischerweise" immer mit Strom versorgt werden oder nicht ? 
Also so wie der BIOS mit seiner kleinen Batterie.

MfG,

Tugrul Ö.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren