Forum: Mikrocontroller und Digitale Elektronik Avr Studio Simulation Pin auf virtuellem Oszi ausgeben


von Jonix (Gast)


Lesenswert?

Hallo zusammen,
ich bin gerade dabei, ein wenig mit PWMs am Atmega 8 herumzubasteln. Nun 
würde ich mir das resultierende Signal der Simulation im AVR Studio 
gerne mal graphisch anschauen, damit ich sehen kann ob auch alles 
stimmt.
Meine Frage: Gibt es ein Programm, was mir die Werte eines definierten 
Pins graphisch darstellt, also eine Art Oszilloskop Simulator?
Für die Display- und Taster Simulation gibt es ja auch ein solches 
Programm.

Habe auch schon überall gesucht, aber nichts dazu gefunden.

Vielen Dank schonmal für eure Hilfe,

Gruß Jonas

von Andreas H. (andreas_h16)


Lesenswert?

Guckst Du hier und suchst nach Logic Analyzer:

http://www.mikrocontroller.net/articles/AVR-Simulation

von Jonix (Gast)


Lesenswert?

Vielen Dank für die Schnelle Antwort! Das ist genau das wonach ich 
suche. Ich war auch schon genau auf dieser Seite, den Punkt "Logic 
Analalyzer" habe ich aber schlichtweg übersehen, vielleicht auch weil 
ich den Namen nicht kannte.

Gruß Jonas

von Andreas H. (andreas_h16)


Lesenswert?

Unter
>"Logic Analalyzer"
versteht man auch wieder was anderes ...

P.S.: AVR Studio 4!

von Jonix (Gast)


Lesenswert?

So, habe inzwischen noch etwas mit dem LogAnalyzer herumprobiert, aber 
ich bekomme einfach keine Ausgabe. Auch die Log Datei vom Avr Simulator 
ist komplett leer.
Mir ist aufgefallen, dass sich beim Ablauf meines Programms der PWM nur 
auf "PinB" ausgegeben wird. Sollte das nicht "PortB" sein? Der Logger 
überwacht ja auch nur "PortB".

Hier ist mein Programm, es ist eigentlich das gleiche wie das AVR PWM 
Tutorial
1
include "m8def.inc"
2
3
.def temp=r16;
4
5
ldi temp, 0b11111111  ; Alle Pins als Ausgang
6
out DDRB, temp        ; Ins DDR schreiben
7
8
ldi temp, 0b00011011  ; 0b00011010 Fast PWM Mode 14,  , Prescaler 64
9
out TCCR1B, temp;
10
ldi temp, 0b10000010  ; 0b1... für Non-Inverting PWM
11
out TCCR1A, temp
12
13
ldi temp, 0b00010011  ; Wert für 20ms = 5000 Takte = 0b1001110001000
14
out ICR1H, temp
15
ldi temp, 0b10001000
16
out ICR1L, temp
17
18
19
ldi temp, 0b00000001  ; Wert für 1,5ms ANzeit (375 Takte)
20
out OCR1AH, temp      ; In Vergleichsregister OCR1AH schreiben
21
ldi temp, 0b01110111
22
out OCR1AL, temp  
23
24
25
Hauptprogramm:
26
rjmp Hauptprogramm

Vielleicht erkennt ja jemand meinen Fehler, ich habe schon gefühlte 100 
mal alles kontrolliert aber nichts gefunden.

von Jonix (Gast)


Lesenswert?

Hier ist der ganze Assembler Code nochmal etwas übersichtlicher gemacht, 
vielleicht fällt es dann ja leichter, den Fehler zu finden:
1
.include "m8def.inc"
2
3
.def temp=r16;
4
5
ldi temp, 0b11111111; Alle Pins als Ausgang
6
out DDRB, temp    ; Ins DDR schreiben
7
8
ldi temp, 1<<WGM13 | 1<<WGM12 | 1<<CS10 | 1<<CS11 ; Fast PWM Mode 14, Prescaler 64
9
out TCCR1B, temp;
10
ldi temp, 1<<COM1A1 | 1<<WGM11                    ; für Non-Inverting PWM
11
out TCCR1A, temp
12
13
ldi temp, HIGH (5000)                             ; Wert für 20ms = 5000 Takte
14
out ICR1H, temp
15
ldi temp, LOW (5000)
16
out ICR1L, temp
17
18
19
ldi temp, HIGH (375)         ; Wert für 1,5ms ANzeit (375 Takte)
20
out OCR1AH, temp             ; In Vergleichsregister OCR1AL schreiben
21
ldi temp, LOW (375)
22
out OCR1AL, temp  
23
24
25
Hauptprogramm:
26
rjmp Hauptprogramm

Falls es wichtig ist, mein Clock ist 16 MHZ.

von spess53 (Gast)


Lesenswert?

Hi

Nur zu deiner Information: Der Simulator funktioniert nicht bei allen 
PWM-Modi korrekt. Und Mode14 gehört zu dieser Kategorie.

MfG Spess

von Jonix (Gast)


Lesenswert?

Ok, Danke für die Info.

Dann könnte ich ja einfach Mode 15 benutzen mit OCR1A also TOP-Wert. 
Weiß vielleicht jemand, ob denn Mode 15 im AVR Simulator funktioniert?

von spess53 (Gast)


Lesenswert?

Hi

>Weiß vielleicht jemand, ob denn Mode 15 im AVR Simulator funktioniert?

Nein:

http://www.mikrocontroller.net/articles/AVR-Studio_Bugs#Simulation_der_16-Bit_Timer

MfG Spess

von Jonix (Gast)


