PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann ein Chip Registereinträge verliehren?



Kaiser-F
01.01.2007, 22:46
Hallo Leute!

Ich habe ein Platinchen gebaut, mit dem man sich am CAN-Bus vom Auto spielen kann.

Verwendete Hardware:
Mikrocontroller: ATMega32
CAN-Controller: MCP2515

Nunja, bei längerem Betrieb reagiert auf einmal der CAN-Controller nicht mehr.
Um "genau" zu sein, nach ca. 3Tagen.

Mache ich ein AEG (Ausschalten, Einschalten, Geht), dann funktioniert es wieder für 3 Tage.

Nun ist die Frage:
Ist es Möglich, dass der MCP2515 CAN-Controller seine
Registereinträger auf irgendeine Weise verliehrt nach 3 Tagen?

Ratber
01.01.2007, 23:25
So allgemine gesagt: .......JA

Das der Controller nicht mehr reagiert kann aber ganz andere Gründe haben.

Könnte zb. auch ein Überlauf sein oder ein Programfehler der ins Nirvana zeigt.

Kaiser-F
01.01.2007, 23:31
Hallo Ratber,

Danke für Deine Antwort!

Einen Programmfehler oder Pufferüberlauf schließe ich in diesem Fall mal aus,

Das Programm läuft ständig im "Kreis" und macht innerhalb
von Sekunden die gleichen Aufgaben.

Aber generell ist sowas möglich sagst Du oder?

Weil ich werd jatzt mal eine zeitlich gesteuerte Re-Initialisierung einbauen
für die CAN-Controller.

Ratber
01.01.2007, 23:36
Ja,wie gesagt,Prinzipiell möglich aber die genaue Ursache kann vielfältig sein.



Das Programm läuft ständig im "Kreis" und macht innerhalb
von Sekunden die gleichen Aufgaben.

Irgendein Stack im Spiel oder vieleicht knappe Timings ?

Was noch sein könnte wäre ein unterbrochenes Protokoll so das der Contr. in einer Schleife klebt ?
Irgendeine Fehlerabfrage eingebaut ?

Breakpoints mit Ausgabe auf LCD/LED etc. wären vieleicht angesagt.
Der Zeitrahmen ist ja scheinbar reproduzierbar.

Hast du schon rausgefunden ob der Ausfall Zeitlich bedingt oder von der Zahl der Operationen abhängig ist ?


Edit:
Die grausligsten Schreibfehler entfernt

DrZoidberg
01.01.2007, 23:38
Tritt dieser Fehler immer nach ganz genau der gleichen Zeitspanne auf? In dem Fall ist es wahrscheinlich doch ein Puffer oder Zählerüberlauf.

Kaiser-F
01.01.2007, 23:45
Hallo,

Der Atmel macht auch noch andere Sachen, wie auch ein
LCD ansteuern. Diese Aufgaben erfüllt er weiterhin.

Nur gesendet und empfangen wird nichts mehr.
Der Puffer ist aber gegen Überlauf geschützt.

Nagut was heißt geschützt, er verweirft das was nicht reinpasst...

Aber dann muß er trotzdem anstehende Sachen senden...
(Normalerweise)

Ich werd mal mehr Beobachtungspunkte einbauen.

Aber ein Verlust der Registerenträge kann ja auch plausiebel klingen oder?
Aber immer so gleich...

Ich kann es zeitlich nicht genau messen, wann der Fehler eintritt,
aber su um die 3 Tage dauert es...

Ratber
02.01.2007, 00:01
Ja,wie gesagt,die Zeit oder die Zahl bis zum ausfall wäre ein hinweis.

Das der Controller weiterarbeitet würde das mehr auf den CAN-Treiber verschieben oder doch auf das Programm wenn vieleicht aufgrund eines Fehlers unsinn geschrieben würde.

Wie gesagt,Wenn,wenn,wenn.
So aus dem Stehgreif nicht einfach.
Dazu das der Can-Bus Fluch und Segen zugleich ist. :D


Naja,schau mal in Ruhe.

Kaiser-F
02.01.2007, 00:12
Jo, aber jetzt geh ich mal ins Betti.

Danke für die Hilfe!

SprinterSB
02.01.2007, 09:16
Aus ser Ferne kann man da wenig sagen. Neben Silicon-Bugs (also Fehler in der Hardware) können es Fehler in der Software oder durch andere Ereignisse sein, zB Transienten auf der Spannungsversorgung oder ein alpha-Teilchen zischt durch den Speicher.

Die häufigsten SW-Fehler wurden schon aufgezählt. Daneben ist ein häufiger Fehler, daß bei Interrupt-Programmierung nicht-atomar auf Variablen zugegriffen wird. zB wird auf einer 8-Bit-Architektur ein 16-Bit-Wert gelesen/geschrieben, was die Architektur von Haquse aus nicht kann. Der Zugriff muss daher auf zwei 8-Bit-Zugriffe aufgeteilt werden. Geschieht zwischen diesen Zugriffen ein Interrupt, der die Variable verändert, hat man schon 8 Bit gelesen, die anderen 8 noch nicht *autsch*.

Auffällig ist, daß es alle 3 Tage passiert. Evtl auch eine Interrupt-Bedingung, daß 2 Interrupts zusammen auftreten oder einer verloren geht oder oder oder....

Richard
02.01.2007, 10:52
Hallo Leute!
Nun ist die Frage:
Ist es Möglich, dass der MCP2515 CAN-Controller seine
Registereinträger auf irgendeine Weise verliehrt nach 3 Tagen?

Moin moin,

Es gibt bei den CAN Bausteinen Fehlertolerannte Typen welche einen Selbsttest sowie Bus Test eingebaut haben. Dort werden interne Fehlerzähler hochgezählt und wenn die "überlaufen" geht der Kontroller vom Bus um den "Rest der Welt" nicht zu blockieren. Ob und wie man diese Fehlerzähler auslesen kann um zu prüfen das Fehler vorgefallen sind? Siehe auch http://de.wikipedia.org/wiki/Controller_Area_Network

Gruß Richard

Kaiser-F
02.01.2007, 11:23
Hallo,

@SprinterSB:
Danke für die Erklärung... Ich werde dem mal nachgehen!

@Richard:
Auch vielen Dank für den Hinweis! Den Fehlerzähler hab ich total vergessen!
Den werde ich auch mal auslesen lassen!
Ich vermute sogar dass das die heiße Spur ist!