-         

Ergebnis 1 bis 9 von 9

Thema: [gelst] ber RS-232 Bit im Atmega32 setzen/rcksetzen

  1. #1
    Neuer Benutzer fters hier
    Registriert seit
    09.10.2009
    Ort
    Jena
    Alter
    34
    Beitrge
    16

    [gelst] ber RS-232 Bit im Atmega32 setzen/rcksetzen

    Anzeige

    Hallo Jungs, ich brauch mal wieder eure Hilfe...

    Und zwar mchte ich mit einem Terminalprogramm, ber RS-232 ein Bit im Controller setzten bzw. rcksetzen.

    Hier erstmal der Code:
    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000                                         
    
    $baud = 9600
    
    $hwstack = 32
    $framesize = 32
    $swstack = 32
    
    
    Dim Stehen As Byte
    Stehen.0 = 0
    
    Do
    
    Dim A As Integer , B As Integer
       A = 0
       B = 0
    
       A = Ischarwaiting()
    
       If A = 1 Then
            B = Inkey()
            Print "Inkey: " ; B
            Select Case B
                Case 48 : Stehen.0 = 0
    
                Case 49 : Stehen.0 = 1
    
            End Select
    
    End If
    
       If Stehen.0 = 1 Then
          Call ... 'Sub welches dann gestartet werden soll
       End If
    
    Loop
    Wie gesagt, zuerst wird das Byte deklariert und auch gleich gesetzt (hatte es auch schon mit dem SET Befehl im Bascom versucht).
    Je nachdem, welcher CHAR nun im Puffer des UART abgelegt wird, sollte nun die Routine gestartet werden oder nicht.

    Wie es auch nicht anders zu erwarten ist, Funktioniert der Code so nicht und meine Erfahrungen in der Richtung sind eher Dnn gest. Ich vermute, das irgendwas in der Kommunikation zwischen PC und UART nicht passt. Terminal Programm luft und auch das Flaschen mittels Bootloader geht, PRINT Befehle kommen auch an.

    Deshalb meine Frage an euch, wie man es zum Laufen bringen knnte, bzw. was falsch ist.

    Danke fr eure Hilfe!

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beitrge
    4.556
    Was sendest Du denn vom Terminal aus? 0 oder 1 werden ja
    nicht als Hex 00 bzw Hex 01 gesendet sondern als ASCII und
    darauf sollte Case dann auch prfen.

    Gru Richard

  3. #3
    Neuer Benutzer fters hier
    Registriert seit
    09.10.2009
    Ort
    Jena
    Alter
    34
    Beitrge
    16
    Richtig, sende 0 und 1. Was als ASCII 48 bzw. 49 kommt, doch auch wenn CASE darauf berprft gehts nicht.

    Die Variable A (Ischarwaiting) wird nicht 1.

    Danke fr den Versuch...

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Sdpfalz
    Alter
    43
    Beitrge
    2.240
    serial in buffered wird klemmen, weil das rxc-interrupt genutz wird
    und daher auch das rxc-flag resettet wird, daher kein ischarwaiting
    Vor den Erfolg haben die Gtter den Schwei gesetzt

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    38
    Beitrge
    642
    Ich lese Daten vom PC immer mit dem Inkey Befehl ein, daher wrde ich das ischrwaiting durch Inkey ersetzen das hat bei mir immer hingehauen.

    A= Inkey ()

    If A = 49 Then....
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  6. #6
    Neuer Benutzer fters hier
    Registriert seit
    09.10.2009
    Ort
    Jena
    Alter
    34
    Beitrge
    16
    Danke vitis und der Rest...

    Hab SERIALIN auskommentiert und die CASE Abfrage auf die ASCII Werte 48 (0) bzw. 49 (1) gendert und es funktioniert.

    Wird kein Puffer bentigt, wenn man nur ein Zeichen ausliest?


    MfG Befedo und ein frohes Fest euch allen!

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2008
    Ort
    Kln
    Beitrge
    459
    hi
    knntest du den funktionierenden code posten?

    MFG
    Dominik

    P.S.: Ein frohes Fest euch allen

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Sdpfalz
    Alter
    43
    Beitrge
    2.240
    nein, der Buffer wird fr ein Zeichen nicht bentigt, weil
    der AVR einen Buffer von einem Zeichen schon
    harwaremig dabei hat, nmlich das UDR-Register.
    Da passt genau ein Byte rein.
    Vor den Erfolg haben die Gtter den Schwei gesetzt

  9. #9
    Neuer Benutzer fters hier
    Registriert seit
    09.10.2009
    Ort
    Jena
    Alter
    34
    Beitrge
    16
    @Dominik009

    Hab den Code im ersten Beitrag editiert, das ist der der luft.
    Wie gesagt, das Byte heist STEHEN und die CASE Anweisung berprft ob 0 oder 1 (ASCII 48 bzw. 49) als INKEY empfangen wurde.

    MfG Befedo

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhnge hochladen: Nein
  • Beitrge bearbeiten: Nein
  •