10 bit Wandlung ATmega128

Gast #72011
Tag zusammen!

Ich hab eine 10 bit Wandlung versucht weiter zu brechnen.

Schaut mal:

unsigned char wandlung_Lspg;
unsigned char wandlung2_Lspg;
unsigned int a;
unsigned int a1;

read_adc(0x00);
wandlung_Lspg  = ADCL;
wandlung2_Lspg = ADCH;
a  = (wandlung2_Lspg << 8);
a1 = (a | wandlung_Lspg);
laserspg = a1 * 0.01961;

Bei der Version sagt mein Compiler aber:

shift result will be 0

Kann mir einer sagen wieso? Was mach ich denn da falsch?

Jetzt schon Danke!

Gruß

Carsten
Gast #72012
Hallo

Da du wenig schreibst welchen Compiler du nimmst, nehme ich an, du
nimmst WINAVR.

Bei mir läuft der Code im Simulator. Ich nehme ja an, das du auch Komma
Stellen haben möchtest, dann würde sich ein float an bieten. Auch
kannst du mit ADCW auf den ADC Wert zugreifen.


float static laserspg;

laserspg =  ADCW * 0.01961;

Klappt im Simulator gut.

MFG
Dieter
Gast #72013
weiss nicht genau, ob sich alle Compiler gleich verhalten.
a  = (wandlung2_Lspg << 8);
kann heissen, wandlung2_Lspg (ist ja ein char) wird um 8 Stellen
verschoben und dann dem int zugewiesen und ist damit immer 0. Die
andere Alternative wäre, dass es erst zugewiesen (16bit) und dann
geschoben wird.
funktionieren muss auf jeden Fall:

a=wandlung2_Lspg;
a=a<<8

oder:
a=(int) wandlung2_Lspg<<8;

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.