hallo,
ich versuche jetzt schon mehrere Tage einem AT Mega 8515 das Senden
beizubringen aber ich bin am Ende und weiß nicht so recht weiter.
köntet Ihr euch mal meine geistigen ergüsse ansehen. Frequenz 8Mhz
Initialisiert habe ich so:
UART: ldi TEMP,0x01
out UBRRL,TEMP
sbi UCSRB,RXCIE ;Enable RX Interrupt
sbi UCSRB,UCSZ2 ;Enable 9-Bit Mode
sbi UCSRB,RXEN ;Enable RX-UART
ldi temp, 0x00
out UBRRH, temp
ldi temp, (1<<URSEL)|(3<<UCSZ0)|(1<<USBS)
out UCSRC, temp ;
sbi UCSRB,UDRIE ;enable irqs sbi
UCSRB,TXEN ;enable USART TxD
PortD: ldi TEMP,0xDE
out DDRD,TEMP
ldi TEMP,0x21
out PORTD,TEMP
der Aufruf über den Timer0 Interrupt der vorher noch PWM macht.
lds temp,Sendrate
inc temp
sts Sendrate,temp ; Sendrate erhöhen Zähler
SBIC PINA,1
rjmp ausgang ;wenn DIP 10 on dann weiter
SBIC PINA,0
rjmp ausgang
sbi portD,2 ;RS 485 auf Senden umschalten
DMXweit: lds temp,Flag
cpi temp,1
breq alles_gesendet ;Flag gesetzt? alles gesendet?
rjmp ausgang
alles_gesendet: cbi portD,1 ;Reset eileiten
lds temp,reset_breake ;
inc temp
sts reset_breake,temp
cpi temp,4 ; Breake länge
breq Breake_ende
rjmp ausgang
Breake_ende: nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
sbi PortD, PD1 ;bis jetzt 88uS
ldi YH, high(RAMSTART);Ram Adressen zurücksetzen
ldi YL, low(RAMSTART)
ldi temp, MARK_LENGTH ;Mark warten
MAB_loop:
dec temp
brne MAB_loop
sbi UCSRB,TXEN ;enable USART TxD
sbi UCSRB, UDRIE ;enable data empty irq
clr temp ;send start byte (=0)
out UDR, temp
;Sendrate neu laden
sts flag,temp ;Flag zurüchsetzen
ausgang: inc dimm_count
out SREG,SREG_BACK
lds temp,zwsp_temp
lds status,zwsp_status
reti
Der TX Interrupt sieht so aus:
TX_SEN: in SREG_BACK,SREG
push temp
cpi YL, low(RAMSTART +CHANNELS +1)
brne sb1 ;all ch send?
cpi YH, high(RAMSTART +CHANNELS +1)
brne sb1
cbi UCSRB, TXEN
cbi UCSRB, UDRIE
sbi portD,1
ldi temp,0x01 ; Flag setzen
sts Flag,temp
clr temp
sts sendrate,temp
sts reset_breake,temp
rjmp sb_finish
sb1:
ld temp, Y+
out UDR,temp
sb_finish:
pop temp
out SREG,SREG_BACK
reti
Wie kommst Du auf 9n2 ?!? Mach 9n1 und werte Chr8 als 1.SB aus oder nimm 8n2.
Außerdem scheint das noch eine ziemlich fühe Version meiner TxD-Routine zu sein. Bevor jmd. das copy&pasted&verzweifelt, bitte evtl. kurz nach der aktuellen Version schauen: http://www.hoelscher-hi.de/hendrik/light/ressources.htm Eigentlich hatte ich deshalb auch das direkte Mirrorn und Posten von meinem Kram untersagt. (Links sind doch OK, ich mach habe ja auch keine Werbung und bekomme für die Visits kein Geld...)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.