Hallo zusammen,
der letzte Beitrag zu diesem Thema ist ja schon einige Zeit her. Zeit genug um ihn wieder zu erwecken =D>
Ich habe nochmal ein paar grundsätzliche Fragen:
1. Wieso werden die Register immer hintereinander beschrieben z.B.
z.B. Mcp2515_bitmodify Canctrl , &B11101000 , &B00001000
Die zweite hebt doch die erste Anweisung auf?!
2. Die Idee von Vits, das Bit 3 (OSM) auf 1 zu setzen und damit eine fortlaufende Übertragung zu stoppen hat leider nichts gebracht!
Müsste man das Problem nicht eigentlich in den Buffern suchen?
Wenn diese ihre Meldung gesendet haben, also Buffer0, 1 und 2 durchlaufen wurden, könnte die Nachricht darin wieder gelöscht werden.
Im Code erfolgt dies doch auch jeweils am Ende der jeweiligen Bufferanweisung durch ein Reset, oder?
Code:
Send_buffer2:
Hilf1 = Id / 8
Idh = Hilf1
Hilf1 = Idh * 8
Hilf1 = Id - Hilf1
Hilf1 = Hilf1 * 32
Idl = Hilf1
Mcp2515_bitmodify Txb2ctrl , &B00000011 , &B00000011
'Standard ID einstellen
Mcp2515_write_register Txb2sidh , Idh
Mcp2515_write_register Txb2sidl , Idl
'Nachrichtenlänge einstellen (DFL)
Mcp2515_write_register Txb2dlc , Dfl
'Daten
Mcp2515_write_register Txb2d0 , Db0(1)
Mcp2515_write_register Txb2d1 , Db0(2)
Mcp2515_write_register Txb2d2 , Db0(3)
Mcp2515_write_register Txb2d3 , Db0(4)
Mcp2515_write_register Txb2d4 , Db0(5)
Mcp2515_write_register Txb2d5 , Db0(6)
Mcp2515_write_register Txb2d6 , Db0(7)
Mcp2515_write_register Txb2d7 , Db0(8)
'nachricht versenden
Reset Css
Waitus 10
Mcphilf = Spi_rts2
Spdr = Mcphilf
Do
Loop Until Spsr.spif = 1
Waitus 10
Set Css
' Print "gesendet Buffer-2"
Waitms 50
Return
Außerdem wird das Register vor der eigentlichen Übertragung beschrieben
Mcp2515_bitmodify Txb2ctrl , &B00000011 , &B00000011
Wieso wird das Bit 6 nach Abschluss der Übertragung nicht nachträglich gesetzt? Oder liege ich jetzt völlig falsch?
Edit: Hätte ich fast vergessen! Die Fortlaufende Übertragung erfolgt immer aus dem letzten Buffer. Die beiden ersten senden nur einmal.
Ich habs mit zwei versucht, der Effekt ist der selbe.
D.h. der Inhalt des Vorgängers wurde doch mit der Übertragung des aktuellen Buffers gelöscht, oder?
Lesezeichen