Ik ben al een tijdje bezig met atmel microcontroller. Ben begonnen met programeren in asm en toen overgestapt naar C omdat dat toch een stuk makkelijker is. Nu had ik veel compiler problemen met men C programma dus heb ik besloten om het programma maar stap voor stap naar asm om te zetten.
Ik ben begonnen met het omzetten van de PWM routine naar asm, maar nu krijg ik bij het compilen de volgende error:
"error: Operant 1 out of range: 0x6E"
Dit is op de regel waar ik "TIMSK0" wil setten op 0x06. Ik snap niet wat daar fout aan is.
Op de regel "out TIMSK0, temp" geeft avrstudio dus de error. Ik snap niet wat er fout aan is, heb nog gecontroleerd in de data sheet of TIMSK0 op adres 0x6E staat (wat ook in de include file staat) maar dat klopt gewoon helemaal. Ik snap er niets meer van want in C werkt het gewoon perfect (het PWM gedeelte dan).
Ik ben begonnen met het omzetten van de PWM routine naar asm, maar nu krijg ik bij het compilen de volgende error:
"error: Operant 1 out of range: 0x6E"
Dit is op de regel waar ik "TIMSK0" wil setten op 0x06. Ik snap niet wat daar fout aan is.
GAS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| .device ATmega168 .include "m168def.inc" .def temp = r16 .CSEG .ORG $0000 rjmp RESET .ORG OC0Aaddr .ORG OC0Baddr ;*********************************************************** RESET: rcall POORTINIT rcall TIMER0INIT rcall TIMER0INT sei rcall LOOP ;*********************************************************** POORTINIT: ldi temp, 0xFF out ddrb, temp ldi temp, 0x00 out ddrc, temp ldi temp, 0x8B out ddrd, temp ret ;********************************************************** TIMER0INIT: ldi temp, 0xA3 out TCCR0A, temp ldi temp, 0x02 out TCCR0B, temp ldi temp, 0x00 out TCNT0, temp ldi temp, 0x09 out OCR0A, temp ldi temp, 0x0A out OCR0B, temp ret ;*********************************************************** TIMER0INT: ldi temp, 0x06 out TIMSK0, temp ret ;*********************************************************** LOOP: rjmp LOOP |
Op de regel "out TIMSK0, temp" geeft avrstudio dus de error. Ik snap niet wat er fout aan is, heb nog gecontroleerd in de data sheet of TIMSK0 op adres 0x6E staat (wat ook in de include file staat) maar dat klopt gewoon helemaal. Ik snap er niets meer van want in C werkt het gewoon perfect (het PWM gedeelte dan).
C:
1
2
3
4
5
6
7
| TCCR0A=0xA3; TCCR0B=0x02; TCNT0=0x00; OCR0A=0xFF; OCR0B=0xFF; TIMSK0=0x06; |