Neueste Beiträge

#91
P
Compiler Software / Aw: Seltsames Programmieren
Letzter Beitrag von pic18 - 21.10.2024, 16:15:52 CEST
@picass Du hast Post
#92
P
Compiler Software / Aw: Seltsames Programmieren
Letzter Beitrag von pic18 - 21.10.2024, 14:31:49 CEST
Hier der Nachtrag vom 18.10.24, ich habe jetzt den Screnshot als JPEG gespeichert, diese Datei hierher gezogen. Folgende Fehlermeldung kommt.
Der Beitrag verursachte die folgenden Fehler, die behoben werden müssen:
Der Beitrag überschreitet die maximal erlaubte Länge (25000 Zeichen).

Hast Du ein einzeiliges oder 4-zeiliges Display? Kannst du mir mal dein Programmlisting schicken? Mit der Anzeige habe ich schon sehr viel experimentiert.
#93
P
Compiler Software / Aw: Seltsames Programmieren
Letzter Beitrag von picass - 21.10.2024, 13:25:06 CEST
Eine gute Woche ist rum und das Projekt: "einfaches Umschreiben eines fertigen Programmteils für LCD-Anzeige" zeitigt die berüchtigte "Leere Menge". Anfangs blinkte das erste Zeichenfeld noch, nun ist's völlig ruhig.
Aber was soll man sich beklagen? Offenkundig bin ich der Erste, welcher versucht, via Assembler und der "mittleren" MPLAB X-Version v5.20 so'ne Ansteuerung vorzunehmen. Neuland, wohin man tritt: auf dem Display sitzt der hinlänglich bekannte HD44780A00 . Das müsste ein einzeiliges Disp mit 8 Zeichen sein. Voll grottig.
Von eventuellen freundlich zugedachten Hilfsangeboten bitte freundlichst Abstand nehmen. Is klar, da sitzen wohl noch diverse Böcke drin. Ein oder zwei Runden gönne ich mir noch....und danach schmeiße ich diese Weltraumtechnik in den Müll und kehre zu 7-seg-Anzeigen zurück.
Bestgelaunte Grüße, picass

