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
> 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.
@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
>>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...
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
> 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...
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.
@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
> 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.
>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.
@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
@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.