- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 6 von 6

Thema: Fehler bei Funkübertragung finden (bitte um Hilfe!!)

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.02.2006
    Alter
    37
    Beiträge
    140

    Fehler bei Funkübertragung finden (bitte um Hilfe!!)

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leute!

    Ich hoffe ich schreibe hier im richtigen Forum, aber ich finde einfach keines für eine Assembler Programmierung. Ich habe seit ein paar Monaten ein Projekt laufen in dem es darum geht einen Roboter über den PC mit Hilfe einer Funkübertragung zu steuern. Das funktioniert auch so halbwegs, aber ich verstehe nicht warum ich wenn ich mehrere Zeichen übertragen will immer warten muss (20ms) bis ich das nächste Zeichen übertragen kann. Ich sende mit 9600 Baud.

    Hier ist Mal ein kurzer Programmausschnitt, in dem ich meine Nachricht dann übertrage:

    Code:
    serout:
      call delay_20ms
      sbis UCSRA,UDRE
      rjmp serout
    
      out UDR, temp
    ret
    (PS.: vielleicht kennt das schon jemand aus dem Tuturial von www.mikrocontroller.net)

    In temp befindet sich die Nachricht. Das call delay_20ms ruft ein Unterprogramm auf, das 20ms wartet. Ohne diesem Befehl bekomme ich dann im VB Programm nur den ersten Buchstaben richtig an. Ich würde es verstehen wenn es mit 5ms oder so auch funktionieren würde, aber das tut es nicht, kann mir das mal jemand erklären?

    Ich freue mich auf eine baldige Antwort

    Gerko

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Klingt seltsam. Der Code ist unverdächtig.
    Irgendwas hat es wohl entweder mit dem Funk oder mit der VB Programmierung zu tun.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.02.2006
    Alter
    37
    Beiträge
    140
    am VB Programm liegt es warscheinlich nicht, ich hab das nähmlich auch mit dem Programm getestet das beim Easyradio quasi dabei war, also das ER V2_03.exe. Mit diesem ist es ebenfalls nur der erste buchstabe der richtig ankommt. Aber was kann es mit dem Funk zu tun haben?, Ich verwende derzeit noch ein 8cm langes Drahtstück, aber ich kaufe bald eine Antenne. ist das möglicherweise der Grund dafür?

    Würde ich allerdings ziemlich seltsam finden wenn das wirklich der Fall währe

    mfg Gerko

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.02.2006
    Alter
    37
    Beiträge
    140
    Also jetzt ist einige Zeit vergangen seit ich das Übertragungsproblem habe, aber gelöst ist es noch immer nicht. Ich bin allerdings auf einen Fehler in meiner Schaltung gekommen (am ATMega16 auf PIN 30 also AVCC hatte ich keine Spannung), allerdings hat das auch nichts geändert. Ich habe mal gelesen das man für eine Funkübertragung eine genaue Frequenz braucht, also einen externen Quarz. Ich bin allerdings neu auf dem Gebiet und weiß nicht welche Fuses für was sind, daher meine Frage:
    Wie kann ich den externen Quarz aktivieren?

    Gerko

    EDIT: Hab ich vergessen dazuzuschreiben, es handelt sich um einen 4MHz Quarz fals das jemandem weiterhilft

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.02.2006
    Alter
    37
    Beiträge
    140
    Also geklärt ist mein Problem immer noch nicht, BITTE HELFT MIR!

    Derzeit habe ich:

    Int. RC Osz. 4 Mhz; Start-up timer: 6CK+0ms [CKSEL=0011 SUT=00]

    aktiviert.

    Das dürte aber anscheinend irgend ein Interner Takt sein, und die sind ja angeblich nicht die genauesten (nicht ausreichend für eine Funkübertragung).

    Ich weiß jetzt aber nicht was ich aktivieren muss, damit der externe und nicht der interne verwendet wird. Ich glaube es ist der

    Ext. RC Osc. 3.0Mhz-8.0Mhz; Start-up timer: 18CK+0ms [CKSEL=0011 SUT=00]

    Aber ist ein Quarz ein RC Oscillator, und was bedeutet 18CK+0ms?

    Bitte um baldige Antwort, Gerko

  6. #6
    Hallo Gerko,
    der Schlüssel zur Lösung Deines Problems liegt wahrscheinlich in der Übertragungsgeschwindigkeit zum Easyradio Modul. Die Beschreibung sagt aus (Figure 6 Serial Data), dass die Übertragung beginnt, sobald der ER Puffer voll ist oder eine Übertragungslücke von 2 Byte ensteht. Wenn also der VB Overhead durch die Schleife mehr als 2 Byte Übertragungszeit beträgt, dann sendet das ER-Modul bereits das erste Zeichen und ignoriert oder verzögert die folgenden Zeichen.
    Lösungsansatz: Alle zu übertragenden Zeichen in einen Puffer schreiben und in einem Rutsch an die serielle Schnittstellen übergeben.
    Gruß
    Hans-Peter

Berechtigungen

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

12V Akku bauen