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
Guckst Du hier und suchst nach Logic Analyzer: http://www.mikrocontroller.net/articles/AVR-Simulation
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
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.
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.
Hi Nur zu deiner Information: Der Simulator funktioniert nicht bei allen PWM-Modi korrekt. Und Mode14 gehört zu dieser Kategorie. MfG Spess
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?
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
Hi
>Funktioniert es denn beim AVR Studio 5?
Weiss ich leider nicht. Aber was hast du für ein Problem?
MfG Spess
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!
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
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 ...
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.
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
>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 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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.