Hallo, ich programmiere einen ATtiny2313, und da dort die TWI Pins und die RS232 Pins mitten in den Ports liegen kann ich keinen vollständigen Port benutzen. Außerdem sind es noch 9 Pins. Wie kann ich am elegantesten z.B. die PINS PA1,PA2, PB0-3, PD3-5 über eine Variable setzen und rücksetzen, ähnlich PORTA = 0x05? Vielen Dank Michael
Du schreibst in C? Dann wohl noch am comfotabelsten (nicht unbedingt am elegantesten!) wenn du dir eine Funktion schreibst die das Aufspitten übernimmt. Das wirst du aber wohl händisch machen müssen. Und bei dieser Bitschupserei sollte man fast über inline-Assambler nachdenken. Sebastian
Hallo, ja ich programmiere in C, und hab auch schon eine Funktion. Die Pins stehen in einer struct mit 9 einzelnen Bit's struct S { unsigned Bit0:1; unsigned Bit1:1; ..... unsigned Bit8:1; }s; Die Ports setze ich in einer Funktion mit 9 if else abfragen. Dauert mir aber zu lange. Hätt ja sein können das es etwas einfacheres gibt:-( Vielleicht hat ja jemand noch etwas.
In BASCOM kann man zum Beispiel eine Subroutine vereinbaren: Declare Sub Schreibe_Port (x as Byte) und dann dort sagen: Sub Schreibe_Port (x as Byte) Portc.0=x.0 Portc.1=x.1 Portd.2=x.2 .... usw. End sub Das heißt, man kann so verschiedene Bits von verschidenen Ports in eine Variable x einlesen. MfG Paul
Hätte einfach ein char übergeben und dann über schieben und ausmaskieren den rest gemacht. Wenn man die Pins halbwegs intelligent in dem Char anordnet sollte das auch recht gut gehen. Würde wohl so ordnen: PA1,PD5,PD4,PD3,PB3,PB2,PB1,PB0 (PA2 dann hänisch ansprechen ;-) PortB = Ausgabe & 0b00001111; gibt dann den Teil für PortB aus. PortD = (Ausgabe >> 1) & 0b00111000; gibt den Teil für PortD aus. PortA darfst du dir selbst überlegen ;-) Sebastian
Ja klar, zusammenschieben, probier ich mal. Danke
Paul Baumann wrote:
> In BASCOM kann man zum Beispiel eine Subroutine vereinbaren:
In C geht das schließlich nicht ;) Okay, stimmt. Es heißt dort Funktion.
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.