Hallöchen! Ich habe hier ein BTM222 Bluetoothmodul an einen ATMEGA16 gehangen und die aufgabe des AVR ist es einfach nur die Zeichen wieder zurückzusenden. Ich sende mit einem abgeändertem Android Chatprogramm buchstaben und zurück kommen andere zeichen. Das Muster ist dabei aber immer das selbe. als Beispiel: sende ich ein "T" kommt ein "T" zurück. sende ich ein "A" kommt immer ein "}" zürück Jetzt bin ich ratlos :/ Was mache ich falsch? mfg Christian
1 | .include "m16def.inc" |
2 | |
3 | .equ F_CPU = 3686400 ; Systemtakt in Hz |
4 | .equ BAUD = 19200 ; Baudrate |
5 | |
6 | ; Berechnungen |
7 | .equ UBRR_VAL = ((F_CPU+BAUD*8)/(BAUD*16)-1) ; clever runden |
8 | .equ BAUD_REAL = (F_CPU/(16*(UBRR_VAL+1))) ; Reale Baudrate |
9 | .equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000) ; Fehler in Promille |
10 | |
11 | .if ((BAUD_ERROR>10) || (BAUD_ERROR<-10)) ; max. +/-10 Promille Fehler |
12 | .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!" |
13 | .endif |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | .org 0x00 |
20 | rjmp main |
21 | |
22 | .org URXCaddr ; Interruptvektor für UART-Empfang |
23 | rjmp int_rxc |
24 | |
25 | ; Hauptprogramm |
26 | |
27 | main: |
28 | |
29 | ; Stackpointer initialisieren |
30 | |
31 | ldi r16, HIGH(RAMEND) |
32 | out SPH, r16 |
33 | ldi r16, LOW(RAMEND) |
34 | out SPL, r16 |
35 | |
36 | ; Baudrate einstellen |
37 | ldi r16, HIGH(UBRR_VAL) |
38 | out UBRRH, r16 |
39 | ldi r16, LOW(UBRR_VAL) |
40 | out UBRRL, r16 |
41 | |
42 | ; Frame-Format: 8 Bit |
43 | ldi r16, (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0) |
44 | out UCSRC, r16 |
45 | |
46 | sbi UCSRB, RXCIE ; Interrupt bei Empfang |
47 | sbi UCSRB, RXEN ; RX (Empfang) aktivieren |
48 | sbi UCSRB,TXEN ; TX aktivieren |
49 | sei ; Interrupts global aktivieren |
50 | |
51 | |
52 | |
53 | loop: |
54 | nop |
55 | rjmp loop |
56 | |
57 | |
58 | |
59 | int_rxc: |
60 | in r20, UDR ; empfangenes Byte lesen, |
61 | serout: |
62 | sbis UCSRA,UDRE ; warten bis Redy |
63 | rjmp serout |
64 | out UDR, r20 ; empfangenes Byte senden, |
65 | reti |