Bitweise ausgabe einer Variablen

Gast #910147
Lesenswert?
• ▲
▼
Hallo leute hab mal eine Frage vielleicht habt ihr eine Lösung.

Und zwar hab ich mir eine TWI Schaltung mit 2 ATmega8 gebaut und 
übertrage Daten von einem zum Anderen.

Im Slave werden die Daten aus dem TWDR in eine Variable uint8_t DATA 
kopiert und nun müchste ich Testweise die einzelnen Bitstellen (0 oder 
1) per Uart ausgeben um die Daten zu Prüfen ich glaube das diese nicht 
Korrekt übertragen werden.

Die Ausgabe soll wie folgt lauten:

DATA Bit 1:0/1 (je nachdem was drinsteckt)
DATA Bit 2:0/1
.
.
.
usw.

Allerding fällt mir absolut keine Lösung ein.

MFG
Flo
Gast #910171
Lesenswert?
• ▲
▼
Hi

Dann sollte die C-Spezies ran. Bin notorischer Assemblerprogrammierer.

Aber in C gibt es auch eine and-Funktion. Wenn du deine Variable mit 
einer Bitmaske and-verknüpfst, in der nur das zu prüfende Bit gesetzt 
ist, wird das Ergebnis 0 bei Bit=0 und >0 wenn Bit=1. Danach kannst du 
entscheiden. Als Bitmaske kann mann z.B.  '1<<3' für Bit 3 nehmen.

MfG Spess
Gast #910174
Lesenswert?
• ▲
▼
C Programmieren kann ich habe aber noch nicht so viel Erfahrung mit 
Microkontrollern hab sonst immer nur PC Software geschrieben und da 
musste ich nicht so viel mit einzelnen Bits machen.Sonst Programmiere 
ich lieber Java aber hier bringt mich das nicht weiter.

Aber zurück zum Thema kann mir jemand helfen ?
Persönliche Seite #910192
Lesenswert?
• ▲
▼
Spess53 wrote:
> Hi
>
> Diese Modesprachen.
>
> Ich schreibe das mal in Pascal. Da weiss ich wenigsten das es richtig
> ist.
> Für Bit 3:
>
>   if (Variable and (1<<3))= 0 then Nullsenden
>                               else Einssenden;
>
> MfG Spess

Dann übersetzen wir es noch in C:
1
if ( Variable & (1<<3) )
2
{
3
    // Bit 3 in Variable ist 1
4
}else
5
{
6
    // Bit 3 in Variable ist 0
7
}

Siehe auch hier: 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Eing.C3.A4nge_.28Wie_kommen_Signale_in_den_.C2.B5C.29

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren