Atmel Mega Port toggeln

Konkret geht es um einen Atmel Mega48. Die Atmel-uCs sind für mich Neuland - die Ports funktionieren ein bischen anderst als bei meinen bisherigen uCs. So wie ich das Verstanden habe lässt ein Setzen von Register PINxn den zugehörigen Portxn toggeln. In der Entwicklungsumgebung scheinen dabei jedoch alle Pins dieses Ports zu toggeln (USB- 1Wire ICE von Atmel mit Software 4.09). Da Prozessor als auch Entwicklungsumgebung noch recht neu sind weiss ich jetzt nicht ob der Fehler bei mir liegt oder ob ich auf einen Bug gestossen bin - beim ersten Muster liess sich nicht mal die Taktquelle umstellen.

Gerald

Reply to
Gerald Oppen
Loading thread data ...

Gerald Oppen wrote: : Konkret geht es um einen Atmel Mega48. : Die Atmel-uCs sind f?r mich Neuland - die Ports funktionieren : ein bischen anderst als bei meinen bisherigen uCs. : So wie ich das Verstanden habe l?sst ein Setzen von Register PINxn : den zugeh?rigen Portxn toggeln. In der Entwicklungsumgebung scheinen : dabei jedoch alle Pins dieses Ports zu toggeln (USB- 1Wire ICE von Atmel : mit Software 4.09). : Da Prozessor als auch Entwicklungsumgebung noch recht neu sind weiss ich : jetzt nicht ob der Fehler bei mir liegt oder ob ich auf einen Bug : gestossen bin - beim ersten Muster liess sich nicht mal die Taktquelle : umstellen.

PINx: Das Signalk, was am Porteingang anliegt DDRx: Data Direction ( 1 fuer Ausgang) PORTx: Signal dass ggf an den Ausgang gelegt wird (bei DDR=1). Bei PORTx=1 und DDRx=0 wird ein Pull-Up an den Eingang gelegt

Besorg Dir mal bei Atmel das Datenblatt.

Bye

--
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Reply to
Uwe Bonnes

Uwe Bonnes schrieb:

Danke, soweit bin ich schon. Mir geht es um den Teil mit dem Port toggeln was bei beschreiben von PINxn - Register geschieht - steht auch im Datenblatt, funktioniert aber anderst wie erwartet, d.h. nicht der einzelne Pin toggelt sodern der gesamte PORTC in meinem Fall.

Gerald

Reply to
Gerald Oppen

: Uwe Bonnes schrieb:

: > PINx: Das Signalk, was am Porteingang anliegt : > DDRx: Data Direction ( 1 fuer Ausgang) : > PORTx: Signal dass ggf an den Ausgang gelegt wird (bei DDR=1). Bei : > PORTx=1 und DDRx=0 wird ein Pull-Up an den Eingang gelegt : > : > Besorg Dir mal bei Atmel das Datenblatt.

: Danke, soweit bin ich schon. Mir geht es um den Teil mit dem Port : toggeln was bei beschreiben von PINxn - Register geschieht - steht auch : im Datenblatt, funktioniert aber anderst wie erwartet, d.h. nicht der : einzelne Pin toggelt sodern der gesamte PORTC in meinem Fall.

: Gerald

PORTD=1 setzt PD0 PORTD=2 setzt PD1

usw

--
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Reply to
Uwe Bonnes

Gerald Oppen schrieb:

Hi Gerald, du schreibst auf PINx ? Also bis jetzt dachte ich, daß die PINx read only sind. DDRx u. PORTx sind read/write. Mit toggeln meinst du "ein Bit negieren" also

0->1 und 1->0. Das geht IMO nur (Assembler) mit einer XOR Operation. Gruß Andy
Reply to
Andreas Weber

l=20

Mit welchem Befehl hast Du das denn gemacht? Mit sbi wie im Datenblatt steht?

h=20

Was nat=FCrlich auch hei=DFt, da=DF hier praktisch noch niemand damit gearbeitet hat (mich eingeschlossen). Der ATMega8 (von dem der Mega48 ja abstammt) kann das toggeln n=E4mlich noch nicht.

Markus

Reply to
Markus Kaufmann

Andreas Weber schrieb:

Offensichtlich können die neuen ATMega's (48,88,168) das. Man beschreibt das PIN-Register und der Port toggelt. Nutzt man SBI/CBI zum beschreiben des Registers toggelt nur der entsprechende Pin. So zumindest hab ich das Datenblatt verstanden.

--
Matthias Weißer
matthias@matwei.de
http://www.matwei.de
Reply to
Matthias Weißer

PINxn sind nur die Eingänge - wenn du einen Ausgang toggeln willst könntest du das probieren:

xor r16,r16 ldi r17,$01

loop: xor r16,r17 sbis sreg,z cbi porta,0 sbic sreg,z sbi porta,0 rjmp loop

