www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik bits einer Variable ansprechen


Autor: kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if( move_reg&(1<<dir_ccw) )

ist wahr sofern das bit dir_ccw in move_reg gesetzt ist

Autor: kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahh wohl eher so
if(move_reg&(1<dir_ccw))
{
}

...oder?

Autor: kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nochmal.....

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

Autor: kay (Gast)
Datum:

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

werde es mal so versuchen, danke Lars

Autor: Lars (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zeig mal den Sourcecode...


Andreas

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem mit den Klammern im Forum sollte jetzt gelöst sein...

Autor: kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.