- LiFePO4 Speicher Test         
Ergebnis 1 bis 7 von 7

Thema: USART: sendchar () - Problem mit Integer

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist Avatar von erik_wolfram
    Registriert seit
    02.12.2009
    Ort
    Berlin
    Beiträge
    406

    USART: sendchar () - Problem mit Integer

    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
    406
    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
    406
    ...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 Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    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 !

Ä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, 09: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, 14: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, 22:42
  4. Problem mit USART
    Von chouifi im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 13.02.2007, 12: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, 11:14

Berechtigungen

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

12V Akku bauen