Hi,
danke für eure Antworten. Ich habe jetzt auch mal meinen Ansatz in Bascom umgesetzt.
Der ist allerdings auch noch ungetestet. Es geht sicherlich noch einfacher da muss ich nochmal ran und optimieren. Ich gucke nachher mal in Bascom wielange ein IRQ braucht. Dann muss ich evtl auf 2ms "Auflösung" gehen oder ich setz die Fuses auf 8Mhz dann wirds wohl reichen!? Soo Zeitkritisch ist das ganze nicht. Ob ich überhaupt mit den Zeiten so klar komme oder ob ich die Pausen länger ziehen muss weiss ich auch noch nicht. Aber ich denke das gröbste ist geschafft.Code:$regfile = "m48def.dat" $crystal = 1000000 Config Timer0 = Timer , Prescale = 8 Config Pinb.1 = Output Config Pinb.2 = Output Config Pinb.3 = Output Config Pinb.4 = Output Mg1 Alias Pinb.1 Mg2 Alias Pinb.2 Mg3 Alias Pinb.3 Mg4 Alias Pinb.4 Dim Mg1flag As Byte Dim Mg2flag As Byte Dim Mg3flag As Byte Dim Mg4flag As Byte Dim Mg1time As Integer Dim Mg2time As Integer Dim Mg3time As Integer Dim Mg4time As Integer Dim I As Integer Const Timervorgabe = 131 On Timer0 Timer_irq Enable Timer0 Enable Interrupts Mg1flag = 0 Mg2flag = 0 Mg3flag = 0 Mg4flag = 0 Mg1time = 0 Mg2time = 0 Mg3time = 0 Mg4time = 0 Do Loop End Timer_irq: Timer0 = Timervorgabe If Mg1time = 0 Then If Mg1flag = 0 Then Mg1time = Rnd(10) + 46 '46 weil ich gerne 51 +- 5 ms hätte Mg1 = 1 Mg1flag = 1 Else Mg1time = 10 Mg1 = 0 Mg1flag = 0 End If End If If Mg2time = 0 Then If Mg2flag = 0 Then Mg2time = Rnd(10) + 46 Mg2 = 1 mg2flag = 1 Else mg2time = 10 mg2 = 0 mg2flag = 0 End If End If If Mg3time = 0 Then If mg3flag = 0 Then mg3time = Rnd(10) + 81 mg3 = 1 mg3flag = 1 Else mg3time = 10 mg3 = 0 mg3flag = 0 End If End If If mg4time = 0 Then If mg4flag = 0 Then mg4time = Rnd(10) + 81 mg4 = 1 mg4flag = 1 Else mg4time = 10 mg4 = 0 mg4flag = 0 End If End If Mg1time = Mg1time - 1 Mg2time = Mg2time - 1 Mg3time = Mg3time - 1 Mg4time = Mg4time - 1 Return
EDIT: Ok ich muss die Fuses für 8Mhz setzen. Mit 1Mhz schafft er die IRQ nicht rechtzeitig zu beenden. Bei 8Mhz schafft er es ganz locker.
@Mic: Deine Lösung scheint schonmal etwas kürzer zu sein. Das werde ich mir nachher mal genauer ansehen. Durch den Toggle Befehl würde ich ja schonmal die Flags und deren Abfrage sparen.
Danke
Gruß Daniel
Lesezeichen