Forum: Projekte & Code BASCOM Uhr mit Butterfly


von Sebastian Schönfeld (Gast)


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

von Timmo H. (masterfx)


Lesenswert?

Wie wärs mit ein bissl mehr Code? So lässt sich wenig erkenne wo der
Fehler liegen könnte.

von Timmo H. (masterfx)


Lesenswert?

^^Also irgentwie muss Andreas Schwarz mal eine Doppelpost-Sperre
einbauen. Sei es mit CRC oder was weiss ich.

von Sebastian Schönfeld (Gast)


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

von Stephan H. (stephan-)


Lesenswert?

vermisse nur ich hier das Tick Tack  ?????

von MasterFX (Gast)


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)

von Sebastian Schönfeld (Gast)


Lesenswert?

OK, sind aber als Beispiele im Bascom dabei und sollten doch eigentlich
funzen?!
Der Butterfly hat auch ein 32.xxkhz Quarz für ne Uhr.

von Timmo H. (masterfx)


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

von Sebastian Schönfeld (Gast)


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?

von Timmo H. (masterfx)


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.

von Sebastian Schönfeld (Gast)


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

von Tugrul Ö. (Gast)


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 Ö.

von Tugrul Ö. (Gast)


Lesenswert?

Verdammt !! Tut mir leid. Ich war im falschem Thread !!!!!

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.