mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Boese Ueberraschungen beim ATMEGA2560-16AU


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Die Überschrift ist nicht ganz so gemeint, wie man sie auffassen könnte.
Zur Zeit beschäftigt mich ein neues Projekt.
Ich verwende dazu den ATMEGA2560-16AU.
Dieser Baustein besitzt 100 Anschlüsse und ich benötige für mein Projekt
bis auf 10 I/O-Pins alle I/O-Ports.

Die Umschaltung der PORTS sollte relativ schnell erfolgen.
Nun wollte ich fragen, ob man z.B. PORTL oder PORTK ebenso
einfach und schnell ansprechen kann, wie die übrigen PORTS?

Ich frage deshalb, weil beim ATMEGA128 konnte man, glaub ich,
PORTG nicht bitmäßig ansprechen.

Mein Programm wird so ausgelegt sein, dass die Ports byteweise 
geschrieben
oder gelesen werden.
Kann ich davon ausgehen, dass es hier keine bösen Überraschungen
wegen der Ports geben wird?
Ich programmiere mit Codevision-AVR.


Ich danke euch vielmals.
Tschüss
Martin

Autor: Schorsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich frage deshalb, weil beim ATMEGA128 konnte man, glaub ich,
> PORTG nicht bitmäßig ansprechen.

Wie meinst du das?

Die Ports sind doch alle gleichwertig. Gut, manche sind vielleicht nur 
6-Bit breit, sollte aber kein Problem bereiten.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Martin

>Die Überschrift ist nicht ganz so gemeint, wie man sie auffassen könnte.

Warum schreibst du sie dann nicht anders?

>Die Umschaltung der PORTS sollte relativ schnell erfolgen.
>Nun wollte ich fragen, ob man z.B. PORTL oder PORTK ebenso
>einfach und schnell ansprechen kann, wie die übrigen PORTS?

Was heisst für dich "realtiv schnell"? Der Portzugriff dauert einen 
Takt. Ist das schnell genug?

>Ich frage deshalb, weil beim ATMEGA128 konnte man, glaub ich,
>PORTG nicht bitmäßig ansprechen.

Mag sein.

>Mein Programm wird so ausgelegt sein, dass die Ports byteweise
>geschrieben
>oder gelesen werden.

Dann ist das ja kein Problem.

>Kann ich davon ausgehen, dass es hier keine bösen Überraschungen
>wegen der Ports geben wird?

Nöö.

MfG
Falk

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RTFM.

Besonders, wenn mission-kritische Features genutzt werden sollen. (WOW, 
was für'n Satz...)

Oliver

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Kann ich davon ausgehen, dass es hier keine bösen Überraschungen
>>wegen der Ports geben wird?

>Nöö.

Datenblatt und Errata-sheet könnten interessant sein...

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unter Codevision kann man Ports im Allgemeinen folgendermaßen 
ansprechen:
z.B.
DDRA.0=1;
PORTA.0=1;
usw.

Aber
z.B.
PORTG.0=1;
funktioniert nicht

Und ich habe gehört, dass dies irgendwie an den internen Registern
des Prozessors liegen muss.

Tschüss
Martin

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Errata-Sheet ist eine gute Idee.

Autor: Schorsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was heisst für dich "realtiv schnell"? Der Portzugriff dauert einen
> Takt. Ist das schnell genug?

Ziemlich sinnfrei diese Aussage, denn sie gilt nur, wenn stets der Wert 
ausgegeben werden soll. Für das Einlesen mag sie eingeschränkt richtig 
sein.

Falk, hast du dir eigentlich mal dein gesamtes Posting durchgelesen? Du 
hast keine einzige wirklich nützliche Information gegeben, es enthält 
nur erziehende Anspielungen. Das aber nur am Rande...

Autor: G. Nicht (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh Dir bitte die 'Register Summary' im Datenblatt an. Einige Ports 
liegen oberhalb der Adresse 0x60 und können daher 'nur' mit LDS und STS 
angesprochen werden. Das ist in der Regel kein Problem.

Wenn ein Compiler PORTG.0=1 nicht kennt, ist das sein Problem. PORTG |= 
1 sollte doch klappen.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Schorsch

>> Was heisst für dich "realtiv schnell"? Der Portzugriff dauert einen
>> Takt. Ist das schnell genug?

>Ziemlich sinnfrei diese Aussage, denn sie gilt nur, wenn stets der Wert
>ausgegeben werden soll. Für das Einlesen mag sie eingeschränkt richtig
>sein.

???? Was dauert bei einem Port lesen länger?

in r16,portx
i = PORTX;


>Falk, hast du dir eigentlich mal dein gesamtes Posting durchgelesen? Du

Oh, der Herr Oberlehrer mal wieder.

>hast keine einzige wirklich nützliche Information gegeben, es enthält
>nur erziehende Anspielungen. Das aber nur am Rande...

Irrtum, ich habe nachgehakt. Denn solche schwammigen Begriffe wie 
"realtiv schnell" sind vollkommen unbrauchbar. Und wer schwammige Fragen 
stellt, sollte nicht auf klare Antworten hoffen. Deshalb sollte der 
Fragesteller erstmal die Frage klar(er) formulieren. Und wenn er schon 
weiss, dass einige Ports nicht bitadressierbar sind, dann hat er auch 
die nötigen Kenntnisse mal das Datenblatt zu lesen. Es kommt aberso 
rüber, al ob er dazu wenig Lust hat.

@Rahul Der trollige

>>>Kann ich davon ausgehen, dass es hier keine bösen Überraschungen
>>>wegen der Ports geben wird?
>>Nöö.

>Datenblatt und Errata-sheet könnten interessant sein...

Wenn Atmel ne simplen Portzugriff vergeigt gehören sie an die Wand 
gestellt (und die Controller in die Tonne). Jaja, McMurphy is watching 
you.

MfG
Falk


Autor: Schorsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Oh, der Herr Oberlehrer mal wieder.

Greif dir mal an die eigene Nase!

> in r16,portx
> i = PORTX;

Wenn du das in einem Takt schaffst, kriegste von mir ne Kiste Bier.

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn Atmel ne simplen Portzugriff vergeigt gehören sie an die Wand
>gestellt (und die Controller in die Tonne).

Das ist schon klar. Wenn jemand sich aber nicht sicher ist, sollte er 
sich lieber die offizielle Doku angucken anstatt auf Leute zu hören, die 
Sachen wie "ich glaube...", "..vielleicht...", "...meiner Meinung 
nach..." etc von sich geben. Sollte keine Kritik an deinem Post sein.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Schorsch

>> in r16,portx
>> i = PORTX;

>Wenn du das in einem Takt schaffst, kriegste von mir ne Kiste Bier.

[ ] Dir ist aufgefallen dass das einmal Assembler und einmal C ist.

MFG
Falk

Autor: Escapetastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
[] Du weist, was ein C-Compiler aus "i = PORTX;" machnt.

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rahul Der trollige

>Das ist schon klar. Wenn jemand sich aber nicht sicher ist, sollte er
>sich lieber die offizielle Doku angucken anstatt auf Leute zu hören, die
>Sachen wie "ich glaube...", "..vielleicht...", "...meiner Meinung
>nach..." etc von sich geben. Sollte keine Kritik an deinem Post sein.

100% Zustimmung.

MfG
Falk

P.S. Ich jederzeit offen für substanzielle Kritik. Niemand hat die 
Weisheit mit Löffeln gefressen, auch ich nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.