Passend dazu: Bilder hochladen ist heute nicht! >:(
#94
O
Compiler Software / Aw: Seltsames Programmieren
Letzter Beitrag von Ottmar - 19.10.2024, 17:31:52 CEST
NEIN!
Das war doch nur BEISPIELHAFT gemeint!!! - falls man in die Situation kommen sollte UNBEDINGT diese Analogpins verwenden zu müssen!
Natürlich nimmst Du den PORTC der von seinen 8 Pins her gesehen am Besten geeignet ist, die Rolle des LCD_PORT zu übernehmen!

Du schaltest bei Verwendung des PORTC einfach ANSEL und ANSELH mit clrf auf digital, fertig! Falls Du mal Analogpins brauchst, hast Du ja auch noch PORTB und PORTA zur Verfügung.
#95
P
Compiler Software / Aw: Seltsames Programmieren
Letzter Beitrag von picass - 19.10.2024, 14:51:06 CEST
Doch ! >:(  Mache mir doch Sorgen...! So spät in der Nacht und kurz vorm Schlummern sollte "der Tag" nicht nur ruhig ausklingen, sondern zudem nur dem eigenen Wohlbefinden gewidmet sein.

Der Besuch ist beschäftigt und ich habe die Pause natürlich doch genutzt, um in dein Blatt zu schauen. Und schon stoße ich wieder auf Unerwartetes, hier die Nutzung der Ports. Sprut hatte den einen ganzen Port B genutzt (eine LED an PA) und das würde ich aus Gründen der Einfachheit bei der Programm-Übernahme auch verwenden, aber dann halt den kompletten Port C. Nun schreibst du, dass der nicht zur Verfügung stünde, weil "...die ANSEL/ANSELH-Pins für den ADC" gebraucht würden. Hm....., welcher ADC? Im Sprut'schen Prog wird mal der Zustand des PortsB abgefragt, aber von ADC ist nichts zu sehen. Vermute, da ist dir von einem anderen Prog was in dein nächtliches Papier rein gerutscht.
Grüße, picass
#96
O
Compiler Software / Aw: Seltsames Programmieren
Letzter Beitrag von Ottmar - 19.10.2024, 13:52:26 CEST
picass,
mach' Dir keine Sorgen um meine Nachtruhe, bin ein "Spät-ins-Bett-Geher". So viel Aufwand war das auch wieder nicht.
#97
P
Compiler Software / Aw: Seltsames Programmieren
Letzter Beitrag von picass - 19.10.2024, 12:26:11 CEST
Zitat von: Ottmar in 18.10.2024, 23:48:18 CEST......Sprut hat wohl früher mal für einen anderen PIC die LCD-Routine entworfen......
Das hatte ich mir auch gedacht. Mache ich ja selbst so, dass in aller Regel für ein neues Projekt ein früher verwendetes Prog ausgesucht wird, welches in etwa sinnvoll aufzugreifen wäre und dann geht es ans Anpassen.

Au man......, Ottmar, das hat dich die Nachruhe gekostet, was mir gleich ein schlechtes Gewissen vermittelt. Und dann muss ich noch gestehen, dass ich nicht stante pede dran gehen kann, denn heute kommt zwecks Geburtstagsnachfeier Besuch von der puckeligen Verwandtschaft und bleibt auch bis in späte Stunden. Aber sei gewiss, dass ich den erstellten Ausdruck akribisch bearbeiten werde. Weil....., es muss endlich mal sein, dass auch ich als Spät-Nachzügler LCD-Ausgabe handeln kann. Danke für die Nachtschicht und ich hoffe, dass du ausreichend Zeit zum Ausschlafen gehabt haben wirst.
Danke und In diesem Sinne nun um 12:20 Uhr ein herzlicher Guten-Morgen-Gruß, Bernd

#98
O
Compiler Software / Aw: Seltsames Programmieren
Letzter Beitrag von Ottmar - 18.10.2024, 23:48:18 CEST
HI picass
Zitat
[Jetzt frage ich mich recht bange, ob ich spinne oder der Sprut. Bei einem so niedlichen µC wie dem PIC16F84 mit der ungeheuren Portzahl von zwei (!) - in Worten: 2 (!) - führt er gänzlich unnötig zwei Konstante ein...]

Sprut hat wohl früher mal für einen anderen PIC die LCD-Routine entworfen (ändert sich auch in Zukunft nicht mehr). Dabei wurde eben PORTC für die  Controlbits (E, RS, RW) und PORTD für die Datenübrtragung D7:4 verwendet. 

PORTC equ PORTB ; LCD-Control-Port
PORTD equ PORTB ; LCD-Daten-Port

damit erfolgt  die Anpassung der LCD-Routinen an den PORTB des 16F84 ohne die LCD-Routine umändern zu müssen.

Ich bevorzuge es da eindeutiger, wie nachstehend, obwohl es an der Auswirkung nichts ändert..
LCD_PORT  equ PORTB
LCD_LAT.....
LCD_TRIS....
LCD_E    equ  RB3 (ist ja tatsächlich nur die .3)
LCD_RW   equ  RB2
LCD_RS   equ  RB1

Control- und Datenport können auch getrennt sein. Die Datenbits 7:4 wird man wohl bei einem PORT belassen. Eine Trennung vom Controlport kann aber dann erforderlich sein wenn PORTB wie z.B. bei Deinem Lieblingspic, nur 4 Bits hat, dann kann wie folgt vorgegangen werden:
PORT C ist  nicht verfügbar, da hiervon die ANSEL/ANSELH-pins für den ADC gebraucht werden
LCD_PORT equ PORTB    ;RB7:4 -> LCD D7:4
LCD_CTRL equ PORTA    ;Controlbits
LCD_E equ    RA2      ;(ist ja tatsächlich nur die .2)
LCD_RW equ   RA1
LCD_RS equ   RA0

Die Controlbits werden dann mit 
bsf/bcf  LCD_CTRI, bsf/bcf LCD_E usw 1/0 gesetzt.

Bei der Initialisierung der Register (SFR's etc) kann man dann die Labels gleich mit  verwenden:
clrf   LCD_PORT
clrf   LCD_LAT       ; nicht beim 16F84
movlw  b......
movwf  LCD_TRIS      ; verwendet werden sollen 
movlw  b'.....
movwf  ANSEL
movlw  b'.....
movwf  ANSELH

Im Hautprogramm verbessert es die Übersicht, werden verschiedene Labels für den gleichen PORT verwendet. Braucht man z.B einen
KEY_PORT für Pushbuttons oder/und einen ADC_PORT für ein paar Analog-pins, weiß man auf den ersten Blick, um was es gerade geht.

Optimal ist es weiterhin die ganzen LCD-spezifischen Deklarationen und Unterprogramme in einer INIT-Datei unterzubringen, benannt nach dem LCD-Prozessor, z. B "HD44780_4Bit_Init.INC", Dann kann diese in jedem anderen Programm, stets wieder verwendbar, eingefügt und hinsichtlich des/der PORTs einfach angepasst werden: 
#include <HD44780_4Bit_Init.INC>

Ich kann Dir auch nicht ersparen, darauf hinzuweisen, daß Deine von Dir bevorzugte Taktfrequenz von 31kHz (wenn ich mich nicht irre), wohl am besten auf wenigstens 4MHz erhöhen werden sollte, falls eine rasche, nicht stotternde LCD-Ausgabe erreicht werden soll. Na, ja funktioniert wird es auch langsamer, dann kann man eben zusehen wie es funktioniert :-) .. :-).
8)
mfG Ottmar
#99
P
Compiler Software / Aw: Seltsames Programmieren
Letzter Beitrag von picass - 18.10.2024, 18:48:39 CEST
Ottmar....., du Schlingel! Du bist für mich viel zu schnell. Habe gerade erst dein voriges Programm angeschaut und zu einer praktischen Umsetzung - also dem Versuch einer Ausgabe - ist noch ein weiter Weg. Dieses vorige Prog ist - soweit ich das richtig sehe - der gleiche Bestandteil wie der im Sprut-Prog, nur dass andere Konstante/Variable gewählt wurden. Wie auch immer...., gemach.

