Antworten

Der Beitrag verursachte die folgenden Fehler, die behoben werden müssen:
Achtung - während Sie das Thema gelesen haben, wurde ein neuer Beitrag geschrieben. Sie sollten das Thema erneut lesen.
Einschränkungen: 8 pro Beitrag (8 verbleibend), maximale Gesamtgröße 8,79 MB, maximale Individualgröße 1 MB
Entfernen Sie den Haken der Dateianhänge, die gelöscht werden sollen
Klicken Sie hier oder ziehen Sie Dateien hierher, um sie anzuhängen.
Anhänge und andere Optionen
Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

Zusammenfassung

Autor picass
 - 25.10.2024, 11:15:38 CEST
Wärme diesen Fred auf, weil die letzten Statements in anderem Fred dort themenmäßig nicht mehr passten. Also hier weiter mit LCD-Ansteuerung.

Der gestrige Erfolg meines ersten Versuches, ein LCD-Anzeigemodul mit einem PIC anzusteuern, basiert auf dem von pic18 "vermittelten" Sprut-Programm. Das lief auf einen PIC16F84 und seiner Alt-Version des MPASM. Dieses Sprut-Prog hatte ich nun erfolgreich umgestellt auf die "mittlere" Version, auf MPASM X v5.20 (geht bis v5.35). Allerdings blieben vom orig-Prog nur wenige Steine unverändert.
Zunächst hatte ich sämtliche Konstanten raus geworfen, die "Über-2-Banden" sowieso, aber auch die anderen, welche den Ports Namen verliehen. Das dadurch entstehende Sprachwirrwarr machte es für mich aber unübersichtlicher...., ist wohl auch Geschmackssache. Auch die Variablen wurden entmistet, teils umbenannt. Wichtig war, eine - nennen wir es mal - "Nachlässigkeit" von Sprut zu eliminieren. Er hatte auf Ports geschrieben, aber nicht - wie auch damals schon im Datenblatt vermerkt - den Begriff Latch verwendet: "read from port, write to latch". Auch alle aus anderen Sprut-Programmen noch vorhandenen Prog-Bestandteile im orig Prog wurden gekillt, ebenso wie die Ansteuerung von Kontroll-LEDs. Dann noch "Hakeliges" oder Nicht-wirklich-Gelungenes in der Kommentierung überarbeitet und dann lief das neue Prog doch nicht. ??? Bei dem vieeeeelen Umschreiben war einmal noch eine Anweisung für den alten PORTB übersehen worden. Der Ausgabe-Port wurde ja von B auf C umgeschwitscht.  Den Aufbau dann noch in absteigende Funktionsblöcke umgebaut und das wars dann.
Im Anhang der ganze MPASM X - Ordner. Das darin befindliche ASM.File enthält das Prog in leserlicher Form, das lässt sich mit jedem Text-Prog einfach öffnen.
Grüße, picass
lcd09.X.zip 
Autor Ottmar
 - 15.05.2023, 17:50:22 CEST
Sorry, die Version aus meinem letzten Beitrag gibt einen Fehler aus. Ein "'#ENDIF' ist einfach verschwunden :(

Fehler ist nun behoben und das nun fehlerbereinigte Projekt ist angefügt.

Ottmar
Autor Ottmar
 - 13.05.2023, 20:32:15 CEST

Danke PICkel für  die Antwort.

Mir ist schon klar, daß die Taktfrequenz der LCD-Befehle den Bedingungen im Datenblatt, z.B. des HD44780 entsprechen muss ( 2MHz timing bei Vss 5V ) und daß man dann eben zwischen den Befehlen entsprechend viele "nop's' einfügen muss. Wie es halt so ist, wollte ich den bequemeren Weg gehen und vielleicht einen Hinweis auf etwas 'Fertiges' bekommen.

Inzwischen habe ich mich doch mal bemüht und an sich recht rasch meine 2-Wire-Ansteuerung überarbeitet. Siehe da,  die beigefügte Initialisierung und der Code zur Zeichenausgabe funktioniert noch bis fosc 64MHz -> fosc/4=16MHz. Die Delays habe ich mal etwas variabler, in Abhängikeit von fosc gestaltet.  Für Int1 eressierte füge ich mal das Ergebnis als gepacktes MPLAB 8.92-Projekt  bei.

