- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 10

Thema: synchroner Datemempfang über UART mit Bascom

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.06.2006
    Beiträge
    6

    synchroner Datemempfang über UART mit Bascom

    Anzeige

    Powerstation Test
    Hi, ich bin mit meinem Latein fast am Ende, ich versuche ein synchrones Modem mit Bascom über UART auszulesen.
    Leider enthält der Datenstrom keine Paritätsbytes bzw. Stopbits.

    Das Taktsignal ist an XCK angeschlossen, den UART initalisiere ich wie folgt:

    Code:
    Config Com1 = 1200 , Databits = 8 , Parity = None , Stopbits = 1 , Synchrone = 1 , Clockpol = 0
    $baud = 1200
    
    Ucsrc.umsel = 1
    
    Config Serialin = Buffered , Size = 6
    
    ....
    
    Do
    
    Temp2 = Ischarwaiting()                             
    
      If Temp2 <> 0 Then
    
        _lcd_e = 128
    
        Lcd " " ; Bin(temp2)
    
        'Clear Serialin
    
      End If
    
    Loop
    Dabei kommt alles nur kein Brauchbares Signal bei raus. Stelle ich "Synchrone = 0" bekomme ich Daten nur fehlen dabei einige Bits weil mir Paritätsbits und Stopbits fehlen.

    Ich habe im Netz nur folgende Anleitung mit einem externen Sync to Async Bauteil gefunden. http://www.eetchina.com/ARTICLES/200...URCES=DOWNLOAD

    Dazu müßte doch auch mein Atmega32 bei 16MHz in der Lage sein?

    Was mache ich falsch?

    Gruß Nordi

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377
    Hallo Nordi!

    Du schreibst, dass du kein Stopbit bekommst, setzt aber trotzdem den Parameter ``Stopbits = 1``. ? Nur ein Schreibfehler?

    mfg
    Gerold

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Wenn dein Mega mit der UART synchrones Arbeiten nicht im repertoire hat, (also eine USART hat) bist du mit dem SPI, glaub ich, besser dran.
    Oder eben zu Fuß.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    22.06.2006
    Beiträge
    6
    @python_rocks: stopbit = 0 will Bascom nicht dann meckert er

    @ PickNick: Zu Fuß ist es am laufen, ich wollte nur den Buffer, sowie den Empfangsinterrupt nutzen da ich mittlerweile mit dem Timing etwas Probleme bekomme.
    Der Mega32 hat doch Usart, im Datenblatt kann ich doch die Register auf synchron setzen oder habe ich da etwas falsch verstanden?

    Mit SPI hab ich es auch schon mal probiert, bekomme dort auch keine Brauchbaren Daten heraus. Habe es so gemacht wie es in der Bascom hilfe steht.
    Achso, die länge des Datenpakets ist 64 Bit

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    I see. Du mußt aber doch nicht mit Bascom Konfigurieren.
    Hast du schon versucht, die USART direkt mit den Registern zu bearbeiten ? (UCPOL beachten)

    Bei aller Liebe hab' ich den Bascom in Verdacht, dass er da irgendeinen Unsinn fabriziert.
    Der Mega-Receiver ignoriert lt. DataSheet die Stopbit-Angabe (was sollt er auch damit anfangen). Also kann es nicht wirklich fehlen.

    Btw: Geht's nur um "synchron" oder kriegst du vielleicht SDLC-Frames ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377
    Zitat Zitat von Nordi^
    @python_rocks: stopbit = 0 will Bascom nicht dann meckert er
    Hallo Nordi!

    Ich glaube, dann sollstest du das Caching lieber selber in die Hand nehmen und auf CONFIG COM1 und vielleicht auch auf CONFIG SERIALIN verzichten. Es kann schon sein, dass Bascom das nicht richtig macht (ist nur eine Vermutung).

    Oder, hast du es schon mit OPEN statt mit CONFIG COM1 versucht? -- Ach so, ich lese gerade "stop bits can be 1 or 2" :-(

    Wie ich das sehe, hat Bascom in den UART-HighLevel-Befehlen keine Unterstützung für USART mit drinnen. Also musst du die entsprechenden Einstellungen händisch setzen.

    mfg
    Gerold
    :-)

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377
    Hallo!

    Auszug aus dem ATmega32-Datenblatt:
    "Supports Serial Frames with 5, 6, 7, 8, or 9 Data Bits and 1 or 2 Stop Bits"

    Also muss ich Bascom damit wieder entlasten. Es unterstützt genau das was auch der ATmega32 unterstützt.

    mfg
    Gerold

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    @python / Nordi

    Bascom kannst du in Teilen verwenden
    $BAUD setzt nur die Baudrate (und rechnet sie aus)
    CONFIG serialin=buffered, size= nn
    erzeugt "nur" einen tadellosen Ringbuffer mit der ISR

    Die sind beide unabhängig (so wie ischarwaiting und inkey etc.)

    Nur mit dem CONFIG COM wird es interessant
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    22.06.2006
    Beiträge
    6
    Die Register müßte ich ja dann wie folgt setzen:

    Code:
    UCSRA = &B100110??
    UCSRC = &B11000110
    
    $baud = 1200
    
    Config Serialin = Buffered , Size = 6
    
    Enable Interupts
    
    ....
    
    Do
    
    Temp2 = Ischarwaiting()                             
    
      If Temp2 <> 0 Then
    
        _lcd_e = 128
    
        Lcd " " ; Bin(temp2)
    
        'Clear Serialin
    
      End If
    
    Loop
    Klappt nur leider nicht so wie gewollt, ich empfange damit keinerlei Daten.
    Auf´m LCD kommen nur Nullen.

    Ich verstehe auch nicht das man die Stopbits nicht einfach ausschalten kann.

    MfG Nordi

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    also so recht schlau werd ich aus deiner Beschreibung nicht ...
    wills Du nun das Ding unter

    http://www.eetchina.com/ARTICLES/2002OCT/A/2002OCT15_ICD_NTEK_CT_ID_AN01.PDF?SOURCES=DOWNLOAD "]http://www.eetchina.com/ARTICLES/2002OCT/A/2002OCT15_ICD_NTEK_CT_ID_AN01.PDF?SOURCES=DOWNLOAD

    an Deinen Mega hängen oder haste n Synchrones Modem?

    Wenn ersteres der Fall währe müsstest Du das Teil nur mit 2400 / 1200 Baud
    anfahren und das währs dann schon (start- und stopbit gehören dann dazu)
    im zweiten Fall währs vermutlich hilfreich nen Schaltplanauszug zu sehen
    und / oder das Datenblatt von Deinem Modem um sinnvoll helfen zu können
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad