- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 8 von 8

Thema: Bitmanipulation: Problem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Vorher waren alle als uint8_t deklariert. Es funktioniert mit lsb als uint8_t, msb als uint8_t und returnvar als uint32_t. Jetzt ist es deklariert mit lsb als uint8_t, msb als uint16_t und returnvar als uint32_t, damit funktioniert auch alles problemlos.
    Dieser Ausschnitt sieht so aus:

    Code:
    uint32_t getValue(uint8_t adr) 
    {
    	uint8_t lsb_srf = 0;
    	uint16_t msb_srf = 0;
    
    	uint32_t returnvar = 0;
    
    	[herausfinden von msb/lsb (I²C) und returnvar]
    
    	return ((returnvar << 16) | (lsb_srf << 8) | msb_srf);
    }
    und so wird es wieder ,,zerlegt":

    Code:
    gM_srf = getValue(ADDRESS);
    								
    gM_check = ((gM_srf & 0xff0000) >> 16);
    
    if(gM_check == 0)
    {
    	srf10_l = (gM_srf & 0xffff);
            [...]
    }

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    "lsb_srf << 8" funktioniert mit lsb_srf als uint8_t weil die Operation '<<' (wie auch alle anderen Operationen) in C mindestens in int (also hier 16-Bit) durchgeführt wird.

    Nachtrag:
    damit funktioniert auch alles problemlos.
    Obiges bedeutet aber auch, dass das Ergebnis von "lsb_srf << 8" dann signed ist. Probiere deinen Code mal mit einem Wert für lsb_srf bei dem das höchste Bit gesetzt ist, und bestaune dann das Ergebnis.
    Geändert von sternst (02.01.2013 um 17:49 Uhr)
    MfG
    Stefan

  3. #3
    Danke, nun hab’ ich es verstanden!

Ähnliche Themen

  1. problem mit bitmanipulation
    Von _maddin im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 30.07.2008, 00:37
  2. Bitmanipulation
    Von raoul4 im Forum Assembler-Programmierung
    Antworten: 6
    Letzter Beitrag: 03.04.2007, 13:54
  3. Anschlussbelgung anpassen mit Bitmanipulation
    Von waldi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 19.12.2006, 13:04
  4. Bitmanipulation in ASM
    Von teslanikola im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 11.04.2006, 13:19
  5. Bitmanipulation
    Von teslanikola im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 29.08.2005, 21:28

Berechtigungen

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

12V Akku bauen