Hallo zusammen, ich übe mit mit meinem Entwicklungsboard noch immer fleißig Assembler programmieren. ATMega168-20PU (20MHz) Schaltung des Boards(Rumpus): http://www.lochraster.org/rumpus/data/rumpus-v2-schematic.pdf Im Moment kümmere ich mich um den Summer, was auch gut funktioniert, ich kann mit meinem Programm sogar die Frequenz einstellen. Leider ist das Ding viel zu leise. Mein Programm:
1 | .include "m168def.inc" |
2 | |
3 | .org 0x0000 |
4 | rjmp main |
5 | .org OVF1addr |
6 | rjmp timer_isr |
7 | |
8 | |
9 | main: |
10 | ldi r16, high(ramend) |
11 | out sph, r16 |
12 | ldi r16, low(ramend) |
13 | out spl, r16 |
14 | |
15 | ldi r18, (1<<cs12|1<<cs10|1<<wgm12) ; Timer konfigurieren |
16 | sts tccr1b, r18 |
17 | |
18 | ldi r25, 0x00 |
19 | ldi r26, 0x1a |
20 | sts ocr1ah, r25 |
21 | sts ocr1al, r26 |
22 | |
23 | ldi r18, (1<<ocie1a) |
24 | sts timsk1, r18 |
25 | |
26 | ldi r17, 0b00010000 ; PortD Pin4 Ausgang |
27 | out ddrc, r17 |
28 | |
29 | ldi r17, 0b00001111 ; PullUp für Taster high; Pin4 low |
30 | out portc, r17 |
31 | |
32 | ldi r19, 0b00000001 ; PortB Pin1 Ausgang |
33 | out ddrb, r19 |
34 | |
35 | ldi r18, 0b00000001 ; Startwert für r18 |
36 | |
37 | sei |
38 | loop: |
39 | out portb, r18 ; Hauptschleife |
40 | rjmp loop |
41 | |
42 | timer_isr: ; timer_isr |
43 | sbis pinc, pc0 ; macht nichts wenn Taster nicht gedrückt |
44 | com r18 ; invertiert r18 wenn Taster gedrückt wird |
45 | |
46 | reti |
Es gibt nämlich ein Testprogramm für das Board, welches den Summer in der aktuellen Schaltung per Tastendruck dazu bringt ordentlich laute Töne von sich zu geben. Leider ist das Programm in C geschrieben und damit habe ich mich noch nicht beschäftigt. Vielleicht kann da jemand von euch was daraus lesen. http://git.lochraster.org:2080/?p=fd0/rumpus;a=tree;f=rumpustest;h=284e82ebf84318312023ffcf8cd2740406d7684b;hb=HEAD Was mache ich falsch??