pic18: einen Screenshot kannst du ohne Problem in das einfache Win-Prog im Zubehör namens "Paint" einfügen und dann in beliebigen Formaten - falls möglich natürlich J-Peg - in eine hier einstellbare Datei exportieren, rsp. speichern.

Gettz... Ottmar....kommt die angekündigte zweite Prob-Stelle. Ich hänge noch viel weiter vorne im Sprut'schen Prog fest. Da definiert er 7 Konstante. Die letzten fünf sind klar, aber mit den beiden ersten kann ich wenig anfangen. Ließe sich aber auch anders sagen: nach meiner Meinung ist er da tückisch fünfmal über Bande gegangen, um nichts anderes zu tun, als einen Port-Status auszulesen. Die beiden ersten Konstanten lauten:
PORTC  Equ PORTB
PORTD  Equ PORTB

Das verstehe ich so, dass der Status von PortB einmal der Constanten PORTC zugewiesen wird und ein ander mal derselbe B-Status der Constanten PORTD. Später in seinem Prog in den Teilprogs "BusyLoop", "OutLcdConrtrol" und "OutLcdDaten" werden diese K's benutzt, meist, um ein Bit zu setzen, einmal aber auch, um Port B zu lesen und das Ergebnis an eine Variable namens "LcdStatus" zu übergeben.

Jetzt frage ich mich recht bange, ob ich spinne oder der Sprut. Bei einem so niedlichen µC wie dem PIC16F84 mit der ungeheuren Portzahl von zwei (!) - in Worten: 2 (!) - führt er gänzlich unnötig zwei Konstante ein mit Namen von Ports, die es gar nicht gibt. Und einer der beiden Konstanten wird nur ein einziges Mal benutzt !!! Einfach gesagt: viel umständlicher geht es wirklich nicht. Statt einfach den Port auszulesen und das in die gewünschte Variable zu übergeben dann so'n Wirrwar! Konstante sollen das Leben erleichtern, aber nicht verdunkeln und zu minutenlangem Kontrollieren, Gegenlesen, Vergleichen, Grübeln und Sich-Wundern führen! Bin gerade stinkig. Und hoffe, dass so richtig gelesen zu haben. Watt'n Veitstanz um das einfache Auslesen eines Ports!!!
Grüße, picass
#100
P
Compiler Software / Aw: Seltsames Programmieren
Letzter Beitrag von pic18 - 18.10.2024, 15:33:53 CEST
Leider kann ich kein Bild-screen hochladen.
Unter " Produktion/ Set Projekt Configuration/Customize.." dann Conf: kannst Du den Compiler auswählen.
Bei mir steht in Compiler Toolchain:
mpasm (v5.54) [C:\Program Files (x86)\Microchip\mplabc18\v3.47\mpasm]