Spontane Resets

Die Elektronik des c't-Bot
schmart@

Beitrag von schmart@ » 20 Feb 2006, 12:06

cgiesen hat geschrieben: OK, habe ich verstanden. Aber so wie ich das sehe, wird doch durch setzen des Flags diese Funktion erst eingeschaltet?!?!?!
Carsten
Aus diesem Grund steht auch das Fragezeichen im Text!

Viele Grüße
Martin

chrimo

Beitrag von chrimo » 20 Feb 2006, 12:14

Gut wäre eine StatusRegisterAusgabe auf den UART, dann kann man dieses besser protokollieren. Nach dem Reset wird das LCD ja gleich wieder initialisiert und alles ist weg...
Manchmal kann man einfach nicht schnell genug gucken 8-)

Chrimo

cgiesen

Beitrag von cgiesen » 20 Feb 2006, 12:36

chrimo hat geschrieben:Gut wäre eine StatusRegisterAusgabe auf den UART, dann kann man dieses besser protokollieren. Nach dem Reset wird das LCD ja gleich wieder initialisiert und alles ist weg...
Manchmal kann man einfach nicht schnell genug gucken 8-)

Chrimo
Da kommt bald Abhilfe. Ich habe einen Patch eingereicht, wo es möglich ist, mit der Fernbedienung zwischen 4 Screens zu wechseln.
Da kann man diese Info dann bequem auf Screen 2, 3 oder 4 machen ;)

Solbald ich zu Hause bin, gebe ich mich dran.

LG

Carsten

marvin
Wiki Master
Wiki Master
Beiträge: 415
Registriert: 18 Jan 2006, 16:21
Wohnort: Berlin
Kontaktdaten:

Beitrag von marvin » 20 Feb 2006, 12:42

@carsten den Patch mit der Seiten-Umschaltung könntest du auch mal hier posten. Bis sowas im CVS auftaucht, kann dauern. So hatte ich mir das ja auch gedacht, die Statusanzeigen auf einer eigenen Seite darzustellen.

@chrimo Über die UART kann man sowas natürlich genausogut ausgeben lassen. Ein RS232 Modul hat aber leider nicht jeder.

Gruß marvin

cgiesen

Beitrag von cgiesen » 20 Feb 2006, 13:32

marvin hat geschrieben:@carsten den Patch mit der Seiten-Umschaltung könntest du auch mal hier posten. Bis sowas im CVS auftaucht, kann dauern. So hatte ich mir das ja auch gedacht, die Statusanzeigen auf einer eigenen Seite darzustellen.
Kann ich gerne machen. Benjamin Benz sagte nur, er wer nicht sehr aufgeräumt.

cu

Carsten
Dateianhänge
screen.zip
(7.94 KiB) 360-mal heruntergeladen

chrimo

Beitrag von chrimo » 20 Feb 2006, 13:36

Wie ?

Kein c't-COM-auf-LAN-Adapter oder c't-COM-auf-WLAN-Adapter vorhanden ?

8-)
Chrimo

cgiesen

Beitrag von cgiesen » 20 Feb 2006, 17:59

[quote="marvin"]Laß dir soch mal das MCU Control & Status Register ausgeben.
Dann müßte man die Ursache des Resets schon eingrenzen können.

[syntax="c"]
unsigned char reset_flag;
...
reset_flag = MCUCSR & 0x1F;
MCUCSR = 0;

[/syntax]

Was soll ich sagen, der Wert ist 0.
Drücke ich Reset ist er 2
Nach dem Flashen ist er 3

Nach einem 'Reset' ist er 0!

Ist das gar kein Reset?
Aber warum startet er dann wieder von vorn?

cu

Carsten

marvin
Wiki Master
Wiki Master
Beiträge: 415
Registriert: 18 Jan 2006, 16:21
Wohnort: Berlin
Kontaktdaten:

Beitrag von marvin » 20 Feb 2006, 19:28

Hallo Carsten,

Das sieht nach Software Reset aus. Durch Stack-Overflow o.ä.
Könnte aber auch durch Spannungseinbrüche passieren. Wenn Brownout Detection disabled ist, macht die CPU bei zu niedriger Spannung, was sie will.
Das könnte man ausschließen indem man in den FuseBits BODEN und evtl. BODLEVEL programmiert. Es gibt dann zwar immer noch Resets, aber das entsprechende Bit im MCUCSR müßte dann gesetzt sein.

Werd jetzt mal deinen Patch ausprobieren, und beobachten ob bei mir auch sowas passiert.

Gruß marvin

cgiesen

Beitrag von cgiesen » 20 Feb 2006, 19:45

Hallo,

ich habe BODEN eingeschaltet und den BODLEVEL nicht.
Somit sollte der Level bei 4V liegen.

Der erste 'Reset' war wieder da, das Flag ist weiter Null.

cu

Carsten

marvin
Wiki Master
Wiki Master
Beiträge: 415
Registriert: 18 Jan 2006, 16:21
Wohnort: Berlin
Kontaktdaten:

Beitrag von marvin » 20 Feb 2006, 21:16

Hi Carsten,

habe jetzt deine Display-Umschaltung implementiert. Funktioniert großartig.
Vielen Dank.

Allerdings bei meinem Bot nach über 1 Stunde Dauerbetrieb, bisher kein Reset. Auch kein einfrieren bisher.

Gruß marvin

VDX
Friends of Johnny-5
Friends of Johnny-5
Beiträge: 319
Registriert: 26 Jan 2006, 22:43
Wohnort: Großkrotzenburg (Main-Kinzig-Kreis)

