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:
1 | .include "m88def.inc"
|
2 |
|
3 | .def temp = r16
|
4 | .def pwm = r17
|
5 |
|
6 | .cseg
|
7 | .org $000
|
8 | rjmp reset ;reset handle
|
9 |
|
10 | reset:
|
11 | rjmp init ;start init
|
12 |
|
13 | init:
|
14 | ldi temp, low(ramend)
|
15 | out spl, temp ;set spl
|
16 | ldi temp, high(ramend)
|
17 | out sph, temp ;set sph
|
18 |
|
19 | ldi temp,0b11111111 ;portb = output
|
20 | out ddrd,temp
|
21 |
|
22 | out portb,temp ;switch led's off
|
23 |
|
24 | ldi temp,0b10000001 ;init PWM... (choose 8-Bit PWM etc...)A1
|
25 | out tccr1a,temp ; FEHLER
|
26 |
|
27 | ldi temp,0
|
28 | out ocr1ah,temp ; FEHLER
|
29 |
|
30 | ldi temp,1
|
31 | out ocr1al,temp ; FEHLER
|
32 |
|
33 | ldi temp,0b00000001
|
34 | out tccr1b,temp ; FEHLER
|
35 |
|
36 | sei ;enable interrupts
|
37 |
|
38 | rjmp loop
|
39 |
|
40 | loop:
|
41 | ldi pwm,230 ;choose the value for pwm
|
42 | out ocr1al,pwm ; FEHLER
|
43 | rjmp loop
|
Danke schonmal für die Hilfe