-
        

Ergebnis 1 bis 7 von 7

Thema: USART: sendchar () - Problem mit Integer

  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    405

    USART: sendchar () - Problem mit Integer

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    ich komme einfach nicht weiter voran da ich an einem kleinem?! Problem scheitere - im Simulator funktioniert alles, doch wenn ich das Programm auf dem Microcontroller ausführe werden die Zeilen ausgelassen/übersprungen.

    Hier mal Ausschnitte aus dem Quellcode:
    Code:
    void sendchar (unsigned char c)
    {
        while (!(UCSR0A & (1 << UDRE0))) // Warten, bis Senden möglich ist
        {
            ;    // tu was
        }
        
        UDR0 = c;                    // schreibt das Zeichen aus 'c' auf die Schnittstelle
    }
    Code:
    unsigned char mychar;
    uint8_t i;
    
    ....
    
            i = 1;
            mychar = (int) i;    
            mychar = i;
            sendchar (mychar);
            
            sendchar (i);
            
            sendchar ((int) i);
            
            sendchar ((char) i);
            sendchar (' ');
    Lediglich die letzte Zeile wird übertragen: " " (Leerzeichen).
    Laut Simulator müssten alle Variationen funktionieren!

    Ich habe auch die Funktion sendUSART () ausführlich getestet - es gibt keinerlei Fehler bei der Übertragung von langen Strings!

    Ich stehe mit meinem Latein am Ende - denn leider komme ich ohne die Lösung dieses Problems nicht weiter.
    Ich hoffe hier kann mir jemand bitte aushelfen?

    Ich Suche eine einfache Möglichkeit zur Übertragung der 8-Bit Integer Werte die möglichst rechenarm ist - und aus der Theorie geht ja hervor, dass 8-Bit Integer und Char das gleiche sind....

    Gruß Erik
    Meine Projekte auf Youtube

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Wenn die Ausgabe des Terminals nicht auf Hex o.ä. steht, dann wirst Du bei ASCII 1 nicht viel zu sehen bekommen.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    405
    Die "normale" Ausgabe von Strings funktioniert ja Problemlos! Diese werden korrekt übertragen!
    Aber möchte ich ein einzelnes Zeichen eines 8-Bit Integers üebrtragen kommt garnichts an - also auch keine falschen Zeichen - als ob die Zeilen nicht existieren!

    Ich verwende Putty - das macht eigentlich keine Probleme (Anderes habe ich auch getestet) - aber die fehlenden Zeichen deuten für mich eher auf ein C-Problem hin!
    Meine Projekte auf Youtube

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Schreib' doch mal i = 65 und probier's nochmal. Hast Du in 'ner ASCII-Tabelle nachgesehen, was ASCII 1 bedeutet ?

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    405
    ...das ist peinlich...

    Mir war leider nicht bewusst, dass es noch Befehle im ASCII-Code gibt - diese wurden natürlich ausgeführt.... hatte Versuchsweise die 7 getestet und mich gewundert warum es plötzlich immer BING machte.... so funktioniert natürlich alles:
    Code:
    mychar = (char) i + '0';    
    sendchar (mychar);
    Vielen Dank für die Hilfe
    Meine Projekte auf Youtube

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.401
    Zitat Zitat von erik_wolfram Beitrag anzeigen
    Mir war leider nicht bewusst, dass es noch Befehle im ASCII-Code gibt - diese wurden natürlich ausgeführt.... hatte Versuchsweise die 7 getestet und mich gewundert warum es plötzlich immer BING machte.... so funktioniert natürlich alles:
    Code:
    mychar = (char) i + '0';    
    sendchar (mychar);
    Und was passiert, wenn i = 12 ist?

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    Zitat Zitat von Klebwax Beitrag anzeigen
    Und was passiert, wenn i = 12 ist?

    MfG Klebwax
    Dann gibt es ein Sternchen Spaß beiseite, dafür gibt es Funktionen wie itoa, dtostrf oder die xyprintf-Derivate. Die haben als Ergebnis meist eine konvertierte Zeichenfolge, die du dann zeichenweise senden kannst.

    Man muss das Rad ja nicht immer neu erfinden.
    Grüße,
    Daniel

Ähnliche Themen

  1. Problem mit dem USART...
    Von Mnemonic82 im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 4
    Letzter Beitrag: 18.05.2012, 10:59
  2. Problem mit Datentypen (z.B. Integer Zahl in float)
    Von HF SHOOTER im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 09.12.2007, 15:57
  3. Anfänger: Problem mit Integer -overflow und weitere Fragen
    Von Harry252 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 19.08.2007, 23:42
  4. Problem mit USART
    Von chouifi im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 13.02.2007, 13:03
  5. double to integer oder exp(x) mit integer
    Von fambi_mail im Forum C - Programmierung (GCC u.a.)
    Antworten: 21
    Letzter Beitrag: 02.03.2006, 12:14

Berechtigungen

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