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.