von
M. Н. (Gast)
10.07.2011 13:52
Hallo ich versuche mit einem ATmega88 eine PWM hinzubekommen. Top value
soll in ICR1 sein.
Mein Code: 1 .include <m88def.inc>
2 .cseg
3 .org 0
4 start:
5 ldi r16, low(RAMEND)
6 ldi r17, high(RAMEND)
7 out spl, r16
8 out sph, r17
9 ;M::::::::::::::::::::
10 ldi r16, 0xff
11 out ddrb, r16
12 ldi r16, 0
13 out portb, r16
14
15 ldi r16, low(22588)
16 ldi r17, high(22588)
17 sts ICR1l, r16
18 sts ICR1h, r17
19 ldi r16, (1<<COM1A1) | (1<<WGM11)
20 sts tccr1a, r16
21 ldi r16, (1<<CS11) | (1<<WGM13)
22 sts tccr1b, r16
23 ldi r16, 200
24 sts ocr1al, r16
25 sts ocr1ah, r16
26 loop:
27
28 rjmp loop
Es funktioniert nicht. Kann mir jemand sagen was ich falsch mache???
DANKE
M. H. schrieb:
> Es funktioniert nicht. Kann mir jemand sagen was ich falsch mache???
1)1 To do a 16-bit write, the high byte must be written before the low byte.
2) 1 The ICR1 Register can only be written when using a Waveform
2 Generation mode that utilizes the ICR1 Register for defining
3 the counter’s TOP value. In these cases the Waveform Generation
4 mode (WGM13:0) bits must be set before the TOP value can be written
5 to the ICR1 Register.
von
M. Н. (Gast)
10.07.2011 14:12
von
M. Н. (Gast)
10.07.2011 14:16
ich weiss nicht ob so sein sollte: 1 .include <m88def.inc>
2 .cseg
3 .org 0
4 start:
5 ldi r16, low(RAMEND)
6 ldi r17, high(RAMEND)
7 out spl, r16
8 out sph, r17
9 ;M::::::::::::::::::::
10 ldi r16, 0xff
11 out ddrb, r16
12 ldi r16, 0
13 out portb, r16
14 ldi r16, (1<<COM1A1) |(1<<WGM11)
15 sts tccr1a, r16
16 ldi r16, (1<<CS11) | (1<<WGM13)
17 sts tccr1b, r16
18
19 ldi r16, low(22588)
20 ldi r17, high(22588)
21 sts ICR1h, r17
22 sts ICR1l, r16
23
24
25 ldi r16, 200
26 sts ocr1ah, r16
27 sts ocr1al, r16
28
29 loop:
30
31 rjmp loop
Geht nämlich immer noch nicht
M. H. schrieb:
> Geht nämlich immer noch nicht
Weil dein OCR1A (51400) größer ist als ICR1 (22588).
von
M. Н. (Gast)
10.07.2011 14:29
Stefan Ernst schrieb:
> Weil dein OCR1A (51400) größer ist als ICR1 (22588).
ohhh.. Sch****. Das hätte nicht passieren dürfen. Jetzt gehts..
DANKE an euch
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.