> - durch das anschließen der M32-Control werden
> programme die in die BASE geflasht wurden nicht ausgeführt,
Nö.
Es sind zwei völlig voneinander unabhängige Mikrocontroller. Die haben erstmal gar nix miteinander zu tun, sind nur lose über den I2C Bus miteinander verbunden.
(so wie eine Netzwerk Verbindung bei einem PC - zwei vernetzte PCs sind auch erstmal unabhängig voneinander, kannst aber natürlich per Remote Desktop oder SSH oder... den einen durch den anderen fernsteuern).
Die Beispielprogramme sind aber drauf ausgelegt das die I2CSlave.hex in die Base geflasht wurde sonst ist eben niemand da der auf die gesendeten Befehle reagiert.
> zugegriffen und durch die befehlsfolge:
Warum Du nun genau diese Befehle rausgekramt hast ist mir nicht so ganz klar. Da wird das ACS eingestellt und der Watchdog Timer aktiviert.
Für move wird CMD_MOVE und die entsprechenden parameter (Geschwindigkeit, Strecke, Richtung) über den Bus übertragen - das ist aber nur EINE I2C Transaktion.
s.
Code:
/**
* Move function - just the same as with RP6Lib!
*/
void move(uint8_t desired_speed, uint8_t dir, uint16_t distance, uint8_t blocking)
{
transmit_buffer[0] = 0;
transmit_buffer[1] = CMD_MOVE;
transmit_buffer[2] = desired_speed;
transmit_buffer[3] = dir;
transmit_buffer[4] = ((distance>>8) & 0xFF);
transmit_buffer[5] = (distance & 0xFF);
I2CTWI_transmitBytes(I2C_RP6_BASE_ADR, transmit_buffer, 6 );
waitForTransmitComplete();
while(blocking && !drive_status.movementComplete)
{
task_checkINT0();
task_I2CTWI();
}
}
Zentral ist dabei
I2CTWI_transmitBytes(I2C_RP6_BASE_ADR, transmit_buffer, 6 );
(alle vorher in das Array geschriebene 6 Bytes über den Bus übertragen)
Der Rest ist nur vor und nacharbeit.
MfG,
SlyD
Lesezeichen