- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 4 von 4

Thema: Befehle über RS232 empfangen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.01.2005
    Beiträge
    27

    Befehle über RS232 empfangen

    Anzeige

    Praxistest und DIY Projekte
    Hi ich benutze folgenden Controller:
    http://www.shop.robotikhardware.de/s...products_id=10
    Nun meine Frage:
    Wie kann ich Befehle wärend der Laufzeit an den Controller senden?
    Also dieser soll z.B den Befehl erhalten eine Sek. den rechten Motor einzuschalten.
    Kann mir jemand sagen oder noch besser ein Beispiel geben, wie ich den Controller programmieren muss, damit er auf einen Befehl vom Computer (RS232-Schnitstelle) wartet?
    Wie kann ich dann z.B den Motor ansteuern, damit dieser beginnt zu drehen?

    Hat jemand ein Codebeispiel für dieses Problem?????

    Vielen Dank für die Hilfe!

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.03.2004
    Ort
    Paderborn
    Alter
    40
    Beiträge
    614
    Wie du das UART initialisierst, steht im Datenblatt von dem ATMEGA(der Abschnitt heist sogar so.). Im Prinzip musst du nur das Bit RXEN setzen und die Baudrate in UBRL einstellen. Das Datenblatt gibt's etwa bei atmel.de .
    Dann wartest du in einer Endlosschleife darauf, dass das RXC-Bit gesetzt wird, guckst in UDR, was für ein Byte angekommen ist und machst dann das, was der Befehl bedeutet. Danach setzt du RXC wieder auf 0 und kehrst in deine Schleife zurück.
    Das Ganze geht auch noch eleganter mit Interrupts(frag' ggf. nochmal nach).
    it works best if you plug it (aus leidvoller Erfahrung)

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    14.01.2005
    Beiträge
    27
    Dieses Datenblatt liegt dieses beim Controller/ Board bei?
    Das UART ist dann die Schnitstelle für die Kommunikation zum PC sehe ich das richtig? Wie funktioniert dies dan beim Empfangen? Wartet der Controller immer, bis er etwas empfängt oder läuft er einfach weiter in der Schleife? Wie funktioniert es den mit Interrupts? (Was ist das überhaupt)??? Sorry bin noch neu auf diesem Gebiet, habe bis jetzt nur C++ Appl. geschrieben.... Hätte mir jemand ein Beispiel zu der ganzen Kommunikation? (Für den Teil auf dem Controller)

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.03.2004
    Ort
    Paderborn
    Alter
    40
    Beiträge
    614
    Dieses Datenblatt liegt dieses beim Controller/ Board bei?
    keine Ahnung. Wenn es ein Datenblatt für deinen ATMEGA32 ist, kann es jedenfalls nicht verkehrt sein.
    Das UART ist dann die Schnitstelle für die Kommunikation zum PC sehe ich das richtig?
    Ja.
    Wie funktioniert dies dan beim Empfangen? Wartet der Controller immer, bis er etwas empfängt oder läuft er einfach weiter in der Schleife?
    Das könntest du z.B. so machen:
    Code:
    for(;;){ //diese Schleife kommt in dein Hauptprogramm und läuft immer wieder durch
    while (!(UCSRA&BV(RXC)));; //macht nix, bis etwas empfangen wurde
    if (UDR==0) Bewegemotor(-1);
    if (UDR==1) Bewegemotor(1);
    }//wenn er sich dann um den Befehl gekümmert hat, geht er wieder zurück in die Warteschleife bis ein neuer ankommt.
    Wie funktioniert es den mit Interrupts? (Was ist das überhaupt)???
    Ein Interrupt erlaubt es dir, auf Befehle zu reagieren, ohne, dass der Controller die ganze Zeit darauf wartet.
    Sorry bin noch neu auf diesem Gebiet, habe bis jetzt nur C++ Appl. geschrieben
    Wenn du schon C++ kannst, solltest du mit etwas Geduld im Datenblatt 'rauskriegen, wie man den Controller bedient.
    Hätte mir jemand ein Beispiel zu der ganzen Kommunikation? (Für den Teil auf dem Controller)
    Ich hoffe, das Prinzip ist in dem Codeschnipsel klargeworden. Du musst vorher nur beim Start des Controllers je nach gewünschter Baudrate einen Wert in UBRRL(und ggf. auch in UBRRH) schreiben und das RXEN-Bit(zum aktivieren des Empfangs über das UART) setzen(ich verweise nochmal auf das Datenblatt, da ist die Prozedur genau beschreiben. Wenn du da was nicht verstehtst, kannst du ja gerne nochmal genau danach fragen.).
    it works best if you plug it (aus leidvoller Erfahrung)

Berechtigungen

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

Labornetzteil AliExpress