Gast
#342565
Hallo zusammen,
ich versuche einen Mega16 zum Senden zu bringen. Ohne Erfolg.
Meine Randdaten:
Quarz mit 3.6864 Mhz
PD0 -> RXD
PD1 -> TXD
Mega16 in Sockel SCKT3100A3
Parallel/High Voltage Serial - funktioniert.
Empfangsprogramm: HyperTerminal (ich weiß, ist nicht das bester, aber
mit anderen uCs funktioniert es, damit ich kontrollieren kann)
9600 Baud
gesetzte Fuses:
Serial program downloading (SPI) enabled
Boot Flash section size=1024
Brown-out detection level at VCC=2.7V
Ext. RC 0sc. 3.0MHz - 8.0MHz; Start-up time: 6CK + 4ms
Das Interessante dabei ist, dass es sporadisch funktioniert. Aber nur
in ca. 3 von 10 Fällen.
Weiter unten habe ich noch mein Testprogramm angehängt.
Ich hoffe (wiedereinmal) dass mir jemand helfen kann. :-)
Danke und Gruß
Markus
.include "m16def.inc"
.def akku = r17
.cseg
rjmp start
.org 0x30
start:
ldi akku, LOW(RAMEND)
out SPL, akku
ldi akku, HIGH(RAMEND)
out SPH, akku
rcall USART_Init
main:
ldi akku, 0x34
rcall USART_Transmit
rjmp main
;**********************************************************************
; USART
;**********************************************************************
USART_Init:
;set baud rate
ldi r17,0
ldi r16, 23
out UBRRH, r17
out UBRRL, r16
;Enable receiver and transmitter
ldi r16, (1<<RXCIE) | (1<<RXEN) | (1<<TXEN)
out UCSRB,r16
;set frame format: 8data, 1stop bit
ldi r16, (1<<URSEL) | (0<<USBS) | (3<<UCSZ0)
out UCSRC,r16
ret
USART_Receive:
sbis UCSRA, RXC
rjmp USART_Receive
in akku, UDR
ret
USART_Transmit:
sbis UCSRA,UDRE
rjmp USART_Transmit
out UDR,akku
ret