PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe beim Quellecode



Dj_Beat
13.11.2007, 13:18
Hallo!
ich möchte eine kleine schaltung aufbauen, die mir jede 24 Stunden für 10 minuten einen Hihg-signal ausgibt.
also einschalten, 10 minuten hipg-signal, auschalten, 23 Stunden und 50 minuten warten, einschalten, 10 minuten warten, auschalten...
ich könnte das selbst mit dem wait Befehl alles machen, aber ich möchte noch eine LED zur kontrolle haben, die jede 10 sekunden aufblinken sollte. Damit ich sehe, dass die schaltung überhaupt noch läuft.
es wird ein AtTiny2313 verwendet.
kann mit einer vielleicht mit dem Quellcode helfen?
Danke

peterfido
13.11.2007, 18:00
$regfile = "ATtiny2313.DAT"
$crystal = 1000000

$hwstack = 32
$swstack = 10
$framesize = 40

Config Portb.2 = Output 'LED
Config Portb.3 = Output 'Ausgang


Dim Zeit As Long
Dim Zeitk As Long
Dim Erg As Long

Zeitk = 86400 'Sekunden für 24 Stunden
Zeit = 86400

Set Portb.2
Set Portb.3


Do
Wait 1
Zeit = Zeit - 1
If Zeit = 85800 Then '10 Minuten
Reset Portb.3
End If
If Zeit = 0 Then
Zeit = Zeitk
Set Portb.3
End If
Erg = Zeit Mod 10
If Erg = 0 Then
Set Portb.2
Else
Reset Portb.2
End If
Loop


End

Dj_Beat
13.11.2007, 19:08
Wow, danke schön! :))))))))))))))

Windi
14.11.2007, 00:09
Wow, danke schön! :))))))))))))))
Aber erwarte nicht dass dieses Programm sonderlich genau geht.
Hier bräuchte man schon eine Synchronisierung über eine RTC oder noch besser über ein DCF77-Signal.
Das jetzige Programm geht pro Tag sicherlich mehrere Minuten vor oder nach.

Dj_Beat
14.11.2007, 13:10
Wow, danke schön! :))))))))))))))

Das jetzige Programm geht pro Tag sicherlich mehrere Minuten vor oder nach.
auch mit dem Quarz?

robodriver
14.11.2007, 13:23
Ja, auch mit dem quarz wird es ungenau laufen.
Das liegt aer hauptsächlich daran, das BASCOM eine "ungenaue" sprache ist.
Um es ganz genau hin zu bekommen müsste man schon auf Assembler umsteigen.

PS: Wait 1 = 1 Sekunde, aber alle anderen folgenden Befehle brauchen auch nochmal ihre Zeit und je nach IF-Bedinung manchmal länger und manchmal kürzer.
Im Idealfall dauert hier ein Schleifen-durchlauf etwa 1,00001 Sekunden das klingt jetzt nicht weit daneben, aber nach 24 Stunden ergeben die 0,00001 Sekunden Abweichung schon 0,846 Sekunden...
Also pro Tag ungefähr eine Sekunde... Das könnte man in BASCOM noch etwas reduzieren, aber ganz genau bekommt man das nur in Asembler hin.

Gruß Robodriver

stefan_Z
14.11.2007, 15:12
Oder du nutzt einen Uhrenquarz und die Uhrenfunktionen von Bascom - komplizierter aber auch genauer (je nach Quarz-Genauigkeit)