sato
15.01.2010, 22:56
Hallo
Ich benutze die Kommerzielle Version von der MCS I2cslave library um Daten von den master zum slave su senden. Beide Platinen sind mit den Atmega2561 bestückt.
Ich habe nun den code im Master etwas geändert so das die Bytes immer im Interval von 10 Sekunden gesendet werden, und sie da, der Print Befehl in der ISR routine I2c_master_has_data: wird jedesmal 10 in 10 Sekunden mit den empfangenen Byte ausgeführt. Also, nach dem Empfang des ersten Byte wird nicht mehr zum Do Loop zurück gekehrt, es wartet in der ISR routine auf den nächsten Byte, das kann nicht richtig sein!!!
Hat jemand eine Idee?
Grüsse
Sato
'Slave Teil
Config I2cslave = &H82 , Int = Int0 , Timer = Timer0
Dim Bfake As Byte
Do
'Die Print Anweisung wird hier immer durchgeführt fals kein Byte
'von Master empfangen wird
Print #1 , "Byte Geted " ; Hex(bfake)
Loop
I2c_master_has_data:
Bfake = _a1
'Nach den ersten empfangenes Byte, wird diese Routine nicht mehr
'zum Do Loop verlassen, es wird schön brav in 10 in 10 Sekunden
'der empfangene Byte mit Print angezeigt. Das sollte doch nicht sein
Print #1 , "Get_received " ; Hex(bfake)
Return
Ich benutze die Kommerzielle Version von der MCS I2cslave library um Daten von den master zum slave su senden. Beide Platinen sind mit den Atmega2561 bestückt.
Ich habe nun den code im Master etwas geändert so das die Bytes immer im Interval von 10 Sekunden gesendet werden, und sie da, der Print Befehl in der ISR routine I2c_master_has_data: wird jedesmal 10 in 10 Sekunden mit den empfangenen Byte ausgeführt. Also, nach dem Empfang des ersten Byte wird nicht mehr zum Do Loop zurück gekehrt, es wartet in der ISR routine auf den nächsten Byte, das kann nicht richtig sein!!!
Hat jemand eine Idee?
Grüsse
Sato
'Slave Teil
Config I2cslave = &H82 , Int = Int0 , Timer = Timer0
Dim Bfake As Byte
Do
'Die Print Anweisung wird hier immer durchgeführt fals kein Byte
'von Master empfangen wird
Print #1 , "Byte Geted " ; Hex(bfake)
Loop
I2c_master_has_data:
Bfake = _a1
'Nach den ersten empfangenes Byte, wird diese Routine nicht mehr
'zum Do Loop verlassen, es wird schön brav in 10 in 10 Sekunden
'der empfangene Byte mit Print angezeigt. Das sollte doch nicht sein
Print #1 , "Get_received " ; Hex(bfake)
Return