- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: Problem mit serieller Komunikation

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.12.2010
    Beiträge
    7

    Problem mit serieller Komunikation

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo, ich bin neu hier und habe ein kleines Problem. Ich versuche mit einem Atmega8 einen GPS-Empfänger auszulesen.
    Der GPS-Emfänger geht problemlos am pc über RS232 und mit dem Hyperterminal.

    Der Atmega8 gibt leider nür müll aufsDisplay
    Das ist mein Code:

    $regfile "m8def.dat"
    $crystal = 4000000
    Baud = 9600


    Dim B As Byte
    Dim X As Byte
    Dim Y As Byte


    Open "comc.0:9600,8,n,1,inverted" For Input As #1

    Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portb.6

    Cursor Off
    Display On

    Cls
    Locate 1 , 1

    X = 0
    Y = 1
    Do

    X = X + 1
    If X = 9 Then Gosub Voll
    Get #1 , B
    Locate Y , X : Lcd Chr(b)


    Loop

    Voll:
    If Y = 2 Then Cls
    X = 1
    Y = Y + 1
    If Y = 3 Then Y = 1
    Locate Y , X
    Return

    Was mache ich falsch?

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    06.11.2006
    Ort
    Lörrach
    Alter
    55
    Beiträge
    24
    Hi, hier eine der ersten Fragen:
    Sind die Fuse-Bits richtig gesetzt? Ist meist ein Hauptgrund der nicht funktionierenden LCDisplays und Schnittstellen.


    Gruß
    gomaman

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    26.08.2006
    Beiträge
    84
    NMEA Empfänger senden standardmäßig mit 4800 Baud und bei dem 'inverted' bin ich mir auch nicht ganz sicher

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555

    Re: Problem mit serieller Komunikation

    Zitat Zitat von RubaSon
    Hallo, ich bin neu hier und habe ein kleines Problem. Ich versuche mit einem Atmega8 einen GPS-Empfänger auszulesen.
    Der GPS-Emfänger geht problemlos am pc über RS232 und mit dem Hyperterminal.

    Der Atmega8 gibt leider nür müll aufsDisplay
    Das ist mein Code:

    $regfile "m8def.dat"
    $crystal = 4000000
    Baud = 9600


    Dim B As Byte
    Dim X As Byte
    Dim Y As Byte


    Open "comc.0:9600,8,n,1,inverted" For Input As #1

    Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portb.6

    Cursor Off
    Display On

    Cls
    Locate 1 , 1

    X = 0
    Y = 1
    Do

    X = X + 1
    If X = 9 Then Gosub Voll
    Get #1 , B
    Locate Y , X : Lcd Chr(b)


    Loop

    Voll:
    If Y = 2 Then Cls
    X = 1
    Y = Y + 1
    If Y = 3 Then Y = 1
    Locate Y , X
    Return

    Was mache ich falsch?
    Hoffentlich ist der GPS Empfänger über einen RS232 <> TTL Wandler an den Mega angeschlossen! Ich sehe in dem Code nicht wo die GPS Daten eingelesen werden? also z.B.



    Code:
    dim A as string * 50
    
    input #1, a
    
    LCD a
    Wie Du dann den string verarbeitest um die GPS Daten zu sortieren musst Du in der Bascom Hilfe nachschauen. Tipp INSTR und deren Untertietel wie split und pos......

    Gruß Richard

    Ps.: Setze code immer zwischen codetags.[/quote]

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Wenn ich dein Programm in den Simulator lade und PinC.0 rumklimpere, dann funktioniert es.
    Heißt für mich: Slein hat Recht mit seiner Vermutung, dass etwas an den Com Parametern nicht stimmt.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von Slein
    NMEA Empfänger senden standardmäßig mit 4800 Baud und bei dem 'inverted' bin ich mir auch nicht ganz sicher
    PC RS232 Signale haben negative Logik "1" = -3...-15 V "0" = 3...15 V, da wäre 'inverted' schon richtig.. Allerdings müssen, wenn nicht ein RS232 zu TTl Wandler benutzt wird, aus diesem Spannungen noch 5/0 V gemacht werden. Im Einfachstem Fall reicht da eine Diode und ein ca. 1k8 R. Wobei die Diode die Negative Spannung gegen GND auf -0,6 V begrenzt und der 1k8 R den Strom Begrenzt (PC TX Seite). PC RX sollte auch mit 0 und 5 V klar kommen. Diese einfach lösung hat mit PIC's jedenfalls gut geklappt.

    Gruß Richard

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    09.12.2010
    Beiträge
    7
    Ja pegelwandler ist dran, Display funktioniert. Am PC ist aber auch 9600 Baud eingestellt? ich werds mal mit 4800 testen.
    Hat die Taktung vom µC darauf einfluß?

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von RubaSon
    Ja pegelwandler ist dran, Display funktioniert. Am PC ist aber auch 9600 Baud eingestellt? ich werds mal mit 4800 testen.
    Hat die Taktung vom µC darauf einfluß?
    Ja, sehr die Baudrate wird aus dem Takt generiert der Interne Taktgenerator ist nicht gerade genau und funktioniert bei hohen Baudraten nicht gerade gut ...bis nicht. Ein externer Quarz ist da besser am besten welche mit krummer Frequenz die passen besser um Standard Baudraten zu erzeugen. Die Baudrate muss mit den Fuses eingestellt werden, die Einstellung in Bascom ist nur für den Interpreter und muss mit der im Chip eingestellten übereinstimmen sonst rechnet das Programm fasch.

    Gruß Richard

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    09.12.2010
    Beiträge
    7
    mh klappt immer noch nicht... Mit dem Attiny13 und PC funktioniert die komunication mit 9600 baud perfekt. hab am mega16 auch mit 4800 probiert es kommt zum teil immer noch müll d.h. irgendwelche zeichen aber zwischendurch mal ein paar richtige zeichen.
    Gibts nicht doch ne möglichkeit ohne ext. quarz das in den griff zu bringen auf welche frequenz soll ich takten?

    Und wie stell ich die Baudrate mit den Fuses ein?

Berechtigungen

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

Solar Speicher und Akkus Tests