- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 18

Thema: Probleme bei Programmierung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    30.11.2009
    Ort
    Gütersloh
    Beiträge
    46
    Hallo Hero_123,

    das Phänomen kann ich nur bestätigen. Passiert bei mir von Zeit zur Zeit auch.
    Manchmal reicht es den XBee-Explorer (USB) aus zu stöpseln und wieder ein
    zu stöpseln - manchmal muß ich auch komplett den Rechner neu starten.

    Konfiguriert habe ich die XBee's ebenfalls als Coordinator und Enddevice. Baudrate 57600.
    Als Terminalprogramm verwende ich X-CTU.
    FTDI-Treiber Konfiguration: Senden/Empfangen 4096 Bytes
    Wartezeit: 1ms
    Timeouts Lesen/Schreiben: 0

    sourcecode

  2. #2
    Hero_123
    Gast
    Hallo sourcecode

    Einerseits freuts mich, dass Du die gleichen Probleme hast wie ich - anderseits ist das echt sch*** - könnte mir vorstellen, dass es am FTDI-Treiber liegt, habe es mit dem "alten" und dem "neuesten" Treiber ausprobiert - kein Unterschied...werden wohl damit leben müssen (also den NIBO NICHT ausschalten)..mein Treiber ist wie Deiner konfiguriert; ein wirklich gutes Terminalprogramm ist hterm - läuft auch auf WIN 7!

    Zu Deiner Frage - ich übertrage mit dem XBEE z.B die Drehzahl und lass sie mir im hterm als Dezimalwert anzeigen - dazu wandle ich den Wert und speicher ihn und schicke dann den Wert charweise über das XBEE-Modul: anbei einige Code-Schnipsel:

    #define buf 80 /* Groesse Char-Buffer Wert einlesen - Empfangsbuffer */
    char buf_ges[buf]; /* gesamter Buffer zum Werte rausschreiben */
    char temp_buf[8]; /* temporaerer Buffer zum zwischenspeichern */



    itoa((int8_t)copro_speed_l, temp_buf, 10); /* umwandeln und speichern der Speed links */
    strcat(buf_ges, temp_buf);
    usart_puts(buf_ges);


    /* Funktion, um Character auf Terminal auszugeben */
    extern void usart_putc(unsigned char c) {
    while(!(UCSR1A & (1 << UDRE1))){
    }
    UDR1 = c;
    }

    /* Funktion, um String auf Terminal auszugeben */
    extern void usart_puts(char *s) {
    while (*s){ /* solange nicht Stringende erreicht */
    usart_putc(*s); /* Aufruf Fkt usart_putc(*s) */
    s++; /* Zeichen um 1 weiter zaehlen */
    }
    }

    hoffe, das hilft ....

    Hero_123

    edit: habe vergessen zu erwähnen, dass bei mir über den UART1 gesendet wird (ich habe mir meine eigenen UART1-Fkt geschrieben), das XBEE Modul habe ich über SteckerX6 angeschlossen; verwendest Du das XBEE-Modul von nicai?
    Geändert von Hero_123 (22.12.2011 um 21:54 Uhr)

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    30.11.2009
    Ort
    Gütersloh
    Beiträge
    46
    Hallo Hero_123,

    vielen Dank für die Code Schnipsel. Momentan kann ich damit noch nicht sehr viel anfangen.
    Ich denke bzw. hoffe das es für meine Problemlösung etwas einfacher gehen sollte/dürfte
    Werde mich die Tage nochmal damit beschäftigen.

    sourcecode

  4. #4
    Hero_123
    Gast
    Hallo sourcecode

    Bei Unklarheiten/Fragen/Problemen => melden!

    mfg

    Hero_123

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    30.11.2009
    Ort
    Gütersloh
    Beiträge
    46
    Hallo Hero_123,

    mein Problem besteht natürlich nach wie vor.
    Ich bin auch noch nicht wirklich firm in der C-Programmierung, weswegen wir
    wohl dann auch ab und an mal Mittel und Wege zur Lösung fehlen.
    Vielleicht ist meine _Denke_ in diesem Fall auch falsch :-/
    Deine Lösung kommt mir im Moment noch etwas kryptisch vor weswegen
    ich mich da noch nicht ran traue und ich der Meinung bin (ohne es wirklich
    zu wissen) das es für meine Problematik eine _einfacherer_ Lösung geben
    müßte / sollte / könnte
    Nur mal so für mich zum Verständnis. Alle Werte (aller Sensoren z.B) werden
    in einer Variable sicherlich _binär_ gespeichert, oder ?
    Wie kriege ich die Werte dann in Hex umgewandelt. Nicht als Ausgabe mit
    _printf_ sondern als Hex-Wert gespeichert in einer Variable. Diese Hex-Werte
    wollte ich dann in einen Array schreiben, den ich dann später wieder auslesen
    kann.

    sourcecode

  6. #6
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Genau genommen werden die Werte nicht in einer Variable gespeichert. Die Variable steht nur für eine stelle im Speicher wo die Werte binär gespeichert werden
    Du musst die Werte nicht in Hex umwandeln. Einfach die Binärwerte anzeigen lassen. Terminals zeigen die Werte dann automatisch in Hexwerten an.
    Du musst nur eine Umwandlung vornehmen wenn du den Wert in Dezimal angezeigt haben willst.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

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

    Gruß
    Daniel

  7. #7
    Hero_123
    Gast
    Hallo sourcecode

    Ich versteh' nicht ganz, was Du da machen willst - weshalb willst Du den Wert dist_val1 = nds3_get_dist() in einen Hex-Wert umwandeln und dann in ein Array speichern? Gemäß NiboLib ist "nds3_get_dist()" die aktuell gemessene Distanz oder meinst Du uint8_t nds3_distances [181] - willst Du diese Werte in einem Array speichern und dann übertragen?
    Du kannst doch problemlos den Wert dist_val1 in einen String umwandeln (muss ein String sein zum Senden) und dieses zyklisch senden...

    Wie schon Kampi sagt - man kann in einem Terminalprogramm (z.B. hTerm http://www.der-hammer.info/terminal/, verwende ich, läuft auch problemlos unter WIN 7) sich die per XBEE übertragenen Werte als ASCII, HEX, BIN oder DEC anzeigen lassen. Es geht nur darum - wenn Du die Werte übertragen willst auf den PC - da mußte jeden Wert umwandeln in einen String und den Zeichenweise übertragen - dazu gibt's bei meinen Codeschnipseln die Funktionen:

    - umwandeln eines int8_t wertes in einen String und diesen speichern in einem Char_buffer
    - Funktion, um einen String auf Terminal auszugeben => diese Fkt ruft Funktion auf, um Char auf Terminal auszugeben
    - Funktion, um Char auf Terminalauszugeben

    Das Terminalprogramm macht dann aus den empfangenen Werten wieder eine "brauchbare" Anzeige - ich lass mir z.B die Motordrehzahlen, Abstand, Bodensensorenwerte, Motorströme auch per XBEE an den PC senden.

    mfg

    Hero_123

Ähnliche Themen

  1. Probleme mit der Asuro Programmierung...:(
    Von RobinHood im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 0
    Letzter Beitrag: 10.04.2010, 15:30
  2. Probleme bei Programmierung des Atmege32
    Von Daniel1979 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 01.04.2008, 15:29
  3. Probleme bei AVR Butterfly-Programmierung
    Von Youngtimer im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 21.11.2007, 18:01
  4. tiny13 Probleme mit Programmierung
    Von gulliver im Forum Assembler-Programmierung
    Antworten: 13
    Letzter Beitrag: 07.10.2007, 22:19
  5. Probleme mit IR/RC5 Programmierung
    Von Lutz im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 8
    Letzter Beitrag: 09.03.2005, 17:31

Berechtigungen

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

12V Akku bauen