Gast
#1324872
hallo zusammen,
ich habe ein Programm geschrieben für die CAN-Kommunikation. Das
Programm ist interrupt gesteuert. Meine Problem ist: Wenn ich das
Programm laufen lasse, wird Can_transmit1(msg1) und Can_transmit2(msg2)
aufgerufen, aber er springt nur einmal in der ISR mit der Funktion
Can_transmit2(msg2).Ich verliere die Daten, die vom esrten Befehl
kommen. Meine Frage ist: wie kann ich Can_transmit1(msg1)und nach einige
Zeit Can_transmit2(msg2) aufrufen und jedesmal ohne die Daten zu
verlieren.So sieht ungefähr mein main-Function aus.
Danke
main.c
volatile unsigned char can_flag;/*variable for can interrupt*/
int main(void)
{
can_flag=0;
cli();
CAN_Init();
UART_Init();
Can_transmit1(msg1);
for(int i = 0; i < 255; i++)
{
b++;
}
Can_transmit2(msg2);
sei();
while(1)
{
if (1 == can_flag) /* of the ISR data has been fully received */
cli();
Convert_pack_canFrame_to_UartFormat(ptr_canStruct);
can_flag = 0; /* restore flag */
sei();
}
}
Danke