Forum: Mikrocontroller und Digitale Elektronik bits einer Variable ansprechen


von kay (Gast)


Lesenswert?

Hallo AVR Cracks
Ich arbeite mit dem AVR2313.

ich möchte in meiner Software nach Bit-Zuständen abfragen, welche in 
einer von mir definierten Variabel enthalten sind
//*************************************
//die definition der Variabel
static volatile uint8_t move_reg;

//die definition der Bits in der Variabel
#define  acc_ramp  =0
#define  dec_ramp  =1
#define  dir_cw  =2
#define  dir_ccw  =3

//der Zugriff auf das Bit (versuchte Variante 1)
if(move_reg,dir_ccw)
{
}

//Zugriff Variante 2
if(bit_is_set(move_reg,dir_ccw)
{
}

//Zugriff Variante 3
if((move_reg,dir_ccw)==1)
{
}
//**************************
>>der avrgcc compiler gibt mir dabei immer Fehler aus!!

Ich habe im Assembler-instruction-set gesehen, dass es einen Befehl
SBRC und SBRS gibt, welche bits in Registern kontrollieren. Nun habe ich
nirgens ein "C"-Befehl dafür gefunden.

Hat jemand von Euch eine Idee, wie ich das Lösen kann.

Vielen Dank
Gruss
Kay

von Lars (Gast)


Lesenswert?

if( move_reg&(1<<dir_ccw) )

ist wahr sofern das bit dir_ccw in move_reg gesetzt ist

von kay (Gast)


Lesenswert?

Hallo Lars
Das sieht doch schon nach einem Kurzen Befehl nach meinen Vorstellungen 
aus!

Meine Fragen dazu:
-kann ich den Befehl gerade so eintippen (Klammern)?
 (oder so: if(move_reg&(1<))

-Wie sieht dieser Befehl in asm aus?

Vielen Dank für Deine Hilfe

Gruss
Kay

von kay (Gast)


Lesenswert?

ahh wohl eher so
if(move_reg&(1<dir_ccw))
{
}

...oder?

von kay (Gast)


Lesenswert?

nochmal.....

if(move_reg&(1<dir_ccw))
{
}

von kay (Gast)


Lesenswert?

also die Darstellung ist so im Forum nicht möglich.

werde es mal so versuchen, danke Lars

von Lars (Gast)


Lesenswert?

hmm irgendwie geht das nicht sehr seltsam....liegt am forum
also ich probier das mal so zu schreiben mit worten :)

if "klammerauf" move_reg "und" "klammerauf" 1 "kleiner kleiner" dir_ccw 
"klammerzu" "klammerzu"

von kay (Gast)


Lesenswert?

hi hi
komischer Effekt.
Danke Lars, habe es auch so interpretiert.

werde mal versuchen dies so zu übernehmen.

Mal schauen was der avrgcc dazu meint.

Gruss
Kay

von kay (Gast)


Lesenswert?

das will bei mir nicht so richtig funzen.

Der compiler gibt immer die Fehlermeldung:
>>parse error before '='
..obwohl ich kein "=" im Code habe.
(Mein Notebook muste ziemlich viel schimpf und schande anhören...;-)

Das selbe Problem hatte ich schon mit den ersten 3 Versuchen.
muss ich noch zusätzliche "Headers includen".

folgende sind bereits vorhanden.
>>>************************
#include <io.h>
#include <io2313.h>
#include <sig-avr.h>
#include <interrupt.h>
#include <inttypes.h>
#include <progmem.h>
#include <eeprom.h>
#include <iomacros.h>
#include <stdlib.h>
>>>************************


Gruss
Kay

von kay (Gast)


Lesenswert?

hi hi
also auch in Worten..
io.h , io2313.h , sig-avr.h , interrupt.h , inttypes.h , progmem.h ,
eeprom.h , iomacros.h , stdlib.h

..sind integriert

von Andreas (Gast)


Lesenswert?

Zeig mal den Sourcecode...


Andreas

von Andreas (Gast)


Lesenswert?

Das Problem mit den Klammern im Forum sollte jetzt gelöst sein...

von kay (Gast)


Lesenswert?

ufff ich habe den Fehler gefunden (ich dachte mir noch es sei so was 
banales.....

ich habe die Bit-Definition so geschrieben
#define dir_ccw =3

..dort wird aber die Zuweisung ohne "=" erwartet..

das ist meine Erkenntnis für heute Nachmittag.....;-)

das Positive dabei ist, dass ich nun durch das Probieren verschieden 
Wege gefunden habe

Ich Danke Euch vielmals für die Unterstützung!!

Grüsse aus der Schweiz

PS: Andreas, ich werde den Code gerne im Forum posten, wenn SOLCHE 
Fehler eliminiert sind.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.