Forum: Projekte & Code Bascom Bit und Byte


von Manfred Feitzinger (Gast)


Lesenswert?

Hallo
Ich verwende den AT-Mega16 und programiere in Bascom

Ich bekomme aus einem Can-Bus eine Byte Variable, diese kann ich direkt
über den I2C bus an den PCF8574 weiterleiten und die Dementsprechenden
Ausgänge setzten.
Wie soll ich es anstellen, dass ich zum Beispiel einzelne Ausgänge des
PCF8574 auf "Handbetrieb" umschalte. Praktisch sie werden direkt vom
AT-Mega angesteuert.
es soll zB P0,P4 auf Handbetrieb und die anderen auf Automatik vom
Can.Bus

Grüße Manfred

von Dirk (Gast)


Lesenswert?

Hi,

irgendwie verstehe ich nicht was du mit "Handbetrieb" und
"Automatikbetrieb" meinst. Erklaere bitte nochmal was du genau
willst, dann kann ich Dir helfen.

Gruß,
Dirk

von Marco (Gast)


Lesenswert?

Wenn ein PCF8574 eine Porterweiterung ist, glaube ich zu verstehen, was
du meinst.
Ich musst aber auch erst ein paar Tage nachdenken und den Sinn zu
verstehen!

Dim A As Byte.
A=255  'damit sieht A als Binär so aus: 11111111
A.2=0  'jetzt sieht A so aus: 11111011

Und dann A in den Bus schicken.

Wenn ich dich richtig verstanden habe, gibt der CAN-Bus bestimmt
Schaltzustände aus, die durch den AVR in den PCF gehen.
Jetzt willst du die Kontrolle aber nicht vollständif abgeben und hast
zwei Bits, die du selbst steuern willst.

Dann einfach mit Byte.Binärstelle deinen gewünschten Wert erzwingen.
Wobei Byte dann dein Deklarierter Variablenname ist und Binärstelle
wahrscheinlich 0 und 5 bei dir.

Es müsste aber eigentlich auch mit BYTE AND &B11111110 und BYTE AND
&B11101111 oder so ähnlich geh'n.

Dazu kannst du in der Hilfe mal unter GETRC5() nachschauen. Damit wird
im Code das Togglebit gelöscht.

Was weniger Zyklen und weniger Speicher braucht musst du dann selbst
nochmal ausprobieren.

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.