Forum: Mikrocontroller und Digitale Elektronik AVR ATMega88PA Programm funktioniert mit Breakpoint, ohne nicht!


von Björn M. (bonna)


Lesenswert?

Hallo Zusammen!

Ich habe folgenden Aufbau:
Winows XP, aktuellste Updates installiert
Hardware mit ATMega88PA Controller
AVRDragon zum deguggen via debugWire
IAR AVR-EW 4.10A, mit "no optimizations" eingestellt
AVR Studio 4.18b716

Nun kurz zum Programm:
Ich will Licht über einen Taster ein und ausschalten. Dazu muss ich 
einen AD-Kanal benutzen (leider, so ist das Layout). Die AD-Werte 
(10bit) liegen bei 1023 bei Taster nicht gedrückt, bzw. bis maximal 256 
Taster gedrückt. Solange der Taster gedrückt wird, soll nichts 
passieren, erst wenn er wieder losgelassen wird, da später auch noch 
dimmen implementiert werden soll.

Jetzt zum Problem:
Programm geschrieben, ausprobiert, geht nicht :( , aber nicht schlimm, 
man kann ja debuggen.
Also debuggen gestarten . Breakpoints an den relevanten Stellen gesetzt 
und siehe da, Programm wird doch korrekt durchlaufen :) Licht geht an, 
bzw. aus.
Also wieder probiert ohne Breakpoints geht doch nicht :(. Dabei ist das 
Programm wirklich sehr simpel gehalten und die Dauer des Betätigens des 
Tasters ist in beiden Fällen nahezu identisch (unterschied im us bis ms 
Bereich). Übrigens doktor ich jetzt schon gut echte 24 Stunden an diesem 
Problem und so langsam will ich den Fehler dem AVRStudio oder dem 
AVRDragon zuweisen.

Kann mir bitte jemand sagen, was das setzen von Breakpoints bewirkt, 
bzw. warum das Programm mit Breakpoints läuft und ohne nicht?
Gruß und vielen Dank, Bonna

von holger (Gast)


Lesenswert?

>Kann mir bitte jemand sagen, was das setzen von Breakpoints bewirkt,
>bzw. warum das Programm mit Breakpoints läuft und ohne nicht?

Am Breakpoint hält das Programm an. Das verschafft wohl
irgendeinem Vorgang Zeit fertig zu werden.

von coder (Gast)


Lesenswert?

Ohne dein Programm zu kennen kann ich auch nur raten... hast du 
vielleicht ein Problem mit prellenden Tasten?

von Björn M. (bonna)


Lesenswert?

Ok. Das ist mir auch bekannt.
Das Programm wartet über eine While Schleife das Beenden einer 
AD-Umwandlung ab bevor es weiterfährt. In der Schleife hängt es auch 
nicht, da andere Funktionalitäten klappen. Desweiteren sind alle 
Interrupts deaktiviert.
Ich wüsste nicht, was noch während der Breakpoint Pause 
weiterabgearbeitet werden muss.

von Anton (Gast)


Lesenswert?

Wie gesagt, ohne Prog wird es schwer zu helfen.
Prellende Tasten können durchaus auch sehr unterschiedliche
Ergebnisse des ADC hervorrufen.
Meines Wissens wird der µP bei einem Breakpoint sowieso gestoppt,
damit kann das Programm nichts mehr tun (oder Fertig machen, außer
einer Interupt-Routine die gerade vor den Breakpoint gestartet wurde)

von Björn M. (bonna)


Lesenswert?

Jaa, Leute!

Ich müsste jetzt eigentlich bis zum Mittelpunkt der Erde versinken, so 
sehr schäme ich mich. Ihr hattet natürlich alle Recht. Da die Hardware 
keine Entprellung hat, muss ich natürlich eine in die Software 
integrieren.
Das kommt davon, wenn man nur alle paar Jahre mal etwas Software 
schreibt. Asche auf mein Haupt und Euch allen vielen Dank und noch einen 
schönen Sonntagabend.

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
Noch kein Account? Hier anmelden.