Beitrag von VDX » 20 Feb 2006, 23:58

Ich habe bei meinem Bot wohl auch ein seltsames Verhalten:

Flashen OK, Verifizieren OK, Lesen/Vergleichen auch OK ...

Beim Abziehen des Kabels geht's meist schon los mit Dauerresets ...
(wenn Kabel drauf, nur selten ein Neustart/Motor-Anlauf)

Auch sonst nach einem Reset nicht immer gleiches Verhalten - die Abstandssensoren zeigen nur gelegentlich mal sinnvolle Werte an, meist 'hängen' sie um 390 herum, gelegentlich laufen sie gleich au 3FF und dann ändert sich nichts mehr ...

Die LDR und CNY gehen soweit, die Abgrundsensoren (grüne und weiße LED's) schalten die Motoren bei etwa 2 mm Abstand um, der normale Bodenabstand wird schon als Abgrund detektiert?

Habe den Rad-Encoder-CNY's bei eingebautem Rad noch keine Reaktion entlocken können, die sitzen wohl zu nahe auf der Encoder-Scheibe - wenn ich mit der Encoder-Scheibe in etwa 5 bis 8 mm Abstand rumwackle, geht's ...

IR mit einer Präsentations-Fernbedienung noch ohne Funktion, muß mal 'n paar andere raussuchen ...

Der Maussensor ist gelegentlich aktiv, meist nicht, Empfindlichkeit/Anzeige nur knapp unter der Linse ...

Mache morgen oder übermorgen weiter ...

Ciao, V2

schmart@

Beitrag von schmart@ » 21 Feb 2006, 08:06

cgiesen hat geschrieben:Hallo,

ich habe BODEN eingeschaltet und den BODLEVEL nicht.
Somit sollte der Level bei 4V liegen.

Der erste 'Reset' war wieder da, das Flag ist weiter Null.

cu

Carsten
BODEN war wohl nicht der Bringer, bei mir sind die Resets auch wieder da. Was mir komisch vorkommt sind die Wertebereiche der Sensoren. Welche Werte kommen bei euch bei minimaler Annäherung der Abstandssensoren vor. Bei mir liegen die Werte nie unter 1E0. In der CT ist auf einer Abbildung zu sehen, dass diese Werte auch kleiner als 100 werden können. Auch schwanken sie sehr stark. Wenn ich einen der Sharps abziehe, sind die Schwankungen nicht mehr so stark und wie gesagt die Resets hören auf. Auch die Werte des linken Liniensensors sind sehr klein. Kann es sein, dass bei meinem Controller die AC-DC Wandlung nicht so klappt? Der MC braucht doch dafür eine Vergleichsspannung, wo kann man die abgreifen und welchen Wert muss die haben?

Viele Grüße
Martin

marvin
Wiki Master
Wiki Master
Beiträge: 415
Registriert: 18 Jan 2006, 16:21
Wohnort: Berlin
Kontaktdaten:

Beitrag von marvin » 21 Feb 2006, 09:39

Hallo Martin,

mit den Abstandssensoren ist es bei mir das gleiche. Minimal Werte 1E0. Auch die starken Schwankungen konnte ich nachvollziehen. Wie das verbessert werden kann, hatte ich hier schon mal beschrieben.

Eine Messreihe mit meinen Werten befindet sich hier

Die Vergleichsspannung wird intern aus der Versorgungsspannung abgeleitet.
Ist wohl auf VCC eingestellt. Über ein Register kann man auch VCC/2 einstellen. Aber Vorsicht, die Spannung an den A/D Wandler Pins darf dann auch nur noch maximal VCC/2 betragen.

Zum Problem mit deinem Liniensensor habe ich keine Idee. Bei mir funktionieren beide gleich gut/schlecht.

Gruß marvin

schmart@

Beitrag von schmart@ » 21 Feb 2006, 21:16

Das mit den schwankenden Messwerten ist momentan auch zweitrangig. Viel nerviger ist, dass mein Bot zwar mit dem Programm wandfolger.hex läuft, das Coding aus dem cvs jedoch den Bot nur stupide geradeaus laufen lässt. Irgendwas stimmt mit der Motorsteuerung nicht. Auf den nun umschaltbaren Screens des LCDs sieht man, dass der Bot die Befehle der IR-FB wahrnimmt. Die Geschwindigkeit oder Richtung der Motoren ändert sich jedoch nicht.

Alle Sensoren zeigen halbwegs plausible Werte an. LCD,LEDs, IR und Sensoren funktionieren. Der Motor will jedoch mit dem Coding aus dem CVS nicht tun. Prinzipiell funktioniert die Motorsteuerung jedoch. Kann es sein, dass an der Initialisierung etwas nicht stimmt?

Viele Grüße
Martin

cgiesen

Beitrag von cgiesen » 21 Feb 2006, 21:23

Hallo,

ich hatte anfangs das gleiche Problem.
Ich habe mir dann die Sensor-Werte vorgenommen, und gerade Abstandssensor und Kantensensor auf 'ordentliche' Werte gesetzt.

Wie das geht stand hier schon im Forum. Ich habe mich an den Werte orientiert die auf dem Display standen. Aber Achtung diese sind in HEX im Code werden die Werte aber in Dezimal angegeben, also ein 0x davor schreiben.

Als ich das hatte, reagierte mein BOT auf die Fernbedienung.
Es kommen halt nur immer diese Resets (die KEINE sind) dazwischen.

mfg

Carsten

Antworten