Moin!
Der Titel ist schon meine Frage.
Bascom und AVR sind ja schwer ins Koma zu bringen. Da muss man schon ganz wilde Sachen machen, aber
innerhalb einer ISR I"C-Befehle...damit gehts und zwar sofort!
Ist das normal? Gibt es da einen Trick?
Muss ich denn erst umständlich in der ISR einen Flag setzen und diesen im Hauptprogramm umsetzen?
isr:
Ausgang1_d = 0
Gosub I2c_ausgaberoutine
return
I2c_ausgaberoutine:
Ausgang_1 = 0
If Ausgang1_a = 1 Then Ausgang_1 = Ausgang_1 + 1
If Ausgang1_b = 1 Then Ausgang_1 = Ausgang_1 + 2
If Ausgang1_c = 1 Then Ausgang_1 = Ausgang_1 + 4
If Ausgang1_d = 1 Then Ausgang_1 = Ausgang_1 + 8
If Ausgang1_e = 1 Then Ausgang_1 = Ausgang_1 + 16
If Ausgang1_f = 1 Then Ausgang_1 = Ausgang_1 + 32
If Ausgang1_g = 1 Then Ausgang_1 = Ausgang_1 + 64
If Ausgang1_h = 1 Then Ausgang_1 = Ausgang_1 + 128
I2cstart
I2cwbyte Pcf85741
I2cwbyte Ausgang_1
I2cstop
Return
Der Titel ist schon meine Frage.
Bascom und AVR sind ja schwer ins Koma zu bringen. Da muss man schon ganz wilde Sachen machen, aber
innerhalb einer ISR I"C-Befehle...damit gehts und zwar sofort!
Ist das normal? Gibt es da einen Trick?
Muss ich denn erst umständlich in der ISR einen Flag setzen und diesen im Hauptprogramm umsetzen?
isr:
Ausgang1_d = 0
Gosub I2c_ausgaberoutine
return
I2c_ausgaberoutine:
Ausgang_1 = 0
If Ausgang1_a = 1 Then Ausgang_1 = Ausgang_1 + 1
If Ausgang1_b = 1 Then Ausgang_1 = Ausgang_1 + 2
If Ausgang1_c = 1 Then Ausgang_1 = Ausgang_1 + 4
If Ausgang1_d = 1 Then Ausgang_1 = Ausgang_1 + 8
If Ausgang1_e = 1 Then Ausgang_1 = Ausgang_1 + 16
If Ausgang1_f = 1 Then Ausgang_1 = Ausgang_1 + 32
If Ausgang1_g = 1 Then Ausgang_1 = Ausgang_1 + 64
If Ausgang1_h = 1 Then Ausgang_1 = Ausgang_1 + 128
I2cstart
I2cwbyte Pcf85741
I2cwbyte Ausgang_1
I2cstop
Return