Forum: Compiler & IDEs Atmega644 AVR-Studio -> ADC-Free Running Mode simulieren


von Martin Z. (mzenzes)


Lesenswert?

Hallo

Wollte nur mal eine kleine Anekdote zum besten geben. Hat mich einen 
geschlagenen Nachmittag gekostet, das herauszufinden.

Und zwar habe eine Initialisierung für einen ATmega644 geschrieben, die 
mir den AD-Wandler im Free-Running mode einstellt. Mehr nicht. Das 
wollte ich testen, mit AVR-Studio.

Hex kompiliert und reingeladen - es funktionierte nicht. Das ADSC-Bit 
war zwar nach dem Init gesetzt, und die erste Wandlung wurde 
durchgeführt. Allerdings wurde es nach dem Interrupt nicht wieder 
neugesetzt (wie es im Free-Running mode sein sollte). Also suchte ich 
stundenlang an der Initialisierung herum, bis ich auf die Idee kam, das 
ganze trotz nciht laufender Simulation mal zu flashen - siehe da, es 
Funktionierte.

Weis jemand von den Profis, warum das so passierte? Gibt es noch mehr 
Ecken, die nicht/schlecht simuliert werden?

Hier noch (für die die es interessiert) die genutzte Initialisierung.
 DDRA  &= ~0xff;
 ADMUX = ( 0 << REFS1) | ( 0 << REFS0 );
 ADCSRA = ( 1 << ADEN ) | ( 1 << ADSC ) | ( 1 << ADATE ) | ( 1 << ADPS2 
) | ( 1 << ADPS1 ) | ( 1 << ADPS0 ) | ( 1 << ADIE );
 ADCSRB = ( 0 << ADTS2 ) | ( 0 << ADTS1 ) | ( 0 << ADTS0 );
Mit besten Grüßen
Martin Zenzes

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ich benutze zwar AVR Studio nicht (weil ich keins der Betriebssysteme
benutzen möchte, auf denen es ausschließlich läuft), aber meiner
Meinung nach gibt's irgendwo eine (Hilfe?-) Datei, in der dokumentiert
ist, was alles nicht simuliert wird.

von Martin Z. (mzenzes)


Lesenswert?

Hallo

Hm, in der Hilfe-Datei steht zwar tasächlich was davon, das der 
AD-Wandler zum Teil nicht funktionert. Aber nicht explizit, was genau 
kaputt ist. Naja. Was will man erwarten. Vieles andere funktioniert!

Hab dann noch was gesucht (hätt ich mal vorher tun sollen) und den 
Beitrag "ADC AVR 8535" hier gefunden. Scheint also 
wirklich so wie vermutet zu sein.

Gibt es denn noch andere Hardware-Simulatoren für freiere 
Betriebsysteme? Welche nutzt du? Welches ist zu empehlen? Jedesmal ne VM 
hochzufahren, nur um AVRstudio zu starten ist wirklich etwas mühsam...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Martin Zenzes wrote:

> Gibt es denn noch andere Hardware-Simulatoren für freiere
> Betriebsysteme?

Es gibt simulavr und simulavrxx.  Zumindest simulavr ist gerade im
Bereich der Peripherie-Simulation völlig unterbelichtet, simulavrxx
soll da zwar besser sein, aber scheitert irgendwie an der
Infrastruktur.  Man muss sich da schon ziemlich tief reinknien, bevor
man es 1.) überhaupt erstmal gebaut bekommt und 2.) dann auch
benutzen kann.

Da man aber die Umgebung des Controllers sowieso nur mittelmäßig
bis gar nicht simulieren kann, benutze ich Simulationen höchstens
mal für paar algorithmische Tests, ansonsten Emulation via JTAG oder
debugWire für die Praxis.

von Martin Z. (mzenzes)


Lesenswert?

Hm. Schade!
Dann werd ich mich mal so weiterbehelfen.
Aber auf jedenfall Danke für die schnellen Antworten!

von Martin T. (marathon)


Lesenswert?

Martin Zenzes wrote:
> Hm. Schade!
> Dann werd ich mich mal so weiterbehelfen.
> Aber auf jedenfall Danke für die schnellen Antworten!

Hallo, kann das Phänomen bestätigen.
Bin an der gleichen Stelle mit einem ATMega168 in der Simulation 
aufgelaufen.
Mein Ausweg:
Habe auf den AVR Simulator V2 (Preview) umgestellt.
Der hat das Problem nicht.

Bin Durch Euren Beitrag drauf gekommen.

Danke
Martin

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Martin Thomas wrote:

> Habe auf den AVR Simulator V2 (Preview) umgestellt.

Sicher sowieso eine gute Idee.  Der komplette Digitalteil im V2-
Simulator entspricht systembedingt 1:1 der Hardware.  (Nur der
Analogteil muss nach wie vor manuell hinzu gefügt werden.)

von Peter H. (pehe)


Lesenswert?

Mit VMLab läßt sich der Free Running Mode simulieren.
Aber der Timer-triggered Mode geht dort auch nicht :-(
Und der AVR Simulator V2 kennt meinen Atmega 32 nicht ...
Es ist zum wahnsinnig werden.

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.