Da du eh schon geschrieben hast, dass du dich nicht damit auskennst glaube ich nicht du bist auf einen Bug gestoßen ...

gruß

thomas

Reply to
Thomas Pototschnig

Matthias Weißer schrieb:

Ja, genau das meine ich - nur dass bei mir eben nicht der einzelne Pin toggelt sondern der gesamte Port obwohl nur ein einzelner Pin gesetzt wird (auch per Mausklick am Emulator auf ein PIN-Register ist das so).

Aber wenn das jetzt erst mit den neuen Megas eingeführt wurde ist ein Bug doch nicht so ganz auszuschliesen...

Gerlad

Reply to
Gerald Oppen

Markus Kaufmann schrieb:

Unter C und direkt mit der Maus auf der Entwicklungs-Oberfläche...

War mir nicht bekannt dass diese Funktion erst neu eingeführt wurde da es mein erster Atmel ist.

Gerald

Reply to
Gerald Oppen

Thomas Pototschnig schrieb:

Nicht mehr bei den neuen ATMEGA48 - siehe andere Postings

Gerald

Reply to
Gerald Oppen

Gerald Oppen schrieb:

Aber wohl eher ein Bug im AVR-Studio als im Chip. Wie schreibst du in das Pin-Register? Mit SBI oder mit OUT?

--
Matthias Weißer
matthias@matwei.de
http://www.matwei.de
Reply to
Matthias Weißer

: Thomas Pototschnig schrieb:

: > PINxn sind nur die Eing?nge -

: Nicht mehr bei den neuen ATMEGA48 - siehe andere Postings

Woher hast Du den Baustein?

-- Uwe Bonnes snipped-for-privacy@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt

--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------

Reply to
Uwe Bonnes

Hmm - ist ja eine lustige neue Funktion ...

Gruß

Thomas

"Gerald Oppen" schrieb im Newsbeitrag news: snipped-for-privacy@uni-berlin.de...

Reply to
Thomas Pototschnig

Matthias Weißer schrieb:

Habe mir noch nicht genau angeschaut was der C-Compiler daraus macht - zumal mir die Atmel-Assemblerbefehle noch nicht geläufig sind.

Gerald

Reply to
Gerald Oppen

Hallo!

"Gerald Oppen" schrieb

Wo hast Du das eigentlich gelesen? Wenn ich im Datenblatt zum Mega48 (doc2545.pdf) auf Seite 79 schaue, steht bei PINC immer noch nur ein R und nicht R/W. Und auch das Bild 24 auf Seite 63 sieht aus als könntest Du PINx nur lesen

Gruß

Dirk

Reply to
Dirk

Dirk wrote: : Hallo!

: "Gerald Oppen" schrieb

: >> PINxn sind nur die Eing?nge -

: > Nicht mehr bei den neuen ATMEGA48 - siehe andere Postings

: Wo hast Du das eigentlich gelesen? Wenn ich im Datenblatt zum Mega48 : (doc2545.pdf) auf Seite 79 schaue, steht bei PINC immer noch nur ein R und : nicht R/W. Und auch das Bild 24 auf Seite 63 sieht aus als k?nntest Du PINx : nur lesen

Seite 64: Toggling the Pin Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn. Note that the SBI instruction can be used to toggle one single bit in a port.

Bye

--
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Reply to
Uwe Bonnes

Hallo!

"Uwe Bonnes" schrieb im Newsbeitrag news:ch5clo$ibg$ snipped-for-privacy@lnx107.hrz.tu-darmstadt.de...

used

Ah, ja. Den kleinen Abschnitt habe ich übersehen. Interessant. Dann ist vermutlich die Port-Übersicht noch falsch Da das Doc. noch als vorläufig klassifiziert ist, muß man natürlich noch abwarten, was gültig ist.

Da der OP sagt, daß er es mit einer C-Routine versucht, stellt sich die Frage was der Compiler daraus macht.

Gruß

Dirk

Reply to
Dirk

Wenn dein C Compiler inline Assembler unterstützt, wäre das eine schnelle, einfache Möglichkeit, die direkten Assemblerbefehle zu erzwingen, ohne dass du von deinem C-Source weg musst.

Viele Grüße Johannes

Reply to
Johannes Bauer

ein anständiger Compiler sollte aber aus sowas wie

PORTB |= _BV(PB5);

ein sbi machen. Macht zumindest der avr-gcc. Ohnehin sollte man bei solch hardwarenaher Programmierung immer ein Assemblerlisting zur Hand haben, ich lass es automatisch beim `make' generieren.

Gruß, Bernhard

--
"Feature freeze means that everyone has a bad feeling when they change 
something, almost nothing more."
        -- Stephan Kulow
Reply to
Bernhard Walle

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.