Hallo, ich möchte gerne bei jedem loop()-Durchlauf 32 Portleitungen auf einmal einlesen. Nun will ich nicht 32 Mal ... val = digitalRead(inPin); aufrufen. Ich dachte da eher an 4 Zugriffe a 8-Bit. Nirgendwo in den Beispielen finde ich eine Funktion, mit der ich direkt auf einen 8 Bit Port zugreifen kann. Gibt es das gar nicht? Oder bin ich nur zu doof zum Suchen? Helft mir doch bitte mal auf die Sprünge :-)
Hallo, markus cano schrieb: > Gibt es das gar nicht? Oder bin ich nur zu doof zum Suchen? die zweite Option trifft zu. Tipp für die nächste Suche: Alle AVR-GCC Operationen funktionieren exakt 1:1 ohne irgendeine Änderung auch im Arduino IDE. Versuch es zum Beispiel mit google: avr gcc read port Schon der erste Treffer passt. Ansonsten bin ich mir fast sicher, dass es in jedem Datenblatt zu den entsprechenden µC ein geeignetes Code-Beispiel gibt! Vlg Timm
markus cano schrieb: > Helft mir doch bitte mal auf die Sprünge :-) Wenn du uns verrätst, was für einen Prozessor du benutzt? Vergiß Arduino Einzelpinbefehle und greife direkt auf das gewünschte Port-Register zu.
... ah ja, ... vielen Dank :-) avr gcc read port war der Schlüssel zum Erfolg: example : // to read data from port A. DDRA = 0x00; //Set port a as input x = PINA; //Read contents of port a @Michael: Ich verwende die Version Mega.
Dieser Thread ist ein Paradebeispiel für die didaktische Untauglichkeit des Arduino Systems. Nichts gegen die Hardware, aber die Software lenkt eher von den Basics ab, anstatt sie zu lehren. Ich kann nur dringend empfehlen, nicht mit Arduino einzusteigen!
Hallo Stefan, das kann ich so nicht stehen lassen. Ich habe schon mit einigen Prozessoren herum experimentiert. Mit noch keinem anderen System ist mir der Einstieg leichter gefallen. Sehr gutes Einsteigersystem !!! Klasse gemacht !!! Grüße Markus
markus cano schrieb: > Sehr gutes Einsteigersystem !!! Klasse gemacht !!! Das Problem ist, dass das Arduino System die ganze Direktheit eines µC, hinter einer glatt polierten Oberfläche verbirgt. Sobald man den Arduino-Weg verläßt, steht man doof da und muss sich nicht nur in die Register des jeweiligen Controllers reinfummeln, sondern auch noch die ganze Arduino-Maskerade durchdringen. Wenn auf einem 84MHz Prozessor (Arduino Due) das simple Setzen eines Pins etliche µs dauert, finde ich das arg übertrieben.
Guten Tag, markus cano schrieb: > @Michael: Ich verwende die Version Mega. Was ist damit gemeint ? Ist das eine neue Bezeichnung für einen Atmel AVR µC ?
Stefan schrieb: > Dieser Thread ist ein Paradebeispiel für die didaktische Untauglichkeit > des Arduino Systems. > > Nichts gegen die Hardware, aber die Software lenkt eher von den Basics > ab, anstatt sie zu lehren. > > Ich kann nur dringend empfehlen, nicht mit Arduino einzusteigen! Volle Zustimmung! Allein schon dieser geistige Dünnpfiff, dass man für das lesen eines IOs eine extra Funktion braucht, sagt doch schon alles. Da wird eine gut verständliche Zeile in C durch irgendeine merkwürdige Funktion ersetzt. Ach? Eine Arduino Funktion gibt es nicht für das was wir machen wollen? Na dann sind wir wohl aufgeschmissen, wenn wir nichtmal nen Port auf einmal einlesen können... Mit nem zusätzlichen Shield kann man das Problem aber leider auch nicht lösen.
Muss ich da eine bestimmte Headerdatei einbinden um die Befehle auch in der Arduino IDE nutzen zu können?
Stefan schrieb: > Dieser Thread ist ein Paradebeispiel für die didaktische > Untauglichkeit > des Arduino Systems. > > Nichts gegen die Hardware, aber die Software lenkt eher von den Basics > ab, anstatt sie zu lehren. > > Ich kann nur dringend empfehlen, nicht mit Arduino einzusteigen! sarkasmusan genau! Und das gleiche gilt für C und überhaupt alle Programmiersprachen. Wer es richtig lernen will, der nimmt ausschließlich Assembler! sarkasmusaus Arduino hat genauso seine Berechtigung wie alle anderen Sprachen / IDE's auch. Arduino pauschal zu disqualifizieren ist genauso falsch wie zu sagen, alles muss in Assembler geschrieben warden und jeder der es anders macht ist ein Weichei. Genau die gleiche Frage hätte auch von einen gcc Einsteiger kommen können ... dann auch da muss man den Portzugriff erst mal lernen.
Jannus schrieb: > Muss ich da eine bestimmte Headerdatei einbinden um die Befehle auch in > der Arduino IDE nutzen zu können? Nein, das macht Arduino schon für dich. Warum probierst du das nicht eben selber aus?
Ulrich F. schrieb: > Warum probierst du das nicht eben selber aus? Ich habe es ausprobiert aber bekomme folgende Fehlermedlung: 'DDRA' was not declared in this scope
OK hab gerade herausgefunden das es an dem ausgewählten Board liegt. Die Registerbezeichnungen beim Arduino DUE sind andere.
Jannus schrieb: > 'DDRA' was not declared in this scope Wenn du für den Mega kompilieren willst, wähle auch das richtige Board aus.
Hast du überhaupt das gleiche Board wie der TE? Auf dem Mega2560 gibt es den PortA. Auf einem Mega328P nicht! -> Schau ins Datenblatt
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.