-         

Ergebnis 1 bis 3 von 3

Thema: Problem mit Serialout

  1. #1

    Problem mit Serialout

    Anzeige

    Ich habe mir das "AVR Mikrokontroller Lehrbuch" gekauft. Die darin beschriebene Testplatine mit dem ATmega8 habe ich mir zusammengebastelt. Soweit hat auch alles ganz gut geklappt. Ich habe jetzt ein wenig mit dem RS232-Anschluß rumgespielt.

    Folgendes Beispiel lief einwandfrei:

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    $baud = 9600
    
    Dim i As Byte
    
    Do
      If Usr.rxc = 1 Then
        I = Udr
        Select Case i
        Case "H"
          Print "Hallo AVR"
        Case "h"
          Print "hallo avr"
        Case Else
          Print "Unbekannter Befehl"
        End Select
      End If
    Loop
    End
    Wenn ich jedoch versuche den Outputpuffer zu aktivieren erhalte ich garkeine Daten mehr in AVRTerm. Das einzige was ich Hardwaremäßig geändert habe ist, dass ich PD5 mit dem Speaker verbunden habe. Ich höre nur ein gleichbleibenden Ton der sich für mein Ohr genauso hoch anhört, als wenn ich die If-Schleife weglasse.

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    $baud = 9600
    
    Config Serialout = Buffered , Size = 20
    
    Ddrd.5 = 1
    
    Do
      If _rs_head_ptrw0 = _rs_tail_ptrw0 Then
          Print "Dies ist ein Test."
      End If
      Portd.5 = Not Portd.5
      Waitms 1
    Loop
    End
    Für jedweden Tip wäre ich dankbar.

    kryzzie

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    30.12.2005
    Ort
    Tann / ZH
    Alter
    61
    Beiträge
    264

    Re: Problem mit Serialout

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    $baud = 9600
    
    Config Serialout = Buffered , Size = 20
    
    Ddrd.5 = 1
    
    Do
      If _rs_head_ptrw0 = _rs_tail_ptrw0 Then
          Print "Dies ist ein Test."
      End If
      Portd.5 = Not Portd.5
      Waitms 1
    Loop
    End
    Ich kenne zwar weder den ATMEGA8 noch dein Basic, aber anhand deines
    Codes habe ich einen Verdacht:
    1.Im 1.Code holst du das Zeichen aus dem Buffer.
    2.Im 2.Code ist für mich nicht zu erkennen wo Du das Zeichen abholst.
    3.Stattesen prüfst Du ob kein Zeichen im Buffer ist
    (_rs_head_ptrw0=_rs_tail_Ptrw0) und gibst in diesem Falle etwas zum Terminal zurück. Nachher schaltest Du den Lautsprecher ein und wieder
    aus. Das heisst, wenn Du den uC einschaltest, kommt kurz deine Meldung
    zurück, nacher kriegst Du nichts mehr...

    Einfach eine Vermutung ...
    MfG
    Ruedi

  3. #3
    Die beiden Codes haben nicht die gleiche Funktion. Das erste Program erhält einen Input und gibt darauf basieren einen Output raus. Das zweite Program gibt einfach dauerhaft den selben Output raus, jedoch gepuffert.

    Das Problem war, dass garkein Output zu sehen war, als ich das zweite Program laufen ließ. Die Lösung ist ein einfaches "Enable Interrupts" direkt vor der Do-Loop Schleife. Die ist im AVR-Buch leider nicht angegeben.

    Trotzdem danke für deine Hilfe

Berechtigungen

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