Hallo Gemeinde :-) Hab hier am Atmega 16 an PortC0-2 nen Analogschalter HCT4051 hängen und möchte diesen umschalten.Die Schalternummer geb ich dem 4051 binär vor. Ist es möglich die 3 Ausgänge (portc.0, portc.1, portc.2) mit Alias o.ä. umzubenenen und diese 3 Ausgänge sozusagen auf einmal anzusprechen. Vielleicht noch dezimal ? Also z.B ... Schalterstellung alias portc.0, portc.1, portc.2 Schalterstellung = 2 ... Ist schwer zu erklären, ich hoffe ihr wisst was ich meine. Ich programmiere in Bascom. Danke ! Thommi
Also in C geht das so: temp = PINC; temp &= 0xF8; temp |= Schalterstellung; PORTC = temp;
1 | uint8_t schalterstellung = 6; |
2 | PORTC = (PORTC & 0xF8) | schalterstellung; |
PORTC ist danach XXXX X110. Die zweite Zeile kann man natürlich noch als Makro definieren, um sich Schreibarbeit zu sparen.
1 | #define SET_MUX(x) PORTC = (PORTC & 0xF8) | (x)
|
2 | //...
|
3 | schalterstellung = 5; |
4 | SET_MUX(schalterstellung); |
PORTC ist dann XXXX X101. Und schau Dir mal den Artikel zum Thema Bitmanipulation an...
mann das ging ja fix ! Danke erstmal an alle ! @Johannes: So brauch ich das, die anderen Pins bleiben unberührt. Aber das ist doch nicht Bascom, oder? Grüße Thommi
>Ich programmiere in Bascom.
Das haben die meisten überlesen, oder?
War das ironisch gemeint ?? Deine Lösung funzt nicht da dann der ganze Portc gesetzt wird. Alle anderen pins also auf 0. Da höngen aber schon andere Sachen dran die nicht verändert werden dürfen.
@ Johannes Hast recht PORTC zuerst lesen, nicht PINC. Sonst haut es einem evtl. aktivierte Pullups weg ;)
@ Thommi (Gast) >So brauch ich das, die anderen Pins bleiben unberührt. Aber das ist doch >nicht Bascom, oder? Ich hab die BASCOM Syntax jettz nich parat, aber in etwa so byte tmp byte kanal tmp = PORTC tmp = tmp and ~7 tmp = tmp or kanal PORTC = tmp MfG Falk
Komisch, Falk, sowas hätte ich auch gerade vorschlagen wollen. Ich habe gerade festgestellt, dass es im Bascom-Handbuch auch eine "Newbie problems"-Abteilung gibt - und es wird nicht mal auf dieses Forum verwiesen.
Danke erstmal an alle ! Werd morgen weiterprobieren. Grüße Thommi
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.