- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 11

Thema: uint16_t größte Variable?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Da ich es schon anders gelöst habe, habe ich den genauen nicht mehr, aber das Prinzip war genau so:
    Code:
    uint32_t myVar = 65500;
    char tmp[12] = {0};
    
    
    while(1) {
        sprintf(tmp, "%u", myVar);
        lcd_string(tmp);
        
        myVar++;
    }
    EDIT: Ich verwende einen Mega8, falls das einen Unterschied macht.

    mfg

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Zitat Zitat von Wsk8 Beitrag anzeigen
    sprintf(tmp, "%u", myVar);
    %u ist 16 Bit breit, nimm Mal %uu ...

    Grüße,
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Die Ausgabe funktioniert jetzt, aber die anfängliche Berechnung ist immer noch falsch

    Die sieht so aus:
    Code:
    #define TICK 32
    
    
    uint32_t myVar = 0;
    
    
    ISR(...) {
    	myVar = TCNT1;
    	TCNT1 = 0;
    	
    	myVar *= TICK;
    	
    	...
    }
    mfg

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.06.2011
    Ort
    Dresden
    Beiträge
    219
    hi,
    evtl.: myVar*=(uint32_t)TICK;
    mfg
    Achim

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Zitat Zitat von Wsk8 Beitrag anzeigen
    Die Ausgabe funktioniert jetzt, aber die anfängliche Berechnung ist immer noch falsch
    Was passiert? Das myVar 32-Bit breit ist, muss die Multiplikation auch mit 32-Bit erfolgen. Das sollte so eigentlich stimmen ...
    Du könntest Mal probieren, "#define TICK 32UL" zu schreiben (das hat die gleiche Wirkung wie der Vorschlag von Achim), ggf. bekommst du Probleme wegen unsigned*signed, aber ich bezweifle das.

    Grüße,
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Einige von Atmel verbreitete Distributionen von avr-gcc enthalten fehlerhafte 32 = 16*16 routinen, siehe z.B.

    http://gcc.gnu.org/PR52474
    Disclaimer: none. Sue me.

Ähnliche Themen

  1. Car2Go - Größte Elektro-Autoflotte rollt in Stuttgart
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 29.11.2012, 13:50
  2. NIBO2 - IR-Sendefkt nicht korrekt - "copro_TransmitRC5(uint16_t code)"
    Von Hero_123 im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 5
    Letzter Beitrag: 12.03.2012, 08:24
  3. Bitweiser Zugriff uint16_t
    Von shedepe im Forum C - Programmierung (GCC u.a.)
    Antworten: 9
    Letzter Beitrag: 20.07.2011, 12:58
  4. Warum uint16_t statt unsigned int?
    Von ricola im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 05.07.2007, 17:38
  5. if Variable > 1 then Variable + 1
    Von klaus1973 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 26.11.2005, 14:31

Berechtigungen

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

Labornetzteil AliExpress