www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega88 & ASM & PWM (Hilfe gesucht)


Autor: AVP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt es irgendwo eine Erläuterung, wie man den Modus 5 (8 Bit Fast PWM - 
Der Timer zählt bis 255) in ASM für den Mega88 initialisiert? Ich finde 
hier nur die Beispiele für den 8515 und auch da nicht den Modus, sondern 
immer nur die 16-Bit Variante. Außerdem  bringen die immer Fehler: 
"Operand 1 out of Range", obwohl ich nur mit copy & paste den Quellcode 
übernehme.
Das Datenblatt hab ich auch schon durch, ich werde daraus aber leider 
auch nicht schlauer.
Beispiel:
.include "m88def.inc"
 
.def  temp = r16
.def  pwm = r17

.cseg
.org  $000
  rjmp  reset      ;reset handle

reset: 
 rjmp  init      ;start init

init:  
  ldi  temp, low(ramend)
  out  spl, temp    ;set spl
  ldi  temp, high(ramend)
  out  sph, temp    ;set sph

  ldi  temp,0b11111111    ;portb = output
  out  ddrd,temp

  out  portb,temp    ;switch led's off

  ldi  temp,0b10000001    ;init PWM... (choose 8-Bit PWM etc...)A1
  out  tccr1a,temp ; FEHLER

  ldi  temp,0
  out  ocr1ah,temp ; FEHLER

  ldi  temp,1
  out  ocr1al,temp ; FEHLER

  ldi  temp,0b00000001
  out  tccr1b,temp ; FEHLER

  sei        ;enable interrupts

  rjmp  loop

loop:  
ldi  pwm,230      ;choose the value for pwm
  out  ocr1al,pwm ; FEHLER
  rjmp  loop
Danke schonmal für die Hilfe

Autor: Christoph S. (mixer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
 
  ldi  temp,0b11111111    ;portb = output
  out  ddrd,temp

  out  portb,temp    ;switch led's off

Das passt schon mal nicht. Wenn du den PortB als Ausgang konfigurieren 
willst solltest du das auch in s DDRB schreiben, nichts in s DDRD!


Wie man den Timer auf die gewünschte PWM-Modi initialisiert ist im 
Datenblatt beschrieben!
  rjmp  loop

loop:  
ldi  pwm,230      ;choose the value for pwm
  out  ocr1al,pwm ; FEHLER
  rjmp  loop

ich kenne den Mega88 nicht, nur den Mega8 aber bei dem reicht es wenn 
man den Commpare-Wert einmal in s Register schreibt und nicht immer 
wieder!!

MFG Mixer

Autor: AVP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wie man den Timer auf die gewünschte PWM-Modi initialisiert ist im
>Datenblatt beschrieben!

Und genau da steig ich grad nicht durch, deshalb frag ich ja. Und die 
Beispiele, die ich gefunden habe, die funktionieren (sollen), sind in C, 
das hilft mir auch nicht weiter.

Autor: senex24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
TCCR1x und OCR1x sind im ATmega88 'memory-mapped I/O', müssen also per 
sts  angesprochen werden.

Autor: senex24 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe gerade, dass Atmel den Bereich 0x0060..0x00FF als 'extended 
I/O' bezeichnet; der Effekt ist der gleiche: sts statt out, bzw. lds 
statt in.

Autor: AVP (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Senex24, genau so stelle ich mir Hilfe vor. Ich brauchte nur den 
Hinweis, was ich falsch gemacht habe. O Fehler beim compilieren und auch 
meine Testplatine leuchtet. Danke.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.