Forum: Mikrocontroller und Digitale Elektronik AVRStudio simuliert falsch?


von Andi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

bei dem kleinen Testprogramm im Anhang bin ich auf ein mekwürdiges
Verhalten des AVR Studio 4.08 Simulators gestossen. Das Programm
erzeugt ein interruptgesteuertes, jitterfreies 25kHz-Signal am Pin PB1.
Das macht es tatsächlich wenn man es in einen ATtiny15L hineinlädt.
Nicht so im Simulator. Der erzeugt gar keine Frequenz. Er setzt das
"output compare interrupt flag" OCF1A im "timer interrupt flag
register" TIFR beim Ausführen des Interrupts nicht automatisch zurück.
Das sollte er aber laut Datenblatt machen und der ATtiny15 machts ja
auch so. Im Simulator funktionierts aber erst richtig, wenn das
Interrupt-flag explizit durch Programmcode zurückgestzt wird. Ohne
diese Massnahme springt der Simulator nach Beenden der
Interrupt-Routine gleich wieder hinein.
Für mich sieht das ganz nach einem Fehler im Simulator aus. Oder mach
ich was falsch?

Noch eine weitere Auffälligkeit: Wird PB1 nicht als Ausgang
initialisiert, zeigt der Simulator dennoch den Pegelwechsel am
eigentlichen Portpin an. Der ATtiny15 machts wie im Datenblatt
beschrieben, wenn der Pin nicht als Ausgang initialisiert ist kommt
dort auch nichts raus.

Würde mich freuen wenn jemand meinen Versuch wiederholen könnte, oder
eine Idee hat was ich falsch mache. Eigentlich kann kaum glauben dass
der Simulator so voller Bugs ist, aber ich schlag mich jetzt schon ein
paar Tage damit herum.

Andi

von Pfi (Gast)


Lesenswert?

Hallo!

Kann dir leider nicht helfen, kann aber sagen, dass ich mit dem
Simulieren von Interrupts auch nicht wirklich zufrieden bin. Habe aber
bis heute nicht herausgefunden weshalb das nicht so läuft wie ich will
und bin auch an Tipps interessiert....

Grüsse

von Hannes Lux (Gast)


Lesenswert?

Hallo...

Das bei Tiny15 das Timer-Int-Flag nicht zurückgesetzt wird, kann ich
bestätigen. Da bin ich auch schon drüber gestolpert.
Allerdings sehe ich das nicht so verbissen, denn ein so uralter Typ wie
z.B. der 1200 wurde von Versionen vor 4.08 garnicht simuliert.
Man sollte also nicht zu viel verlangen...

Das Schreiben auf die Port-Bits (portx) bei ddrx=0 ist ok. Damit
schaltet man doch die internen Pull-Up-Widerstände. Das Portregister
bekommt also diesen Wert, schaltet ihn aber nicht (niederohmig) zu den
Pins durch...

Bit- & Bytebruch...
...HanneS...

von Hannes Lux (Gast)


Lesenswert?

Wo wir einmal dabei sind,

beim Tiny12 reagiert der Simulator auf den falschen Pin für INT0...

Ich bin sicher, dass es noch mehr solche Bugs gibt...

Bit- & Bytebruch... - ...HanneS...

von Andi (Gast)


Lesenswert?

@Hannes

Richtig, ein Schreiben auf ein Port-Bit im Register PORTB schaltet den
internen pull-up auf den Pin wenn dieser laut dem
Datenrichtungsregister DDRB ein Eingang ist.
Das Testprogramm schreibt aber gar nicht auf die Port-Bits im Register
PORTB. Dort zeigt der Simulator auch nichts an. Das Ändern des
Pegelzustands am Port-Pin (nicht im Register PORTB) macht der Output
Compare Interrupt anscheinend an diesem vorbei. Im Simulator ändert
sich am Inhalt von PORTB nichts, auch wenn der eigentliche Pin toggelt
und es der Simulator auch so anzeigt. Interressant wäre ob PORTB
wirklich nicht durch den Output Compare Interrupt geändert wird oder ob
das auch so ein Bug im Simulator ist. Darüber wie sich der ATtiny15L
nun tatsächlich verhält hab ich im Datenblatt nichts gelesen. Werde das
bei Gelegenheit mal ausprobieren.

Gibt es eigentlich so was wie eine Bugsammlung irgendwo?. Habe beim
googeln nichts gefunden. Wäre vielleicht hier für das Forum nicht
schlecht wenn verifizierte Bugs irgendwo gesammelt werden könnten.

Andi

von Hannes Lux (Gast)


Lesenswert?

Hallo Andi...

Man könnte ja ATMEL über die Bugs informieren (als Frage getarnt). Aber
ich werde das nicht tun, denn mein Englisch ist zu schlecht und die
Gefahr, mich lächerlich zu machen ist irgendwie auch vorhanden, ich bin
noch zu unerfahren...

Beantworte dir mal diese (sarkastisch gemeinten) Fragen:

- Was hast du für ASTUDIO bezahlt?

- Meinst du, dass du/wir bei diesem Preis Anspruch auf ein
  fehlerfreies Programm hast/haben?

- Wird der Simulator von Profis genutzt, wo die (mit teurer Hardware)
  ganz andere Debug-Methoden (ICE) nutzen können?

- Wie wichtig sind wir Hobbybastler der Firma?

- Wollen die Software verkaufen oder AVRs?

Also ich werde da nix unternehmen, ich versuche einfach, damit zu
leben.

