Hallo Forum
Ich habe ein Programm, welches einen Wert über USART einliest und diesen
gleich wieder versendet. Dabei ist die Zeit zwischen Einlesen und dem
Versenden ~15ms. Ich verwende einen 24Mhz Quarz.
Liegt es an der Hardware, dass diese Zeit so lange ist, da ich einen
kleinen Code habe?
Rore Wellenform= Empfangene Daten
Blaue Wellenform= Gesendete Daten
1 | .EQU UBRR_REGISTER =18
|
2 | .DEF TEMP=R17
|
3 |
|
4 | SBI DDRD,1
|
5 | SBI DDRD,2
|
6 | SBI PORTD,2
|
7 |
|
8 | LDI TEMP, 0B00000000
|
9 | OUT UCSRA, TEMP
|
10 |
|
11 | LDI TEMP, 0B00011000
|
12 | OUT UCSRB, TEMP
|
13 |
|
14 | LDI TEMP, 0B00000110
|
15 | OUT UCSRC, TEMP
|
16 |
|
17 | LDI TEMP, HIGH (UBRR_REGISTER)
|
18 | OUT UBRRH, TEMP
|
19 | LDI TEMP, LOW (UBRR_REGISTER)
|
20 | OUT UBRRL, TEMP
|
21 |
|
22 | START:
|
23 | CBI PORTD,2
|
24 | SBI PORTD,2
|
25 |
|
26 | USART_RECEIVE:
|
27 | SBIS UCSRA, RXC
|
28 | RJMP USART_RECEIVE
|
29 | IN R16, UDR
|
30 | CLR UDR
|
31 |
|
32 | USART_TRANSMIT:
|
33 | SBIS UCSRA, UDRE
|
34 | RJMP USART_TRANSMIT
|
35 | OUT UDR, R16
|
36 |
|
37 | RJMP START
|
Grüsse
Julian