Doch: gibt es da keine bessere/elegantere Lösung?
mfG Ottmar
Autor PICkel
 - 13.05.2023, 14:15:32 CEST
Hallo Ottmar,

geht es am 18F14K22 mit langsamerem Takt? Wenn ja, solltest Du es mal mit längeren Wartezyklen versuchen.
Bei ASM ist man ja (leider) auf die programmtechnische Anpassung der Wartezyklen an den uC-Takt angewiesen, was ansonsten der Compiler erledigt.
Noch was: Funktioniert nur die Zeichenausgabe nicht oder klemmt es schon bei der Initialisierung? Eventuell nach dem Umschalten von R/W bzw. RS ein paar Wartezyklen einfügen.

MfG
PICkel
Autor Ottmar
 - 13.05.2023, 13:34:30 CEST
Hallo zusammen,
kann mir jemand bitte eine Antwort auf meine erste Frage zur LCD- Initialisierung / Ausgabe geben?
mfG Ottmar
Autor Ottmar
 - 11.05.2023, 18:56:50 CEST
Danke für die Antwort,

das mit der Vielfalt ist mir schon klar, habe mich ja selbst durch diese Vielfalt ab 16F84, hauptsächlich aber 16F628, 16F1827 u.a. bewegt. Von den 16F hat mir der 16F827 und der 16F1936 am besten zugesagt. Seit einiger Zeit bin ich dabei meine Erfahrungen mit den 18F zu machen. Na ja, wie  ich schon mal sagte, bin ich nicht einer der sonderlich viele standalone Projekte erstellt hat. Vielmehr macht es mir Spass die einzelnen "Features" zu erkunden und da begnüge ich mich oft damit die Schaltungen auf einem Steckbrett aufzubauen.

LCD???
Grüße Ottmar
Autor picass
 - 11.05.2023, 18:25:58 CEST
Die schier unendliche Auswahl an µC-Typen bei Microchip lässt einen Überblick nicht wirklich leicht werden. Jedenfalls werde ich nicht behaupten, den zu haben. Will sagen: da muss jeder irgendwann/ irgendwie zu einer Entscheidung kommen. Bei mir ging das vergleichsweise einfach. Früher mal hatte ich mit dem PIC16F84 gearbeitet. Als der auslief, musste was Neues her. Aufgrund von Empfehlungen wurde es bei mir der PIC18F14K22 - , es hätte sicher auch was anderes werden können. Diesen Typ verwende ich seit Langem als Standard-µC. Der ist nun mittlerweile auch schon angegraut und wird auch nicht gerade billigst angeboten. Microchip himself empfiehlt als Nachfolger, rsp. neuen µC-Typ den PIC18F24Q10. Der hat dann allerdings 28 Pinne, was aber auch erlaubt, alle drei Grund-Ports (A,B,C) komplett ausfzuführen.
Grüße, picass
Autor Ottmar
 - 11.05.2023, 16:35:31 CEST
Hallo,
mich würde mal interessieren wie Ihr in MPLAB-ASM ein HD44780er LCD initialisiert und zur Ausgabe ansteuert.Ich selbst verwende seit langer Zeit eine mehr oder weniger selbst zusammengezimmerte Initialisierung/Ansteuerung welche auf sprut.de zurückgeht.

Diese Initialisierung/Ausgabe habe ich einmal als 8 und 4Bit-Interface und auch für 2-Wire-Interface. Nun bin ich aber der Meinung, dass diese Dateien in die Jahre gekommen und evtl. umständlich und überholt sein könnten. Gibt es da was aktuelleres?  Würde mich mal gerne mit jemand darüber austauschen (bei Bedarf auch die entsprechenden Files).

Angeregt durch dieses Forum habe ich mi auch den 18F14K22 beschafft, vor allem auch weil ich neugierig  war/bin auf  die 64MHz des INTOSZ, den Low/High Priority Interrupt  und das SR-Latch. Bei 64MHz kamen dann meine LCD-Files nicht mehr mit  bevor ich nun daran herumzubasteln beginne....

Da wäre auch schon meine nächste Frage: Was macht den 18F14K22 so wirklich interessant- Ich meine im Gegensatz z.B. zu einem 16F1827 oder 16F1936?

Freue mich auf eine Antwort
Ottmar