- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Datenübertragung über RXD und TXD

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    17.02.2006
    Beiträge
    29

    Datenübertragung über RXD und TXD

    Anzeige

    Praxistest und DIY Projekte
    Ich habe folgendes Problem.
    2 Atmega 128 sind über die Anschlüsse RXD und TXD verbunden.
    Beide Atmegas sollen wechselseitig Daten übertragen mittels Com1.
    Das funktioniert auch, aber wenn ich beide Atmegas gleichzeititg an einer Spannungsquelle einschalte. Ich möchte aber einen Atmega steckbar mit einem Anschlusskabel versehen. Wenn ich diesen dann einstecke läuft entweder die Sendestrecke oder die Empfangsstrecke nicht.
    Nur selten funktionieren auf Anhieb beide Strecken. Müssen die Atmegas bei Verbindungsaufnahme erst miteinander synchronisiert werden? Oder was mache ich falsch. Komme nicht mehr weiter.
    Kann mir jemand dabei helfen. Ein kleiner Tipp?

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    den Minus vergessen ?
    RXD,TXD und Minus müssen gelegt werden, besteht keine gemeinsame Stromversorgung.
    Gento

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    17.02.2006
    Beiträge
    29
    Den Minus habe ich natürlich verbunden.
    Es sieht so aus als würde ein RXD-Eingang blockiert werden, denn der entsprechende Atmega führt keinen Interrupt aus.
    Mein Programm arbeitet so, daß immer wenn URXC =1 ist die empfangenen Daten in mehrere Variablen abspeichert, um sie später abzuarbeiten.

  4. #4
    Hallo,

    kann jemand mir helfen, wie ich rn-minicontrol atmega168 den rn-motor mittels 3pol RS232 steuern kann ?

    was muss ich da tun ? Um die Verbindungen zwischen der beiden herzustellen und einen Befehl von rn-minicontrol zu rn-motor zu schicken.

    Danke
    Tan Thai

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    @Heideltrudel
    ggf. im Programm auf der RX-Seite in einer Schleife baud=xxx zuweisen. Das initialisiert die Schnittstelle neu - da die Ports auch für andere Zwecke verwendet werden können. (Alternativ in ASM neu initialisieren)

    Alternativ: eine Soft-COM-Routine benutzten - die bleibt definitiv nicht hängen. Wenn Du noch RX mit einen INT verbindest, brauchst Du auch nicht auf Daten in einer Schleife warten. Siehe dazu mein Bascom Codeschnipsel:https://www.roboternetz.de/phpBB2/ze...ag.php?t=17444

  6. #6
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Zu RN-Motor:

    Hier hab ich ein Beispiel für die C-Control von der CD, es läßt sich aber leicht auch auf AVR / andere RN-Boards übertragen. Statt Put musst du in Bascom nur CHR benutzen.
    Beispiel:

    statt wie bei der C-Control
    Code:
      Print "#rmi" ; : Put 2 : Put 58
    schreibt man in Bascom
    Code:
      Print "#rmi" ; chr(2 ); chr(58)
    usw.

    Statt Pause musst du WAIT schreiben

    $Baud=9600 am Anfang nicht vergessen



    Code:
    'DEMO das aufzeigt
    'wie einfach RN-Motor über RS232
    'auch mit einer C-Control angesteuert werden kann
    
    'Motorstrom festlegen
      
      Print "#rmi" ; : Put 2 : Put 58
      pause 20
     
     'beide Motoren ein
      Print "#rmo" ; : Put 2
      pause 20
    
     'beide motoren rechts
      Print "#rmd" ; : Put 2 : Put 0
    
      pause 20
      'geschwindigkeit
      Print "#rmg" ; : Put 2 : Put 25
      pause 20
    
      'endlos drehen
      Print "#rme" ; : Put 2
    
    #hinundher
      pause 1000
    
     'Linker motor nach links
      Print "#rmd" ; : Put 0 : Put 0
    
     'rechter motor nach rechts
      Print "#rmd" ; : Put 1 : Put 1
    
      pause 1000
    
     'Linker motor nach rechts
      Print "#rmd" ; : Put 0 : Put 1
    
     'rechter motor nach links
     'Print "#rmd" ; : Put 1 : Put 0
    
    GoTo hinundher

  7. #7
    Hallo,

    es hat funktioniert.
    Es macht wirklich spass, wenn es funktioniert.(hihihihihi)

    vielen Dank !
    Tan Thai

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    17.02.2006
    Beiträge
    29
    Hallo tomas
    Vielen Dank für deinen Tip. Ich habe das mit dem Baud=115600 in der Interrupt-Routine, als auch in der Hauptschleife verwendet. Leider ohne nennenswerte Veränderung. Das hat mich aber auf eine weitere Idee gebracht. Atmega Nr1 fragt ständig Portzustände ab und gibt die Zustände über TXD raus zu Atmega Nr2. Nach dem Senden der Zustände von
    8 Pins ist erst einmal eine Pause von ca. 4 Sekunden. Danach wiederholt Atmega Nr.1 seine Prozedur.
    Ich habe herausgefunden, dass immer wenn ich Atmega Nr2 in der Pause resete dann funktioniert die Datenübertragung immer.
    D.h. Er synchronisiert sofort richtig.
    Gibt es eine Funktion, mit der ich das Öffnen des RXD-Kanals erst in dieser Pause einsetzen lassen kann ?

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Hmm, klingt zwar hart, aber ich tippe auf Software Probleme ....

    Ich selbst habe mit diversen ATmega's ein Projekt realisiert, indem auch die µC <-> µC Kommunikation eine große Rolle spielte ... das einzieg Problem, das ich dabei hatte war eine Syncronisation RX/TX zu RS 422 (glaub).

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    17.02.2006
    Beiträge
    29
    Hallo Hanni,
    kannst du diese Synchronisation mal ein bischen näher beschreiben ?
    Vielleicht hilft es mir mein Problem zu lösen.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test