ATMEGA8515, PWM-Beispiel aus dem Wiki funktioniert nicht?

Gast #731935
Lesenswert?
• ▲
▼
Hallo Forum!

Ich habe jetzt gut 3 Stunden im Forum verbracht und trotz x ähnlicher 
Themen immer noch keine Lösung für mein Problem gefunden.

Umgebung: AVR Studio 4.12, STK500 mit ATMEGA8515L

Ich wollte das Software-PWM-Beispiel (Assembler) im Wiki 
(http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM) probieren 
und scheitere immer wieder daran.

Anstelle der im Wiki beschriebenen m8def.inc include ich die für diesen 
Prozessor nötige m8515def.inc.

Problem: Die LED's des STK500 leuchten immer auf "volle Kraft". Auch mit 
"externen" LEDs dasselbe Spiel.

Ist der Prozessor für dieses Beispiel zu schnell?
Vielleicht irgendwas an den Fuse-Bits? (Nur geraten, habe ich irgendwo 
hier aufgeschnappt.)

Ich danke Euch für Eure Geduld und Hilfe.

Vorweihnachtliche Grüße,
Mathias
#731954
Lesenswert?
• ▲
▼
Wohl eher irgendwelche Steuerbits  bei den Timern, die
beim Mega8515 in anderen Registern untergebracht sind.

Da hilft nur eines: Datenblat raus und nachsehen ob
beim Mega8515 die benötigten Bits auch in denselben
Registern untergebracht sind (und eventuell mit
dem Datenblatt des Mega8 vergleichen, ob sie auch
dasselbe bewirken)
Gast #732007
Lesenswert?
• ▲
▼
...gut, ich bin nicht doof aber ich versteh' Bahnhof.

Klar, war lesen kann ist klar im Vorteil aber dafür verstehe ich die 
Materie nicht mal gut genau um zu wissen, woran ich erkenne, wonach ich 
suche.

Vielleicht irgendjemand hier, der dasselbe Problem hat(te)?

Ich hab hier noch nen ATMEGA16, mal gucken, was der sagt...

Danke erstmal, Karl-Heinz
Gast #732036
Lesenswert?
• ▲
▼
Hallo Kai, hallo Kay ;)

Die Leds sind am richtigen Port.
Leider hilft mir der Simulator nicht wirklich weiter.

Den Link lese ich mir heute Abend mal durch und gebe nochmal 
Rückmeldung.

Danke erstmal.
#732175
Lesenswert?
• ▲
▼
Eigentlich ganz einfach:

- Stell mal den Simulator auf ATmega8515
- Cursor auf "main:"
- "Run to Cursor" Strg+F10

zu dem Zeitpunkt hat der schon alle Einstellungen gemacht

Klapp mal TIMER_COUNTER_1/TCCR1A und TIMER_COUNTER_1/TCCR1B in der 
I/O-View auf. Zudem PORTA bis PORTD. Man erkennt z.B., dass PINB1 als 
Ausgang definiert wurde.

Wir mogeln jetzt etwas:
- Schalt mal CS12 aus und dafür CS10 ein.

Das beschleunigt den Timer um Faktor 256, was das Debugging um eben die 
selbe Zeit verkürzt ;)

Wenn du jetzt den Autostep-Modus (Alt+F5) startest, dann siehst du, dass 
der Timer losrennt. Während wir jetzt gespannt darauf warten, dass PINB1 
auf High gesetzt wird passiert was anderes: PIND5 geht auf High!

Ein flüchtiger Blick ins Datenblatt sagt auch warum: auf dem ATmega8 ist 
OC1 = PB1 (wie im Wiki-Code angegeben), auf dem ATmega8515(L) allerdings 
ist OC1 = PD5!
Ändere den unteren Teil einfach wie folgt ab:
1
    ; Den Pin OC1A zu guter letzt noch auf Ausgang schalten
2
    ldi      temp1, 1 << PORTD5 ; Die Notation ist lesbarer,  0b00100000 ist auch gut.
3
    out      DDRD, temp1
und schließ die LEDs an Port D an.

Leider funktioniert das dann in der Simulation immer noch nicht richtig, 
obwohl es das meiner Meinung nach sollte:
1
;     WGM13    WGM12   WGM11    WGM10
2
;      1        1       1        0

Eigentlich sollte der Counter (TCNT1) bis ICR1H laufen... er läuft aber 
nur bis OCR1A ... was nur bei WGM10 = 1 passieren sollte (Seite 121, 
Tabelle 53). Setze ich im Simulator das Bit, so zählt er höher (0x3FFF), 
aber auch nicht bis ICR1.

Vielleicht kann das jemand anderes erklären, ich habe mit den meisten 
PWM-Modi noch nichts gemacht. Müsste ich selber nachlesen.

Hoffe, das hilft dir weiter

Gruß

Kai
Gast #732648
Lesenswert?
• ▲
▼
Hallo und vielen, vielen Dank für die Hilfe.
Ich hatte zwar mit dem zweiten Programm probiert aber es geht ja ums 
Prinzip an sich. Ich selbst hätte mich im Datenblatt wundgelesen. ;)

Ich probiere am WE nochmal mit dem 8515 und gebe Feedback. Nochmals 
danke für die schnelle Hilfe.

Gruß,
Mathias

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.