Arduino: "digitalWrite" geht. "PORTD/PORB" ist un zuverlässig?

Apr 02, 2017 49 Replies

Hallo,


Das geht im wesentlichen auch bereits, ist aber noch etwas langsam.


sein, mal mit den Port-Registern zu probieren.



Ich habe zwei Funktionen:



// Set one byte to the parallel interface void ParportWriteDataDW(unsigned char aData) { digitalWrite(PIN_D0, aData & (1


Am 02.04.2017 um 11:50 schrieb Manuel Reimer:

Hallo,

"Arduino", das ist wohl vertarntes C, oder?

Versuche es eventuell mit echtem C

formatting link
und hier LCD via i2c
formatting link

-> AVR Dragon an ISP und JTAG

Peter

"Manuel Reimer" schrieb im Newsbeitrag news:obqham$2sr$ snipped-for-privacy@dont-email.me...

digitalWrite(PIN_D2, aData & (1

C++ mit einer Library die das Ansteuern des Atmel vereinfachen soll.

Ich verwende ein paralleles LCD mit T6963C Controller.

Und nein, fertige Libraries helfen mir hier nicht. Ich will die Pixel selber steuern. Zeichenfunktionen oder gar einache Textausgabe bringt mir nichts.

Manuel

Nachtrag: Auch das hier geht nicht:

// Set one byte to the parallel interface void ParportWriteData(unsigned char aData) { unsigned char maskD = B11111100; unsigned char bitsD = aData > 6; PORTB = (PORTB & ~maskB) | (bitsB & maskB); digitalWrite(PIN_D0, aData & (1

Ich werde den Gedanken nicht los, dass ich vielleicht die Status-Bits

PORTD zu fahren.

maskiere. Oder nicht?

Manuel

Manuel Reimer schrieb:

Variable funktioniert?

Marc

Aus der Arduino-Library: | out = portOutputRegister(port); | if (val == LOW) *out &= ~bit; | else *out |= bit;

"&=" schreibt direkt, was auch Sinn macht.

Manuel

Manuel Reimer schrieb:

das noch gebraucht wird...

Marc

Du betreibst das Display an einer 8-Bit Datenschnittstelle wobei Du die

8 Datenbits auf 2 Ports aufgeteilt hast?

Wo liegen die Steuerleitungen?

Datenleitungen fertig gesetzte sind?

Gerald

Ja. Weil es eben nicht anders geht. Die Arduino-Platinen sind fest so verdrahtet...

Aktuell auf "PORTB". Also "oberhalb" von zwei der Datenbits.

Steuerleitungen "fertig gemeldet".

Manuel

Am 02.04.2017 um 12:59 schrieb Manuel Reimer:

Stimmt Dein Handshake (STA0/1)? Der Controller kann nur 1 Byte/Maschinenzyklus verarbeiten.

Zugriff auf PORTB/D ist schon in Ordnung. Du kannst ja mit LEDs selbst

DoDi

Statusbits Lesen vom LCD? Habe ich bisher nicht hinbekommen. Die sind

sauberem Status, immer bis ins Timeout in einer Schleife rennt habe ich das mit dem Statusbits aufgegeben.

Manuel

eingebaut.

DoDi

Hallo Manuel,

Zuerst dachte ich mir: Warum legst Du die 8 Datenleitungen nicht auf

dass man, sofern man irgendwas am Analogeingang machen will, einen UART

Wer hat sich solch eine Pinbelegung ausgedacht?

Wie war das mit dem Burggraben und tunken?

Die PortB-Pins liegen ja mittendrin, nicht am Rand.

Marte

darauf hinauslaufen, dass ich irgendwann durch die Arduino-Libraries suchen muss um rauszufinden wo genau die dort beschrifteten Pins im Register liegen...

Manuel

Meistens sind das historische Altlasten. Der Chip soll zu irgendwas Altem pinkompatibel bleiben. Das geht bei z.B. dem ATmega8515 so weit, dass das "Original" gar kein AVR war, sondern ein 8051.

modernen Teile noch auf jahrzehntealte Layouts. Es war immer die

einen kompatiblen Nachfolger zu bieten. Die Microchip-Strategie war dagegen PICs weiterzubauen, so dass man sie teils nach Jahrzehnten

in Zukunft verfahren werden.

Hi Manuel,

nimm

formatting link
da stehts recht

PB6 und PB7 liegen zwischen PD4 und PD5. Du legst sie aber an den Rand. Marte

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required