Hallo zusammen, ich nutze an einem ATMega128 zwei MCP2515/MCP2551. (AVR 18,3 MHz und die MCPs mit 16MHz, SPI mit AVR/2) Die Schaltung ist als Gateway ausgelegt und arbeitet mit je 100KBit. Durchschnittlich passieren 120 Frames bidirektional das Gateway. Im grunde funzt alles soweit perfekt. Das was ich bereits eingebunden habe ist der Watchdog. Dieser wird bei der Verarbeitung einer bestimmten ID alle 100msec zurückgesetzt. Bei BUS-off wird der AVR eben über den Watchdog neugestartet. Beim letzten Test habe ich zyklisch TEC und REC einfach so ausgelesen und die Zähler waren immer "0". Hier meine Frage: Ich suche nach einem Denkanstoss, Hinweis oder einem guten Beispiel eine möglichst "sinnvolle und schnelle Fehlerbehandlung" durchführen zu können. Die Überlegung geht vom zyklischen auslesen der TEC und REC Werte die ja eine Tendenz anzeigen bevor der MCP auf BUS-passiv oder BUS-off geht oder dem einbinden in den Interrupt (Verzweigung in der ISR) oder auslesen des EFLG – ERROR FLAG Registers. Ich möchte dem AVR nur unnötige Rechenzeit ersparen oder eben sinnvoll ein setzen. Danke für jeden Denkanstoss. Gruß Peter PS: die Suchfunktion gibt da nichts her................
Hi Peter, > Die Schaltung ist als Gateway ausgelegt und arbeitet mit je 100KBit. > Durchschnittlich passieren 120 Frames bidirektional das Gateway. Im da schreibst Du ein bisschen zu wenig um beurteilen zu können, ob das geht/ausreicht. Ziel einer Fehlerbehandlung ist ja: a) Erkennen des Fehlers und b) Ersatzfunktion, falls möglich. Frage ist also, was soll überhaupt gemacht werden. Gateway heisst ja auch, das Du irgendwo einen Empfänger sitzen hast, der die Daten empfangen soll. Was erwartet der, wenn: a) durch Kabelbruch, Verlust Versorgungsspannung, Tranceiverdefekt etc. die Frames ausbleiben, b) was wird erwartet, wenn durch Einstrahlung eine Verfälschung der Nutzdaten auftritt und c) wenn der Sender durch Softwaredefekt "Dauerstrich" sendet, d.h. falsches Raster oder unverändert immer die gleichen Daten. (weil Software ist "hängen geblieben") Das sind die Fragen, die Du Dir stellen musst. Und natürlich, welche Kritikalität die einzelnen Ausfallmöglichkeiten haben. Wenn der Empfänger z.B. nur die Daten mitloggen muss, kannst Du dir u.U. die Fehlerbehandlung ersparen. Dann fehlen halt nur ein paar Daten. Schönen Tag noch, Thomas
Hallo Thomas, ja manchmal sieht man den Wald vor lauter Bäumen nicht und beschreibt einfach zuwenig. Das Gateway sitz zwischen einem Kombiinstrument und einem Radio. Es ist keine sicherheitsrelevante Anwendung. CAN_O ist die Seite des Kombiinstrumentes und CAN_1 ist die Seite des Radios. Aktiviert sind in beiden MCP2515 die RX-Interrupt um angezeigt zubekommen „neue Nachricht“ vorhanden. Gesammelte Ausgabe am MCP durch den INT Pin. Fällt der CAN_0 aus oder die ID Zündung wird nicht übertragen (0x271 wird überwacht) startet der Watchdog das Gateway komplett neu. Nach 10 Versuchen stellt sich das Gateway dann ganz ab. Fällt die Spannungsversorung am Gateway aus wird es quasi gebrückt, der Betrieb läuft ohne Gateway mit direkter Verbindung zwischen den Geräten weiter. Sinn des Gateway ist es bei Bedarf den Dateninhalt von ein paar IDs zu verändern. Der Inhalt der Nutzdaten wird nicht auf Plausibilität geprüft, lediglich wird anhand einzelner Daten die Funktion des Gateway beeinflusst. Ansonsten werden nur die restlichen Datenpakete in beide Richtungen durchgeroutet. Die EMV Empfindlichkeit ist erstmal kein Thema…………….. Also überwacht wird schon: - CAN_O auf Funktion durch Vorhandensein der Zündungsdaten auf 0x271 - Spannungsversorgung des Gateway So wäre also noch der CAN_1 in die Überwachung einzubauen. !!! Der Gedanke ging in Richtung EFLG Register, TEC oder REC um vor dem BUS-Off eingreifen zu können oder benachrichtigt zu werden (eventuell im Eeprom speichern). Nach einem Spannugs on/off bzw. Hardwarereset sind die betreffenden Register der MCP2515 wieder leer und Anhaltspunkte wären verloren.
interessant, welche Daten an Radio tust du den manipulieren? Geschwindigkeit oder Zündung um Filme während der Fahrt ansehen zu können?
Hallo, für die Darstellung von Filmen oder wenn man diese Möglichkeit nutzen will gibt es andere Vorgehensweisen. Da muß man diesen aufwendigen Weg nicht gehen. Ich beschreibe die IDs neu die für die Darstellung der Sender im Kombiinstrument zuständig sind. So habe ich 2 x 8 Zeichen für meine freie Verwendung. Gruß Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.