- LiFePO4 Speicher Test         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Daten Senden Empfangen Ic -> Pc -> Ic

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.698
    Code:
      #define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)    // clever runden
    Wer hat denn diese Formel erfunden - genauer den offset BAUD*8 ? Bisher dachte ich immer (und bei mir läufts) dass die richtige Formel, z.B. auf Datenblatt mega16A 8154B–AVR–07/09 - Seite 150 Tabelle 19-1 steht.

    Zitat Zitat von hans99 Beitrag anzeigen
    .. wenn Du ein Zeichen "A" an den Atmega16 schickst dann sendet der PC 10000001 an den µC ..
    ASCII ist im Ursprung siebenbittig. Daher ist in ASCII ein 'A' (0)100 0001. Die (meisten?) C-Konventionen erlauben aber stattdessen die Syntax 'A' - Buchstabe mit Strichelchen. Wie es Hans schon als Gastredner dargestellt hat.
    Geändert von oberallgeier (25.10.2015 um 08:32 Uhr) Grund: Die Sache mit dem ASCII 'A'
    Ciao sagt der JoeamBerg

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von oberallgeier Beitrag anzeigen
    Wer hat denn diese Formel erfunden - genauer den offset BAUD*8 ?
    Das ist das, was im Kommentar steht. Es sorgt dafür, dass bei der Integer-Division eine Rundung stattfindet. Aus X/Y wird (X+Y/2)/Y gemacht, so wird das Ergebnis von (z.B.) 9/5 zu 2 statt 1.

    - - - Aktualisiert - - -

    Code:
            itoa (Line, Buffer, 10);        // Aus der Variablen a ein Text erstellen
    Diese Zeile ist Unsinn.
    MfG
    Stefan

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    22.10.2015
    Beiträge
    11
    Hallo

    Ich habe es mal mit den festen Variablen probiert, aber da kommt alles nur nicht das an wo ich los geschickt habe. Habe das HyperTerminal von Win XP benutzt.
    Also kann es an der Umwandlung nicht liegen oder?
    Habe auch mal den uC getauscht hätte ja sein könne das der ein defekt hat, hat sich aber nichts geändert.

    Warum ist diese Zeile Unsinn?
    Code:
    itoa (Line, Buffer, 10);        // Aus der Variablen a ein Text erstellen
    Ich muss doch meine Variable in einen Text umwandeln damit ich diesen übertragen kann oder nicht?

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von knoddelpusch Beitrag anzeigen
    Ich muss doch meine Variable in einen Text umwandeln damit ich diesen übertragen kann oder nicht?
    Und dir kommt es nicht irgendwie merkwürdig vor, dass der Kommentar sagt, dass etwas mit der Variable a getan werden soll, diese aber gar nicht in der Code-Zeile vorkommt?
    MfG
    Stefan

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von drew
    Registriert seit
    06.04.2005
    Beiträge
    161
    Hallo,
    Da gibt es doch den alten Trick bei der RS232, dass man RX und TX verbindet. Dann wird das auf dem Terminal empfangen, was man gerade gesendet hat.
    Auf die Weise kann man testen, wie weit die Übertragung noch gut gegangen ist. (Vor dem Pegelwandler, direkt auf der Platine, ...)

    Man kann aber nicht erkennen, ob die eingestellte Baudrate auf dem Controller zu der auf dem PC passt. (Komisches Zeug auf der RS232 hört sich irgendwie nach falscher Baudrate an.)


  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    22.10.2015
    Beiträge
    11
    Hallo,
    danke für den Tipp, hätte man ja auch selbst drauf können.
    Habe das auch gleich mal getestet.
    Habe die Brücke auch nach dem Pegelwandler gemacht und es funktioniert super, es kommen immer die Buchstaben bzw. Zahlen an wo ich los schicke.
    Habe auch schon unterschiedliche Baudrate (auf PC und uC) ausprobiert es kommt aber immer was anderes an.

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.093
    Hast du schon versucht statt der Berechnung der Baudrate es fix einzustellen? Im DB steht für einige übliche Frequenzen die Baudraten mit den Einstellungen.

    MfG Hannes

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    37
    Beiträge
    5.093
    Wenn du schon nichts Fixes übertragen kannst, liegt es an der Einstellung (unterschiedliche Einstellungen PC-uC) oder einer nicht funktionierenden Verbindung (defekte Lötstelle, RX/TX falsch angeschlossen, ...).

    Es gibt noch weitere mögliche Fehler, aber das würde ich als erstes kontrollieren.

    MfG Hannes

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    22.10.2015
    Beiträge
    11
    Hallo


    mhh defekte Lötstellen kann ich mal kontrollieren, kann ich mir jetzt weniger vorstellen.
    Ich benutzt zur Programmierung das STK500 Board.
    RX/TX kann ich auch ausschliessen denn wenn ich die zwei Pins drehe kommt nichts mehr an.

    Was für einstellung kann es denn noch geben. StopBits = 1, Buad = 9600, Datenbits = 8

    Wenn ich jetzt eine feste Variable übertragen will z.B. "j" bekomme ich auf meinem Hyperterminal ein ö angezeigt

    @ sternst
    ich habe die Variable a zu Testzwecken durch die Line variable ausgetauscht. Aber das hat auch nicht funktioniert. Da steht jetzt wieder a.
    Geändert von knoddelpusch (25.10.2015 um 12:58 Uhr)

  10. #10
    Erfahrener Benutzer Roboter-Spezialist Avatar von sast
    Registriert seit
    30.11.2004
    Alter
    54
    Beiträge
    502
    Wenn ich jetzt eine feste Variable übertragen will z.B. "j" bekomme ich auf meinem Hyperterminal ein ö angezeigt
    Sieht nach Baudrate aus.

    Am Anfang hast du 1MHz als F_CPU dann zwischendurch mal 12MHz. Was stimmt denn nun? Denn das ist nicht ganz unwichtig für die korrekte Baudrateneinstellung. Was steht denn im makefile und da 12MHz sicher extern in den Controller gehen, sind die Fuses richtig eingestellt? Wenn das alles stimmt, sollte auch das richtige Zeichen kommen bzw immer das gleiche verkehrte Zeichen.

    Wenn mit
    Code:
    // Warteschleife
    void delay_ms(unsigned int ms)
    {
        unsigned int zaehler;   
        while (ms) {
            zaehler = F_CPU / 5000;       
            while (zaehler) {
                __asm volatile("nop");
                zaehler--;
            }
            ms--;
        }
    }
    
    //und in der main 
    
    delay_ms(1000);
    LED an;
    delay_ms(1000);
    LED aus;
    die LED ungefähr im Sekundentakt an und dann wieder aus geht, dann stimmt dein F_CPU mit deiner Theorie überein. Sonst musst du da noch einmal drüber schauen.

    sast

    雅思特史特芬
    开发及研究

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Daten senden und empfangen mit IR
    Von GerdM im Forum Robby RP6
    Antworten: 3
    Letzter Beitrag: 21.06.2009, 12:40
  2. RS232 daten empfangen, senden und auswerten
    Von Crischan im Forum Software, Algorithmen und KI
    Antworten: 62
    Letzter Beitrag: 20.03.2009, 16:10
  3. USART Senden und Empfangen von Daten.
    Von Ferdinand im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 05.02.2009, 22:13
  4. Daten senden/empfangen
    Von FSTII im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 29.12.2006, 16:25
  5. Antworten: 1
    Letzter Beitrag: 22.09.2006, 16:33

Berechtigungen

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

Labornetzteil AliExpress