ATTINY402 Port einlesen

Gast #5703986
Lesenswert?

Hallo!

Ich bin in die Verlegenheit gekommen, einen ATTINY402 programmieren zu 
müssen. Bisher war ich ATMEGA gewohnt. Der Umgang mit Ports erscheint 
mir grundlegend anders zu sein. DDR gibt es nicht, heißt komplett 
anders. Nicht so schlimm. Wie aber lese ich einen einzelnen Portpin aus? 
Beim ATMEGA geht es mit bspw. PINB


if (PINB & (2 << PINB0)){
    X = true;
}

Biem ATTINY402 gibt es so etwas nicht. Kann doch nicht sein, dass ich 
jedesmal den kompletten Port mit einer maske verunden muss:

if ((PORTA_IN & 0b00000010) !=0 ){

    X = true;
}

Lässt sich nicht auf 1 abfragen, wäre dann ja 2. Geht das auch 
eleganter?
Persönliche Seite #5704060
Lesenswert?

Herrgott schrieb:
> Kann doch nicht sein, dass ich jedesmal den kompletten Port mit einer
> maske verunden muss:

Das machst Du doch im anderen Fall exakt genauso, nur daß Du die Maske 
anders beschreibst.

Ungewöhnlich ist Deine Herangehensweise:

Statt Deinem

(2 << PINB0)

schreibt der Rest der Welt

(1 << PINB1)

Aber unabhängig davon - beide Ausdrücke sind exakt dasselbe wie 2 (das 
Du in der nichtportablen Schreibweise als 0b00000010 ausgedrückt hast.
Gast #5704088
Lesenswert?

Rufus Τ. F. schrieb:
> (2 << PINB0)

Stimmt. War blödsinn. Ich hatte immer die 2 im Kopf. Aber nicht desto 
trotz: Warum müssen solche rudimentären Sachen geändert werden? Ging 
doch beim früheren ATTINY auch. Ich habe ein bisschen den verdacht, dass 
die Bequemlichkeit der Programmierung langsam aber stetig an die eines 
PIC angeglichen wird.
#5704106
Lesenswert?

Herrgott schrieb:

> Warum müssen solche rudimentären Sachen geändert werden? Ging
> doch beim früheren ATTINY auch.

Frag Microchip. Die Namen von IO-Registern sind am Ende ohnehin nur 
#defines in einem Headerfile.

> Ich habe ein bisschen den verdacht, dass
> die Bequemlichkeit der Programmierung langsam aber stetig an die eines
> PIC angeglichen wird.

Eine Verschwörungstheorie ist so gut wie die andere.
Gast #5704125
Lesenswert?

Hi

> Ich habe ein bisschen den verdacht, dass
>die Bequemlichkeit der Programmierung langsam aber stetig an die eines
>PIC angeglichen wird.

Dann sieh dir mal die ATXMegas an. Dort war die Adressierung schon lange 
vor Microchip wie bei den jetzigen ATTinys.

MfG Spess
Gast #5704142
Lesenswert?

spess53 schrieb:
> Dann sieh dir mal die ATXMegas an. Dort war die Adressierung schon lange
> vor Microchip wie bei den jetzigen ATTinys.

Das selbe. Für den Anwender erschließt sich IMHO der Sinn nicht, warum 
die Port-Defines wieder an ein obsoletes Produkt (Warum das beim XMEGA 
anders sein musste als beim ATMEGA, weiß auch kein Mensch) angeglichen 
werden. Mit XMEGA habe ich allerdings nicht viel gemacht. Soll aber auch 
nicht das Thema sein.
Gast #5704175
Lesenswert?

Hi

Mein Gott Walter schrieb:

>Für den Anwender erschließt sich IMHO der Sinn nicht, warum
>die Port-Defines wieder an ein obsoletes Produkt (Warum das beim XMEGA
>anders sein musste als beim ATMEGA, weiß auch kein Mensch) angeglichen
>werden.

Es gibt halt jetzt für einen Port zehn statt drei Register und je ein 
Register für jeden Port-PIN.

Und das betrifft nicht nur ATXMegas und die neueren ATTinys sondern auch 
die neue ATMega0-Serie. Damit wären jetzt bei allen drei Serien wieder 
auf einem
Stand.

Amen Spess
Gast #5704710
Lesenswert?

Herrgott schrieb:
> Mit XMEGA habe ich allerdings nicht viel gemacht.

Solltest Du mal probieren. Dann wirst Du nämlich feststellen, dass die 
Port- & Register-Struktur des XMEGA und der neuen TINYs wesentlich 
sinngebender ist. Man sollte allerdings nicht diese sinnlosen  #defines 
nutzen, also z.B. statt PORTA_IN  PORTA.IN verwenden.

mfg
Achim

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