- Labornetzteil AliExpress         
Ergebnis 1 bis 3 von 3

Thema: beispiel für ein software-uart

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941

    beispiel für ein software-uart

    Anzeige

    Praxistest und DIY Projekte
    software-uart "print" und software-uart "input" über "interrupt0"
    für einen AVR16 mit 8mhz über asm realisiert.
    ist leicht umzusetzen in winavr-c (dort kann der asm-code eingebunden werden) und für Bascom (natürlich hat Bascom auch software-uart) ein interessantes experiement.
    gerade in winavr-c habe ich immer wieder danach gesucht über eine weitere schnittstelle daten zu transportieren zu einem anderen gerät.
    die normalen routinen für die variablen und ausgabe hat winavr-c auch.
    diese routine wurde aus dem fastavr-basic-asm-source gefertigt.
    mfg pebisoft

    Code:
    ' input
    ' AVR16 8mhz und wtic=66 (19200bps), wtic=135 (9600bps) an pind2 (int0)
    $Device= m16     
    $Stack = 32     
    $Clock = 8 
    $Lcd = PORTC.0, RS=PORTC.5, EN=PORTC.4, 16, 2
    $Source= On   
    
    Declare Interrupt Int0()
    Declare Sub lcd_ausgabe()
    
    Dim a As Byte
    
    Int0 Falling
    Enable Int0            
    Enable Interrupts
    
    Do
    
    WaitMs 100
    
    Loop
    
    End
    
    Interrupt Int0(), Save 2
       Disable Int0   
       Enable Interrupts   
       $Asm
       __Com1I: ldi     r24,0x09
                ldi     r23,66
                rcall   __Wtic
      __C1I2:   ldi     r23,66
                rcall   __Wtic
                ldi     r23,66
                rcall   __Wtic
                clc
                sbic    PIND,2
                sec
                dec    r24
                breq   __ende
                ror    zl
                rjmp  __C1I2
    
       __Wtic:  dec   r23
                brne  __Wtic
                ret 
             
       __ende: sts  a,zl
       $EndAsm
       lcd_ausgabe()
       Reset Int0            
       Enable Int0            
    End Interrupt   
    
    Sub lcd_ausgabe()
       Cls
       Lcd a
    End Sub   
    
    
    ' print
    ' AVR16 8mhz und wtic=66 (19200bps), wtic=135 (9600bps)  an pinb1 zum beispiel
    $Device= m16     
    $Stack = 32     
    $Clock = 8 
    $Source= On   
    
    Dim wert As Byte
    
    Declare Sub test()
    
    DDRB.1=1
    PORTB.1=1
    
    Do
    
    For wert=0 To 15
       WaitMs 255
       test()
    Next
    
    Loop
    
    End
    
    Sub test()
       $Asm
       lds  r24,wert
       __Com1O:  ldi   r25,10
                 Com   r24
                 sec
       __C1O0:   brcc  __C1O1
                 cbi   PORTB,1
                 rjmp  __C1O2
       __C1O1:   sbi   PORTB,1
                 Nop
       __C1O2:  ldi   r23,66
                rcall __Wtic
                ldi    r23,66
                rcall  __Wtic
                 lsr      r24
                dec   r25
                brne  __C1O0
                rjmp  __ende
           
       __Wtic: dec   r23
               brne   __Wtic
               ret
    
       __ende:      
       $EndAsm
    End Sub

  2. #2
    Erfahrener Benutzer Begeisterter Techniker Avatar von H.A.R.R.Y.
    Registriert seit
    15.09.2005
    Beiträge
    306
    Wie verträgt er sich so mit anderen Interrupts? Bei höheren Baudraten befürchte ich da Timing-Probleme. Liegen Erfahrungen vor?
    a) Es gibt keine dummen Fragen, nur dumme Antworten
    b) Fehler macht man um aus ihnen zu lernen
    c) Jeder IO-Port kennt drei mögliche Zustände: Input, Output, Kaputt

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    ich bin bis auf 115000bps gegangen.
    ich habe am küchenbrettroboter alle möglichen interrups laufen.
    datentransferstörungen habe ich nicht gehabt.
    habe auf dauer auch nur 38400 eingestellt.
    es ist ein beispiel für bastler zum weiterausbauen und zum lernen.
    es können auch krumme werte genommen werden, wenn der empfang/senden auch wieder durch eigenprogrammierung gemacht wird.
    mfg pebisoft

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test