Eine Bugsammlung wäre nicht schlecht, Frag doch mal den Forumbetreiber
Andreas, welche Möglichkeiten er für sinnvoll hält (Wiki, ein Thread,
Beitrag im Tutorial usw.).

Bit- & Bytebruch... - ...HanneS...

von Andi (Gast)


Lesenswert?

@Hannes

Die Anfrage an ATMEL hatte ich bereits auf den Weg gebracht, bin mal
gespannt auf die Antwort. Ich gehe einfach davon aus dass Atmel für
jeden Hinweis auf Produktfehler dankbar sein sollte. Vielleicht fliesst
ein Bugfix ja in die nächste Version ein? Dann hätten alle was davon.
Natürlich ist AVRStudio kostenlos :-) und Atmel möchte damit ja neue
Kunden für ihr Produkt begeistern und den Bekanntheitsgrad steigern.
Viele Bastler die einfach mal was ausprobieren wollen aber auch
professionelle Entwickler die sich nicht mit wochenlanger Produktsuche
nach 3rd Party Entwicklungsumgebungen und möglicherweise in den Sand
gesetzten Kosten auseinandersetzten wollen werden im Laufe ihres Lebens
so wahrscheinlich häufiger bei Atmel-Produkten hängenbleiben als sonst.
Kostenlose Entwicklungsumgebungen zur Verfügung zu stellen ist eine
strategische Unternehmensenscheidung die sich meiner Meinung nach
rechnet. Die Strategie scheint aufzugehen, nicht zuletzt deswegen gibts
ja auch dieses Forum. Was bezahlte Software angeht, und da gehören auch
superteure Spezialanwendungen im EDA-Bereich dazu, schaut es ja auch
nicht so gut aus wenn es um Fehlerfreiheit geht. Da lob ich mir Linux,
ist zwar auch nicht fehlerfrei aber dafür garantiert kostenlos ;-)

von Hannes Lux (Gast)


Lesenswert?

Hallo Andi...

Was du schreibst ist völlig richtig.

Auch ich finde es richtig, kostenlos Software und Datenblätter
bereitzustellen, um Jedem die Arbeit mit den Produkten zu ermöglichen.

Das rechne ich ATMEL auch hoch an.

Doch da ich auch schon einige kleinere PC-Software-Projekte
"verbrochen" habe, kann ich den Aufwand nachvollziehen, der in einer
so komplexen Software wie AVR-Studio steckt.

Ich erwarte daher keine unbedingte Fehlerfreiheit.

Selbstverständlich bin ich auch dafür, dass man ATMEL über die
gefundenen Bugs informiert. Nur ich selbst halte mich nicht für
kompetent genug, mit denen einen Dialog zu führen. Dazu ist mein
Englisch und mein Mikrocontroller-Fachwissen zu schlecht.

Außerdem habe ich mit meinen vierundfünfzig Jahren meine Aktivitäten
als "Weltverbesserer" schon hinter mir... ;-))

Achja, was mich am Simulator auch noch stört, ist die Tatsache, dass
bei Auto-Step-Betrieb die Breakpoints nicht beachtet werden... Schade
eigentlich...


Alles Gute, viel Spaß beim Hobby...
Bit- & Bytebruch... - ...HanneS...

von Frank Linde (Gast)


Lesenswert?

Es gibt nun einmal keine fehlerfreie Software. Software wird von
Menschen gemacht und Menschen machen Fehler. Grundsätzlich habe ich
schon den Eindruck, dass ATMEL um die Beseitigung von Fehlern bemüht
ist, insofern macht eine Meldung an ATMEL Sinn, aber man hat
offensichtlich keine allzu großen Resourcen für die Programmierung.
Deshalb vergeht immer recht viel Zeit bis zur nächsten Version und mit
jeder Neuerung (neue Chips müssen unterstützt werden) steigt natürlich
auch wieder die Gefahr von neuen Fehlern.

Und außerdem: Simulation zählt nicht - im wirklichen Leben ist ohnehin
alles anders. ;-)

Gruß, Frank

von Andi (Gast)


Lesenswert?

@Hannes
Im AVR Studio 4.08 gibts eine Einstellung unter Tools - Options... -
Breakpoint - Stop on breakpoint when autostepping. Dann sollte der
Simulator auch im Autostep-Betrieb an Breakpoints anhalten.

@Frank
Atmel ist offenbar wirklich sehr bemüht, hat auch schon geantwortet.

Ich werde noch die Beispieldatei hinmailen und euch auf dem Laufenden
halten.

Andi

von Hannes Lux (Gast)


Lesenswert?

Moin...

Ups...
Das ist die Schattenseite hochkomplexer Software: Man findet die
wichtigen Dinge nicht (weil man nicht auf die Idee kommt, danach zu
suchen)...

Danke, Andi...

Dass Atmel sich meldete, finde ich gut...

Bit- & Bytebruch...
...HanneS...

von Andi (Gast)


Lesenswert?

Also hier nun die Antwort von Atmel. Bin äusserst positiv überrascht
über die schnelle Erledigung durch Atmel:

Dear customer

I have tested your code, and there is a bug in AVR Studio simulator
causing the OCF1A flag not to be automatically cleared after interrupt.
For now I think you will have to manually clear the flag when
simulating your code. This should not be necessary on your real
device.
regarding question (2) it also looks like a bug changes the value of
port pin regardless of the DDRB value.
Thank you very much for reporting these findings to us. The bug is
reported.

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.