-

+ Antworten
Ergebnis 1 bis 4 von 4

Thema: UART - Buffer Problem?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72

    UART - Buffer Problem?

    Hallo,

    ich habe hier einen Joystick, bei dem das 10K Poti über ADC ausgewertet wird:

    http://www.sparkfun.com/products/9032

    Diese Werte werden von einem Atmega16 ausgewertet und per UART an einen Atmega8 übertragen (bspw. per print "A").

    Auf der Empfangsseite des Atmega8 verwende ich folgendes (cmd = Byte):

    Code:
      If Ischarwaiting() = 1 Then
          Cmd = Inkey()
        End If
    
        Select Case Cmd
        
        tu irgendwas
       
        End Select

    Mein Problem ist nun folgendes:

    Ich bewege den Joystick für 1 Sekunde in eine Position und dabei werden natürlich jede Menge Bytes übertragen, in diesem Fall viele "A".

    Das hat natürlich zur Folge, dass mit dem o. g. Code natürlich auch viele diese Bytes eingelsen und umgesetzt werden; also wenn 1x "A" Motor für 100 ms ON bedeutet, hört der natürlich nicht mehr auf...

    Ich hoffe ich konnte die Problematik darstellen.

    Vielen Dank für eure Hilfe,

    Christoph

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    24
    Beiträge
    3.489
    Blog-Einträge
    9
    Hi,

    was würde den dagegen sprechen wenn du eine 0 o.ä. sendest solange der Joystick in Ruheposition ist und dann machst du eine while()-Schleife.
    Solange ein A gesendet wird soll der Motor anbleiben. Dann hört er sofort auf sobald kein A mehr gesendet wird.
    Oder du sagst das nach dem ersten Senden des Buchstaben ein Flag gesetzt wird, welches erst wieder gelöscht wird wenn der Joystick eine andere Position eingenommen hat. Und damit überhaupt gesendet werden kann muss das Flag auf 0 sein. In etwa so:

    Joystick nach Vorne -> ADC detektiert das und es wird z.B. im Controller dem Buchstaben V zugeordnet.
    Jetzt willst du das V senden. Dabei wird gecheckt ob das Flag V_gesendet schon gesetzt wurde. Da du zum ersten mal was sendest ist das Flag = 0. Jetzt sendest du V und das Flag V_gesendet wird auf 1 gesetzt. Dadurch wird ein erneutes Senden blockiert. Erst wenn du den Joystick nach hinten bewegst und dadurch ein z.B. Z detektiert wird setzt du das Flag zurück.

    So in etwa sollte das Problem gelöst werden können (ist vielleicht noch nicht perfekt aber ich denke es ist ein guter Ansatz für eine Lösung).
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Hallo!

    Danke für den Tipp - es hat auch eine Verkleinerung des Pufferspeichers geholfen!

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    ##########
    Geändert von spelli2001 (07.05.2012 um 05:46 Uhr)

+ Antworten

Ähnliche Themen

  1. Write to SPI tx-buffer
    Von kmrish im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 1
    Letzter Beitrag: 15.08.2011, 09:31
  2. ATMega32 UART problem --> Problem gelöst
    Von ChristophB im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 12.03.2010, 18:45
  3. Serialin Buffer
    Von Red im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 13
    Letzter Beitrag: 13.11.2008, 09:23
  4. Aus Udr-Buffer Zeichen auslesen
    Von FuRanKu im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 10.06.2005, 23:35
  5. serialout Buffer
    Von PicNick im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 17.01.2005, 07:27

Berechtigungen

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