Lesenswert?

Funktioniert es denn beim AVR Studio 5?

von spess53 (Gast)


Lesenswert?

Hi

>Funktioniert es denn beim AVR Studio 5?

Weiss ich leider nicht. Aber was hast du für ein Problem?

MfG Spess

von Jonix (Gast)


Lesenswert?

Ich habe noch kein Problem. Ich will mir einfach nur das PWM Signal 
graphisch ausgeben lassen, damit ich später bei einem eventuellen 
Projekt das PWM Signal als Fehlerquelle ausschließen kann. Ein Problem 
hätte ich erst, wenn später etwas nicht funktioniert und es dann am Ende 
in Wirklichkeit einfach nur das PWM Signal ist, was nicht so aussieht 
wie es soll.
Wenn das ganze nicht virtuell geht, dann muss ich das Programm eben erst 
auf den µC Flashen und mir dann live das Signal mit dem Oszi anschauen.

Aber trotzdem vielen Dank nochmal für eure Hilfe!

von spess53 (Gast)


Lesenswert?

Hi

>Wenn das ganze nicht virtuell geht, dann muss ich das Programm eben erst
>auf den µC Flashen und mir dann live das Signal mit dem Oszi anschauen.

Wenn du schon einen Oszi hast, dann verstehe ich echt nicht, warum du 
Tage mit dem Simulator vergeudest?

MfG Spess

von Jonix (Gast)


Lesenswert?

Ich hatte ja nicht damit gerechnet, dass es so lange dauert und dass der 
Simulator verbuggt ist. Bisher habe ich immer den Simulator benutzt und 
er hat auch immer funktioniert.
Der Vorteil vom Simulator ist ja gerade, dass man nicht nur sieht DASS 
es nicht funktioniert, sondern auch WARUM es nicht funktioniert. Dabei 
hilft es mir immer, zu sehen wie der µC "innen" aussieht, sprich Werte 
des Timers, Register, Flags ...

von Andreas H. (andreas_h16)


Lesenswert?

Debuggen ginge mit JTAG ja auch hinreichend gut. Der 8er kann aber glaub 
ich nur ISP. Es bietet sich aber evtl. ein Eval-Board an, mit dem man 
zum Testen auch einen größeren einsetzen kann. Ich nehme gern den 32 zum 
Debuggen und schreibe den Code kompatibel zum 48,168, etc.

Das mit dem virtuellen Logic Analyzer hab ich persönlich aufgegeben, da 
würde ich zum anfangen in den OpenBench investieren. Das Ding macht mir 
für einen Fuffziger echt Freude.

von spess53 (Gast)


Lesenswert?

HI

>Debuggen ginge mit JTAG ja auch hinreichend gut. Der 8er kann aber glaub
>ich nur ISP. Es bietet sich aber evtl. ein Eval-Board an, mit dem man
>zum Testen auch einen größeren einsetzen kann. Ich nehme gern den 32 zum
>Debuggen und schreibe den Code kompatibel zum 48,168, etc.
>Das mit dem virtuellen Logic Analyzer hab ich persönlich aufgegeben, da
>würde ich zum anfangen in den OpenBench investieren. Das Ding macht mir
>für einen Fuffziger echt Freude.

Für den Preis gibt es auch ab und zu einen AVR-Dragon. Wozu dann Second 
Hand Hardware.

MfG Spess

von Andreas H. (andreas_h16)


Lesenswert?

>Für den Preis gibt es auch ab und zu einen AVR-Dragon. Wozu dann Second
Hand Hardware.

Weil der OpenBench Logic Sniffer ein Logic Analyzer ist, nicht Second 
Hand, aber Low Cost.

Der Dragon ist ein JTAG und ISP, HV Programmer (auch Low Cost), aber 
eben kein Logic Analyzer.

Zum Debuggen und Signale graphisch anschauen braucht man beides.

Die Funktion Logic Analyzer + JTAG (ARM) in einem, gibts IMHO eigentlich 
über Sump nur beim Bus Piraten. Das hab ich mir aber noch nicht genauer 
angesehen.

BTW, für 50€ gibts den Drachen eigentlich auch nicht nur ab und zu, 
sondern eigentlich schon eine ganze Zeit lang, wenn man googelt.

von Jonix (Gast)


Lesenswert?

Von JTAG habe ich auch schon gehört, wie das genau funktionieren soll 
habe ich aber noch nie verstanden. Habe auch schon mal kurz danach 
gegooglet, aber nicht wirklich viele Infos darüber gefunden.
Könnt ihr mir vielleicht ganz kurz erklären, wie man mit einer 
Schnittstelle debuggen soll? Kann man vielleicht per PC das Programm auf 
dem Testboard starten/stoppen, und man bekommt den Status aller 
Ausgangspins angezeigt?

Ich habe sogar ein Board was verschiedene µC unterstützt, es hat sogar 
eine JTAG Schnittstelle. Kann ich das irgendwie mit dem AVR Studio 
verwenden, oder unterstützt das auch hier nur kommerzielle Boards, wie 
auch beim Programmieren?

von Andreas H. (andreas_h16)


Lesenswert?

AVR Studio und Dragon über JTAG ist in etwa so, wie der Simulator sein 
sollte (in circuit debugging, wie 
http://www.rn-wissen.de/index.php/JTAG).

Wenn man jetzt noch etwas in die Peripherie oder Busse sehen möchte, 
dann z.B. sowas 
http://dangerousprototypes.com/docs/Open_Bench_Logic_Sniffer, oder auch 
zum anregen sowas: http://dangerousprototypes.com/bus-pirate-manual/

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.