Hallo,
ich habe mir einen FIFO-Puffer mit 3 Message Objekten gebildet, um
CAN-Pakete zu Empfangen und zu einem späteren Zeitpunkt zu bearbeiten.
Objekt Liste von CAN Node 1 sieht folgendermassen aus:
Message Object 0-1 => FIFO-Puffer Objekte
Message Object 2 => FIFO Base Object
Ich nutze die von Dave generierte Funktion CAN_ubReadFIFO um aktuelle
Nachrichten aus dem FIFO-Puffer zu laden und dann zu bearbeiten.
main(void)
{
...
while(1)
{
CAN_ubReadFIFO(2,&receive);
wait(500); // Verzögerung
P3_DATA = receive.datenByte1;
}
}
Leider gibt die Funktion CAN_ubReadFIFO nur das erste CAN Paket (über
den als Paramter übergebenen Zeiger) das ankommt zurück (Rückgabewert
der Funktion ist 1, was dafür steht, dass ein neues CAN-Pakete über den
Zeiger zurückgegeben wurde). Bei jedem weiteren gibt die Funktion den
Wert 0 zurück, was laut Funktionsbeschreibung aussagt, dass keine neuen
Pakete vorliegen.
Nun weiss ich leider nicht ob das Problem an der Funktion liegt oder das
angekommene Paket gar nicht erst in den FIFO-Puffer eingetragen wurde
und deshalb die Funktion nichts zurück liefert.
Muss ich noch etwas beachten, evtl. in DAVE ?