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

Am 08.04.2017 um 17:45 schrieb Gerald Oppen:

P.S.: Und das hier beachtet:

--
Ensure  that  data  is  not  being  transmitted  too  fast  to  the  
T6963C.  Always  pole  the  BUSY 
flags STA0 and STA1 before sending instructions (section 9.2). If MPU is  
not set up to read 
the  BUSY  flag  before  writing  instructions  allow  an  adequate  
delay  between  instructions
Reply to
Gerald Oppen
Loading thread data ...

gebremst bis man jede Zeile einzeln sieht, die aufgebaut wird.

dem LCD landet.

Manuel

Reply to
Manuel Reimer

Wieviele Nops hattest Du den verbaut? Mit 2-3 Nops ist es nicht getan

Verarbeitungszeiten von einigen Millisekunden hat. Um das herauszufinden solltest Du das Busy-flag abfragen und in eine

meldet...

Gerald

Reply to
Gerald Oppen

Fehlerhafte Funktion (ohne Hack):

formatting link

Und die mit Hack, die funktioniert:

formatting link

Manuel

Reply to
Manuel Reimer

Manuel Reimer schrieb:

Da ist zwar allerhand komisches Zeug drin, aber nicht der Assembler-Quelltext Deiner Funktion. Aber wie gesagt, mittlerweile glaube ich auch eher an ein Ansteuerproblem des LCD.

Christian

--
Christian Zietz  -  CHZ-Soft  -  czietz (at) gmx.net 
WWW: http://www.chzsoft.de/ 
PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA
Reply to
Christian Zietz

LCD. Meine Funktion zum Lesen war:

// Blocks until LCD reports DSP to be ready void WaitDSPReady(bool aAutoWrite = false) { ParportSetDirection(INPUT); for (int i = 0; i < 3000; i++) { digitalWrite(PIN_CD, HIGH); digitalWrite(PIN_RD, LOW); digitalWrite(PIN_WR, HIGH); digitalWrite(PIN_CE, LOW);

// In "Non-Auto-Mode" check STA0 and STA1 bool last = false; if (!aAutoWrite && digitalRead(PIN_D0) && digitalRead(PIN_D1)) last = true; // In "Auto-Mode" check STA3 if (aAutoWrite && digitalRead(PIN_D3)) last = true; digitalWrite(PIN_CE, HIGH); digitalWrite(PIN_RD, HIGH); if (last) break; } ParportSetDirection(OUTPUT); }

"Abbruch" durch Status-Bits statt.

Manuel

Reply to
Manuel Reimer

Dann stimmt was mit deiner Schaltung nicht, ich hab bisher bei diversen

um? Das Statusregister ist nicht das Datenregister ausgelesen sondern eins weiter. Oder ist das dein 'digitalWrite(PIN_CD, HIGH);'?

Hier ist mein 68000-Code der problemlos funktionierte:

check: ; Verwendete Register: ; d2 : Statusregister LCD

move.b adr_lcd+1, d2 ; Statusregister lesen */ andi.b #$03, d2 ; Bit 0 und 1 maskieren */ cmpi.b #$03, d2 bne.s check ; Wenn nicht BEIDE Bits gesetzt rts

check2: btst #$03, adr_lcd+1 beq check2 ; wiederholen solange Bit 3 = 0 rts

Ich hatte das LCD allerdings im Adressraum eingeblendet, ging schneller als via I/O-Baustein. :)

Gerrit

Reply to
Gerrit Heitsch

Manuel Reimer schrieb:

Dann musst Du das zum Laufen bekommen. Wie Du im Datenblatt nachlesen kannst, funktioniert der Controller nicht korrekt, wenn Du nicht an den vorgeschriebenen Stellen auch Status-Read machst: "When using the MSB=0 command, a Status Read must be performed. If a status check is not carried out, the T6963C cannot operate normally, even after a delay time. [...] If a status check is not carried out [...] before the next command is sent, there is the possibility that the command or data will not be received." MSB=0 commands sind z.B. "Register Setting" oder "Set Control Word".

Christian

--
Christian Zietz  -  CHZ-Soft  -  czietz (at) gmx.net 
WWW: http://www.chzsoft.de/ 
PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA
Reply to
Christian Zietz

Komischerweise funktioniert der Controller aber ohne Probleme mit den Arduino-Funktionen alleine.

Mitteln komme ich nicht drauf warum ich die Status-Infos nicht bekomme. Wenn ich versuche das zum Laufen zu bekommen werden die Ausgaben nur noch konfuser. Wenn ich die gesetzten Bits auf dem seriellen Port

Ich glaube ich gebe mich mit der geringen Geschwindigkeit erstmal zufrieden. Das ganze wird eh Open-Source und vielleicht hat jemand die Mittel, die Zeit und die Lust das mit den Registern doch noch zum Laufen

Ganz davon abgesehen, dass ich Mittel, wie z.B. einen Logik-Analyser nicht habe.

Manuel

Reply to
Manuel Reimer

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.