Forum: Mikrocontroller und Digitale Elektronik ds89c420 @ 32mhz


von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

ich betreibe einen DS89C420 (8051er) mit 32MHz. Und vielleicht könnt
Ihr mal meine Rechnungen überprüfen?

Dieser µController arbeitet mit einem Maschinentakt je
Oszillatorperiode (nicht wie sonst üblich jede 12. Periode).
Ich erhalte dann bei 32MHz die Dauer eines Maschinentaktes = 31,25ns.

So, nun möchte ich ein 4*20 LCD ansteuern (HD66712 Controller) und habe
dafür meinen alten C-Quellcode für ein altes HD44780 rausgekramt. Denn
die beiden LCD-Controller sind fast gleich. Habe etwas geändert und
jetzt habe ich aber anscheinend Probleme mit den Zeiten der
Initialisierung (s. PDF Seite 429). Denn außer einer Balkenreihe in der
1. Reihe sowie in der 3. Reihe sehe ich nichts. Initialisiert hatte ich
aber alle 4 Zeilen.

Die Wartezeiten realisiere ich mit folgendem Code:

void wait(unsigned int x)    // Wartefunktion (x * 12µs) + 12µs
{
  unsigned int i;
  for(i=x; i>0; i--);
}

Die angegebene Zeit des Schleifendurchlaufs gilt aber nur für einen
"alten" 8051er mit 11.0592MHz. Jetzt möchte ich das gerne für meinen
µC umrechnen. Das geht aber nicht einfach so. Denn sonst würde meine
alte LCD Routine ja laufen. Die Simulation in µVision2 entspricht aber
nicht genau der Realität und ich müßte die Wartezeit irgendwie auf
meinen µC runter rechnen. Bin jetzt schätzungsweise bei (x * 2µs) für
meinen µC angelangt. Scheint aber noch nicht richtig zu sein.
Das Busy Flag kann ich erst ab einer bestimmten Initialisierungsstufe
abrufen. Es hapert ja aber schon vorher.

Wer weiß rat?
Manfred

von edi.edi (Gast)


Lesenswert?

du bist fast 40 mal schneller als der standard....tuechtig bremsen!

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
Noch kein Account? Hier anmelden.