PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Reboot bei SPI Anschluss



wuerzi
12.07.2007, 09:03
Hallo

Meine Ausgangssituation ist. 2 Atmel's sollen über den SPI informationen austauschen was soweit auch funktioniert. Nun dient der eine (ATMega32) als Ausgabe Gerät für die Funktione des Anderen (ATMega64). Also der Mega32(SPI Master) wird über einen Stecker mit dem Mega64(SPI Slave) verbunden und begint sobald er strom (über das Kabel) hat mit der SPI kommunikation. Das Funktioniert auch ziemlich gut mein Problem ist nun das sich der Salve von Zeit zu Zeit Resetet(was noch verständlich wäre) oder trotz watchdog kommplet aufhängt .

Statische Aufladungen an den Leitungen sind durch die Beschaltung unterbunden. Der ChipSelect hat einen Pulup damit der Salve bei getrenten Leitungen nicht Selektiert ist und keine sinlosen SPI Interrupts auftreten. Die SPI kommunikation wird über die ISR's abgewickelt. Da der SPI sonst funktioniert kann es kein Prinzipelles Problem sein. Ich habe auch schon aus dem "MCUCSR – MCU Control and Status Register" den Resetgrund ausgelesen dabei kam ich einmal auf einen watchdog und 3 mal (was mir föllig unverständlich ist) auf einen Resetgrund 0.

Vor allem der Reset grund 0 und die Tatsache das sich ein Atmel überhaubt wegen des SPI aufhängen kann ist mir unklar da die Verarbeitungsfunktion auch mit föllig zufälligen Werten zurechtkommt ohne abzustürzen. Die Einzige mir einfallende Erklärung für die beschriebenen Probleme wäre ein ständig ausgelöster SPI-Interrupt was zu einen watchdog reset führen würde. Das erklärt aber weder einen Resetgrund 0 noch wieso ein solcher interupt ständig ausgelöst werden sollte.

Ich bin für alle anregungen dankbar und mir wäre schon sehr mit einer Idee zur eigentlichen Fehlerursache Geholfen.

mfG wuerzi.

darwin.nuernberg
12.07.2007, 09:16
Wie sieht denn die Versorgung aus,
Netzteil gro genug?
tummel sich auf der Versogung (VCC) störsignale?

Probiers erst mal mit einer Kombination von Lade- und Siebkondensatoren.
220uF, 10uF, 100nF und 10nF parallel geschaltet von VCC nach GND und zwar an beiden Modulen

Hat Dein Reset auch einenPullUp?
Hängt der Programmierstecker noch dran (ISP)?

geronet
12.07.2007, 09:18
So was ähnliches hatte ich auch mal, nur mit einem 14 bit ADC als Slave (der wurde dann verdammt heiss). Geholfen haben zwei ganz simple Widerstände zwischen MISO und MOSI mit 1kOhm in Reihe.. seitdem ist der Hänger nicht wieder aufgetreten. Leider kann ich ohne Oszilloskop den wahren Grund nicht herausfinden..

Grüsse, Stefan

PS: föllig mit v ;)

wuerzi
12.07.2007, 09:28
StromVersorgung erfolgt über einen 12Volt Bleiakku (zurzeit von einem 2A Labornetzteil Simuliert) der Gesamtstromverbrauch (noch einige ander Bautiele) im 12V Strompreis betrögt zur Zeit 119 mA die wandlung auf 5V erfolgt über eine SteppII Box von Falcom und ist absolut glat. Beide haben 470 µF Kondensatoren.

Der reset hat einen PullUp und der Programmierstecker ist abgezogen.

wuerzi
12.07.2007, 09:30
Wiederstände hab ich auch schon. Und wie gesagt der trit nicht Regelmäsig auf sindern eher Selten beim an und abstecken.

darwin.nuernberg
12.07.2007, 09:39
na mach noch mindestens 100nF oder 10nF dazu (für die ganz schnellen impulse)


So'n fetter Elko ist etwas träge.


(ich kann mich nicht zurückhalten: Widerstände nicht Wieder... ((Ich Kanntz ja auch niechd Bässer)) )

wuerzi
12.07.2007, 09:49
100 nF hab ich auch drin der zusätzliche 10nF ist etwas schwer umzusetzen da das ganze schon auf Platine ist aber könnte das wirklich zum aufhängen führen bzw. würde da nicht die die Brown-out Dedection losgehen und mir einen entsprechenden Reset Grund anzeigen?

darwin.nuernberg
12.07.2007, 10:01
Na 'kleb' den dann doch provisotisch auf die Lötseite,
allerdings weis ich jetzt auch nicht mehr viel.


Umweltbedingungen (Störeinstrahlung)?
Ich hattte mit meinem C64 oder wars gar noch der VC20 (lang lang ist's her) immer ein ähnliches Problem, wenn eine Leuchstofflampe eingeschaltet wurde.

Möglich wären da viele Verursacher wie Elektrorasierer, Haarfön oder gar ein Heizlüfter (bei dem miesen Wetter (am Gletscherrand)).

wuerzi
12.07.2007, 12:28
hab den 10nF Kondensator jetzt ausprobiert hat aber nichts gebracht. Aufgrund der schweren Reproduzirbarkeit dauern Tests leider sehr lange, weshalb mir eine Idee für die Ursache mehr helfen würde als Schaltungsveränderungen. Externe Faktoren sind annähernd ausschlisbar da genantes Problem an verschiedenen Orten auftrit sowohl in der arabischen Wüste als auch in der deutschen Stadt(obwohl man natürlich nie alle Umweltbedingungen ausschliesen kann).

Die beste Spur die ich sehe sind die reset gründe aus dem MCUCSR - Register besonders das auftreten von 0. Ich denke es erfordert eine art Software workaround wenn die bedingungen eintreten die dies Verursachen. Da ich aber keine ahnung habe wie es zu einer 0 kommen kann weis ich auch nicht wo mein workaround ansetzen muss.

Dennoch vielen dank für die mühe und den tip mit dem 10nF Kondensator der kommt auf die nächste Platine auf jeden fall mit drauf.

wuerzi
16.07.2007, 10:13
hat vieleicht sonst noch jemand eine idee aus einen Softwarereset auslösen kann wenn ohne den WD auszulösen (auser Stack überlauf das ab ich schon ausprobiert)