DMX Senden die zweite

Gast #279777
Lesenswert?
• ▲
▼
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
Gast #279780
Lesenswert?
• ▲
▼
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...)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.