Gast
#558404
Hallo! Ich hab bei meinem Infineon XC886 aus 16 Message Objects einen FIFO-Puffer gebildet, um CAN-Pakete zu Empfangen und zu einem späteren Zeitpunkt zu bearbeiten (wenn CPU-Zeit vorhanden ist). Mein Programm habe ich dazu mit Dave konfiguriert. Ich nutze CAN-Node 0. Die Message Object Liste von CAN Node 0 sieht folgendermassen aus: Message Object 0 => Wird zum Senden genutzt Message Object 1-16 => FIFO-Puffer Objekte Message Object 17 => 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. In meinem Testaufbau wird alle 5 Sekunden ein CAN-Paket an den XC886 gesendet (wird mit Oszi+CAN-Analyse auch noch überprüft). 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. irgend einen Wert/Bit setzen, nachdem ein CAN-Paket aus dem FIFO-Puffer gelesen wurde, damit das nächste CAN-Paket wieder korrekt bearbeitet wird? Auch Beispiel-Code wäre bestimmt sehr hilfreich für mich. Schon mal danke für die zahlreichen Antworten :) Daniel