- fchao-Sinus-Wechselrichter AliExpress    Werbung      
Ergebnis 1 bis 8 von 8

Thema: Bitmanipulation: Problem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    06.03.2011
    Beiträge
    97
    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 16:49 Uhr)
    MfG
    Stefan

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    06.03.2011
    Beiträge
    97
    Danke, nun hab’ ich es verstanden! Bild  

Ähnliche Themen

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

Berechtigungen

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

    Werbung      Solar Speicher und Akkus Tests