- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 33

Thema: Optimieren von UART-Komunikation, bitte um Meinungen

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #10
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    19.05.2012
    Ort
    Sigmaringen
    Beiträge
    169
    So... der komplette code wäre dann:
    Es ist ohne diese Verzögerung in serial0charmatch.

    Das Funkmodul ist an sich schon in betrieb und ich kann dann wahlweise über Kabel oder Funk die Verbindung testen.

    Der Hinweis auf die Register ist von mir noch nicht geprüft...
    Da muss ich mich erst noch bissl einarbeiten... hab mich mit den Registern noch nicht wirklich beschäftigt.

    Was ich auch etwas seltsam finde...
    Wenn ich vom pc aus den port öffne und sende... ok. kommt an wie gedacht"... wenn ich den port aber trenne und
    ein zweites mal öffne sind irgendwelche "zeichen" im buffer, die mir das ganze array zerschiessen.
    wird beim trennen des ports auf der tx/rx-leitung noch was gesendet ??


    Code:
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    'Programmname:    UART-Schnittstelle.bas
    'Letzte Änderung: 03.03.2013
    'Funktion:        Empfang von gesamt 18Byte,
    '                 ausgabe als echo über seriell und lcd zur kontrolle
    'Mikrocontroller: Mega8
    '
    'Input:
    'Output:
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    'Den Atmega mit den passenden Daten füttern.
    '-------------------------------------------------------------------------------
    $regfile = "m8def.dat"                                      'eingesetzter Mikrocontroller
    $crystal = 8000000                                          'eingestellte Taktfrequenz (8MHz)
    $hwstack = 100                                              'Standardwert
    $swstack = 100                                              'Standardwert
    $framesize = 100                                            'Standardwert
    $baud = 9600
    
    '-------------------------------------------------------------------------------
    'Ports/Pins/Configs
    '-------------------------------------------------------------------------------
    
    '-------------------------------------------------------------------------------
    'Timer/OCR/PWM/ISR usw. setzen
    '-------------------------------------------------------------------------------
    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcd = 16 * 2
    Config Serialin = Buffered , Size = 18 , Bytematch = 123    '123={
    Enable Interrupts
    
    '-------------------------------------------------------------------------------
    'Variablen
    '-------------------------------------------------------------------------------
    Dim Temp_byte As Byte
    Dim Datenblock(16) As Byte
    Dim Indexposition As Byte
    Dim Startzeichen As String * 1
    Startzeichen = "{"
    Dim Endzeichen As String * 1
    Endzeichen = "}"
    Dim Datenblock_komplett As Bit
    Dim Datenblock_laenge As Byte
    Datenblock_laenge = 16
    Dim Lcd_position As Byte
    Dim Datenblock_string As String * 16
    
    '-------------------------------------------------------------------------------
    'Hauptprogramm
    '-------------------------------------------------------------------------------
    Cls
    Waitms 100
    
    Do
       If Datenblock_komplett = 1 Then
       'UART-Datenblock in String füllen
          For Indexposition = 1 To Datenblock_laenge Step 1
             Insertchar Datenblock_string , Indexposition , Datenblock(indexposition)
          Next
       Disable Interrupts
       'Ausgabe/Abarbeiten des UART-Datenblock
          Cls
          Waitms 100
          For Indexposition = 1 To 3 Step 1
             Lcd_position = Indexposition
             Locate 1 , Lcd_position
             Lcd Chr(datenblock(indexposition))
          Next
          For Indexposition = 3 To Datenblock_laenge Step 1
             Lcd_position = Indexposition - 8
             Locate 2 , Lcd_position
             Lcd Chr(datenblock(indexposition))
          Next
       'Echo zurücksenden zur Kontrolle
          Print Datenblock_string
          Datenblock_string = ""
          Datenblock_komplett = 0
       Enable Interrupts
       End If
    Loop
    End
    
    '-------------------------------------------------------------------------------
    'Interrupt
    '-------------------------------------------------------------------------------
    
    Serial0charmatch:
    
    While Ischarwaiting() = 1
       Temp_byte = Inkey()
       Waitus 2000
    
       Locate 2 , 13
       Lcd Chr(temp_byte)
       Wait 1
    
       If Temp_byte = Asc(startzeichen) Then
          Indexposition = 0
          Datenblock_komplett = 0
       Elseif Temp_byte = Asc(endzeichen) Then
          Datenblock_komplett = 1
       Else
          Indexposition = Indexposition + 1
          Datenblock(indexposition) = Temp_byte
       End If
       If Indexposition = Datenblock_laenge Then
          Datenblock_komplett = 1
          Clear Serialin
       End If
    Wend
    
    If Indexposition < Datenblock_laenge Then
       Do
          Indexposition = Indexposition + 1
          Datenblock(indexposition) = 22
       Loop Until Indexposition = Datenblock_laenge
       Datenblock_komplett = 1
       Clear Serialin
    End If
    
    Return
    Das bytematch ist 123 (also wie das Startzeichen { )

    Nachtrag: ... bei dem jetzigen code... wenn ich die verzögerung rausnehm...

    Ich sende {xyz1234567890123}
    es kommt die ersten 2 vorgänge nur "leerstellen" ins array... ab dem dritten dritten mal ist dann
    "y} " im Array
    Geändert von JoeM1978 (04.03.2013 um 18:05 Uhr)
    JAAAA... Microchips kann man essen... aber der Geschmack ist furchtbar.

Ähnliche Themen

  1. Daten von Software UART nach Hardware UART weiterleiten
    Von kusli im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 06.10.2008, 21:24
  2. Anfängerprojekt - Bitte um Hilfe und Meinungen
    Von Al_Andaluz im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 22
    Letzter Beitrag: 20.06.2007, 10:27
  3. frequenzverhalten von mosfets optimieren...
    Von Bibiman im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 18.03.2007, 10:37
  4. Erster UART Versuch... schaut mal bitte kurz drüber...
    Von popi im Forum C - Programmierung (GCC u.a.)
    Antworten: 19
    Letzter Beitrag: 25.07.2006, 20:16
  5. BL-521 - Bluetooth RS232 Converter (Eure Meinungen Bitte !!)
    Von PabloEscoba im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 1
    Letzter Beitrag: 11.05.2006, 16:56

Stichworte

Berechtigungen

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

Labornetzteil AliExpress