Pfad:
Home =>
Gerd's AVR-Simulator
(This page in English:
)
Gerd's AVR Assembler Simulator
AVR-Assembler-Simulator für das schrittweise Ausführen von
Assemblerprogrammen - mit vielen Features und Extras.
Hier noch die Seite für Simulatorhasser!
- Simuliert AVR 8-Bit-Mikrocontroller aller Typen (ATtiny, ATmega, etc.) in
Assembler.
- Als ob man in den Controller schlüpft und sehen kann, was er mit deinem
Quellcode so alles nacheinander anstellt.
- Nur der Quellcode ist nötig (in *.asm-Format).
- Assembliert den Quellcode ratzfatz mit dem eingebauten Assembler gavrasm.
- Ermöglicht die volle Kontrolle über Register, Flaggen, Speicher,
Ports, Timer/Counter, AD-Wandler, EEPROM und SRAM und vieles andere mehr.
- Alle Anzeigen können bequem beobachtet werden und werden nur wenn
gewünscht angezeigt, keine unnötigen Fenster stören und lenken
vom Wesentlichen ab.
- Auch Interrupts sind kein Hexenwerk mehr: alles wird anschaulich angezeigt
und korrekt verarbeitet: beim RETI erlischt die Interrupt-Anzeige.
- Kommt auch mit wechselnden Taktfrequenzen locker zurecht: einfach im Quelltext
eine Konstante mit .equ clock = 1234567 definieren und schon ist der Takt
bequem umgestellt.
- Geeignet für Neuentwicklungen, zum Fehlersuchen in bestehenden Projekten,
aber auch für ältere Projekte, weil alle alten AVR-Typen enthalten sind.
- Alles-in-einem-Lösung: echt stand-alone, enthält alles Nötige
was es braucht schon selbst, schnell und ressourcenschonend, kein Hinzuladen von
irgendwelchen weiteren Programmbestandteilen, keine Abhängigkeiten von
anderen Programmen oder Bibliotheken, kein Konfigurieren und Installieren:
läuft sofort und "klappt hervorragend und auf Anhieb." (ein
neuer User).
- Sehr gut geeignet auch zum Erlernen von Assembler, da jede Codezeile sofort
assembliert und simuliert werden kann und man sofort sieht, was der Controller
damit nun genau macht. Von wegen: "Assembler ist kompliziert", nein:
es ist viel durchschaubarer und viel leichter verstehbar als Hochsprachen:
keine undurchsichtigen Bibliotheken und von anderen programmierter Code. Alles
hast Du selbst gemacht, alles ist nachvollziehbar, auch ohne Spezialkenntnisse
(neben AVR-Assembler natürlich).
- einfache Bedienung, ohne große Einarbeitung anwendbar,
- arbeitet unter Windows und Linux, ausführbare 64-Bit-Versionen
downloadbar,
- Lazarus-Pascal-Quellcode kostenlos verfügbar und modifizierbar,
kann daher auch für viele andere Betriebssysteme kompiliert werden,
für die es Lazarus gibt,
- Schneller und komfortabler Start von neuen Assembler-Projekten,
erzeugt Standard-Text-Vorlagen für gegliederten Assembler-Quellcode
in einem kurzen oder in einem ausführlichen Format aus, sowohl
für Programme im Linearformat als auch Interrupt-orientierte,
Links die ausführliche Version, rechts die mit vorausgefüllten
Interrupt-Vektoren.
Auch eine Kurzversion ohne jeden Schnickschnack ist verfügbar, eher
für "schnell mal was ausprobieren",
- Editor für die Modifikation von Assembler-Quellcode, mit vielen
hilfreichen Funktionen,
- Der Editor ab Version 1.7 hat auch eine vielfach konfigurierbare Option zur
Syntax-Hervorhebung
- Der Editor ab Version 1.8 ermöglicht die Auswahl aus 457 verschiedenen AVR-Typen
mit den unterschiedlichen Verpackungsarten durch Angabe der benötigten Hardware:
- Vergessen wie eine Instruktion in AVR Assembler heißt, wieviel Takte sie
braucht oder welche Flags sie beeinflusst? Kein Problem mit avr_sim: Der Editor
ab Version 2.1 gibt eine durchsuchbare Liste der Instruktionen aus:
- Anzeige von Header-Symbolen, Ports und Interrupts des betreffenden
AVR-Typs,
- Anzeige der Hardware bei PDIP- und SOIC-Packungen,
- Einfügen der Hardware in den Quelltext mit einem Tastendruck (F2):
- Integrierter Assembler gavrasm zum schnellen Modifizieren und Assemblieren
von Code,
- Komfortables Setzen und Rücksetzen von Haltepunkten im Code, Speichern und
Laden von Haltepunkten aus der Projektdatei,
- Ab Version 2.3: Scan- und Alarmfunktion: zählt, piepst und/oder hält an,
wenn ein Register oder ein Registerpaar, ein Portregister oder ein Portregisterpaar,
eine SRAM-Speicherstelle oder ein SRAM-Paar beschrieben, mit einem einstellbaren Wert
beschrieben oder gelesen wird,
- Steuerung des Simulationsvorganges mit Simulatorfenster, gibt im Registerfenster
jetzt auch dezimale Zahlen und Registerpaare aus,
- Einfache Überwachung von I/O-Ports und Timern, fast alles kann auch manuell
geändert werden (Bits, Interrupts, Vorteiler, etc.) ,
- Darstellung von SRAM-Inhalten,
- Darstellung von EEPROM-Inhalten sowie korrektes Timing bei Schreib- und
Lese-Operationen in/aus dem EEPROM,
- Darstellung und Simulation des Watchdogs,
- Darstellung, Simulation und Manipulation von ADC-Wandlerkanälen, ab Version
2.7 einschließlich konfigurierbaren Differentialkanälen und Temperaturmessung,
und
- als Extra eine Designhilfe mit einer 12/16-Tasten-Widerstandsmatrix und
Spannungseingabe über die Tastatur, ab Version 2.7 auch mit internen
Referenzspannungen,
sowie mit Anzeige der Tastenspannungen,
- einstellbares Vierkanal-Oszilloskop zur Darstellung von Digitalsignalen
an wählbaren Ausgabepins und an Output-Compare-Pins von Timern,
- Darstellung von R/2R-Analogwerten an beliebigen Ports mit wählbarer Auflösung
in bis zu vier Kanälen gleichzeitig in wählbaren Farben,
- ab Version 2.3: Darstellung von Analogwerten des internen DAC-Wandlers in AVRs, die
solche intern haben.
- Ab Version 2.8: Digital- und Analogsignale können auch
übereinander gestapelt angezeigt werden.
Die Zeitskala kann nun auch auf einen festen Zeitpunkt fixiert werden.
- ab Version 2.4: zweites Fenster in den Quellcode für Code-Vergleiche
oder Kopieraktionen,
- ab Version 2.5: komfortables Speichern aller geänderten Register oder
beliebiger auswählbarer Register, Portregister und/oder SRAM-Inhalte in
externen tabulator-separierten .csv-Dateien zum Einlesen und zur Auswertung
in Spreadsheets,
- Ab Version 2.6: Bequemes Springen im Code beim Simulieren (Jump to), auch als
Unterprogrammaufruf mit der Adresse im Stack (Call) oder für einen simulierten
Interrupt mit gelöschter I-Flagge (Call ISR),
- Neu in Version 2.9: avr_sim simuliert jetzt auch das interrupt-gesteuerte
Senden und Empfangen über das (oder die) seriellen UART(s):
- Neu ab Version 2.9: avr_sim führt eine Nutzerstatistik im Internet.
Gezählt werden die von den Nutzern verwendeten AVR-Typen und die
offenen Fenster bei der Simulation. Keine Angst: alles erfolgt anonym und
transparent: du kannst in Deinem Browser sehen, was genau da übermittelt
wird.
Version 2.8 der Software korrigiert viele Fehler und bietet bei der
Scope-Darstellung neue Möglichkeiten (Stapeln von Darstellungen,
Fixierung der Zeitskala).
Bei der Linux-Version tritt bei meiner Version ein Fehler bei Timern
auf: das Prescaler-Fenster zeigt eigenartig fehlerhafte Inhalte, der
TCNT wird nicht aktualisiert. Ich hoffe, dass das nur bei meinem Linux
der Fall ist. Fehlerberichte darüber sind sehr willkommen.
2.1 Lazarus Pascal Quellcode
Der Quellcode ist für Lazarus Pascal geschrieben und für Windows und
Linux verfügbar.
2.2 Ausführbare Versionen
Die ausführbaren 64-Bit-Dateien sind für Windows und für Linux
verfügbar (beides als 64-Bit-Versionen).
Für Windows gibt es eine Kurzversion und eine Debug-Version mit aktiviertem
Range-Checking.
32-Bit-Versionen und ausführbare Versionen für andere Betriebssysteme
müssen mit den Quellcode-Dateien und mit Lazarus erzeugt werden. Wie man
das macht steht im Handbuch ausführlich beschrieben.
Das deutschsprachige Handbuch enthält wichtige Hinweise zur Installation von
avr_sim, zum Kompilieren von avr_sim und stellt alle verfügbaren Features von
avr_sim an bebilderten Beispielen dar.
Für diejenigen, die gerne wissen möchten, wie die Software intern
aufgebaut ist und funktioniert, habe ich einige Hinweise in eine englischsprachige
Beschreibung (im Download unter "Description") abgelegt.
2.4 Alle verfügbaren Versionen
Zur Download-Seite
3 Fehlerberichte
Aufgrund der ziemlich hohen Komplexität der Aufgabenstellung
(alleine die Entwicklung der AVR hat fast 2 Jahrzehnte gedauert und
die Innereien eines AT90S1200 unterscheiden sich gewaltig von denen
in einem ATtiny814 oder einem ATmega324) ist es unvermeidlich, dass
die Software immer noch Fehler enthält und spezielle
Hardware-Eigenschaften nicht korrekt abbildet. Da es mich ziemlich
überfordert, die mehr als 150 verschiedenen AVR-Typen mit ihren
jeweils Dutzenden von besonderen Hardware-Features auszutesten, bin
ich auf Eure Hilfe angewiesen. Falls Ihr also auf Fehler und fehlende
Features stoßt, bitte ich um eine aussagekräftige
Rückmeldung, möglichst mit Quellcode (Email-Adresse auf
der Titelseite des Handbuchs). Ich bin gerne bereit, in meiner
reichlich bemessenen Freizeit (Rentner) solche Fehler zu berichtigen.
Nur so funktioniert es, die Software noch zu verbessern. Danke
für jeden Hinweis ...
Version 2.8 zeigt ein eigenartiges Verhalten unter Linux: das
Prescaler-Feld von Timern zeigt fehlerhafte Inhalte an und
aktualisiert dann TCNT auch nicht mehr.
Version 2.7 hat einen Fehler beim Simulieren von Timern in ganz
bestimmten Modi: es treten geisterhafte Interrupts des Typs OCnA
auch bei Timern auf, die gar nicht aktiv sind, und die zum Stop
der Simulation entweder durch Range Check Errors oder durch den
unbearbeiteten Interrupt führen. Als Abhilfe kann der
betreffende Compare-Wert auf irgendeinen Wert größer
als Null eingestellt werden, der Zähler selbst bleibt aber
inaktiv.
Die früher veröffentlichte Version 2.6 hat einen Fehler beim
Simulieren von Timern. Der macht sich dadurch bemerkbar, dass der
Vorteiler nicht angezeigt wird. Bitte bei Timer-Simulationen die
Version 2.5 verwenden.
4.1 Monatliche Zugriffe
Dies hier zeigt die monatlichen Zugriffe auf die avr_sim-Webseite
und die Downloads der Linux- und Windows-Dateien. Es sieht so aus, als
ob die Handbücher zu den Versionen ebenfalls recht populär
sind.
4.2 Zugriffe nach Versionen
Dies hier zeigt die Zugriffe auf die verschiedenen Versionen
von avr_sim. Neue Versionen erscheinen etwa alle drei bis vier Monate.
4.3 Zugriffe nach ausführbaren Versionen und Quellcode
Der Anteil der Selber-Kompilierer an den Gesamt-Downloads ist
erstaunlich hoch.
5 Links zu avr_sim-Anwendungen und -Nutzungen
Die folgenden Links führen zu Anwendungen von avr_sim auf meiner Webseite:
- Der Anfängerkurs hier
verwendet avr_sim als Instrument zur Einführung in das erste Assembler-Projekt
und um den Effekt von Assembler-Instruktionen zu visualisieren.
- Der Mikroelektronik-Kurs
hier
verwendet avr_sim um wichtige AVR-Instruktionen und grundlegende Programmiertechniken
bei der Assembler-Programmierung verstehbar zu machen.
- Diese Darstellung
beschreibt die Ausführung von Instruktionscodes bei AVR und verwendet avr_sim,
um die internen Befehlsabläufe aufzuzeigen.
- Dieses Dokument
verwendet avr_sim um die Ausführung von Interrupts zu demonstrieren.
- Diese Seite
über die Handhabung von Datum und Uhrzeit macht avr_asm anschaulich.
- Hier
wendet die Seite die avr_sim-Typ-Auswahl ausführlich an.
- Dies hier
verwendet den ADC-Simulator im avr_sim um die Programmausführung beim
Einlesen von ADC-Werten bei Tastenstapeln zu veranschaulichen.
- Dies verwendet avr_sim's
Fähigkeiten zur Zeitmessung um die Dauer von Zeitschleifen in
LCD-Anwendungen zu messen.
Anthony Peck hat avr_sim zur Verfolgung seiner Erzeugung von Zufallszahlen mit einem
ATtiny13 in seinem
Blog,
verwendet und davon auch ein Video
veröffentlicht.
Bitte sendet mir weitere Anwendungsberichte von avr_sim an gavrasm (bei)
avr-asm-tutorial.net zu, ich freue mich darüber.
©2017 - 2022 by
http://www.avr-asm-tutorial.net