Geschätztes Forum, da ich für das EA DOGM162W-A keine Assembler Software gefunden habe, habe ich mich bemüht, sie anhand des Datenblattes zum DOGMxxx und des Datenblattes zum Controller ST7036 selbst zu schreiben. Weil ich damit ein Problem hatte, wurde mir in diesem Forum von einem Herrn namens Frank geholfen, s. den Beitrag Beitrag "LCD DOGM162W-A CDGRAM" Ich möchte Frank hier nochmals sehr für seine Mühe danken. Um die Sache etwas zu vervollständigen, habe ich mir noch ein EA DOGM163W-A gekauft. Die mit 7-Zip komprimierte Datei <DOGM162_163_4WIRE_SPI_3.3V_5.0V_Initialize.zip> enthält folgende Software: 4WIRE_DOGM162_3_3V 4WIRE_DOGM162_5_0V 4WIRE_DOGM163_3_3V 4WIRE_DOGM163_5_0V SPI_DOGM162_3_3V SPI_DOGM162_5_0V SPI_DOGM163_3_3V SPI_DOGM163_5_0V Alles wurde in Studio 4 erstellt. Die für die 4 Bit Verdrahtung geschriebenen Initialisierungen sind jeweils eine Übersetzung des Programms aus dem Datenblatt des ST7030 Seiten 41 und 42, die für die SPI Verdrahtung geschriebenen Initialisierungen sind nahezu 1:1 Umsetzungen der Beispiele aus dem DOGMxxx Datenblatt. Die Software beschränkt sich aber nicht auf die reinen Initialisierungen. Nach dem Einschalten der Versorgungsspannung erscheint für 2.5 s der Hinweis: After this: pls. wait patiently Danach werden die Werte von C0 bis C5 (s. Datenblatt) von 000000 bis 111111 inkrementiert und die LCD_init immer neu aufgerufen. Es dauert recht lange, bis diese Werte groß genug sind, um auf den Displays zu erscheinen, da jeder neue Kontrast 0.5 s angezeigt wird. Bei den 6 Cx Werten sind das 32 s, beim 1. Mal entsprechend länger, also bitte geduldig warten. Der Vorgang wiederholt sich dann immer wieder. Mit der Taste kann das Inkrementieren gestoppt werden, so dass man sich den optimalen Wert für den Kontrast leicht merken kann. Sehr stark abhängig ist der Kontrast von den Werten Rab0, Rab1 und Rab2. Bei der Versorgungsspannung von 3.3V beträgt die Ausgangsspannung der charge pump am Pin 24 der LCDs gut 6V. Auch diese Spannung hat einen starken Einfluß auf den Kontrast. Mittels des Lastwiderstandes R3 wird er auf ca. 5V herabgesetzt. Ob der optimale Wert für R3 abhängig ist vom jeweiligen Exemplar des LCD, das weiß ich nicht, vermute es aber. Unter \DOGM162_163_4WIRE_SPI_3.3V_5.0V_Initialize\Texte, Bild, Schaltplan\Texte ASM\*.asm stehen die mittels NP++ fürs Drucken optimierten Assembler Texte. Sie wurden jeweils zum PDF Printer geschickt. Das Ergebnis steht unter \DOGM162_163_4WIRE_SPI_3.3V_5.0V_Initialize\Texte, Bild, Schaltplan\Texte PDF\*.pdf Wie NP++ veranlasst werden kann, fürs Drucken einigermaßen optimale Dateien zu erzeugen, habe ich früher mal beschrieben unter Beitrag "ASM Code drucken mit NP++" Eine kleine Anwendung für das DOGM162W-A, ein sehr einfaches DVM, ist zu finden auf Beitrag "DVM mit DOGM162W-A, ATMEGA8A, AVRASM" Ich würde mich freuen, wenn diese Informationen für jemanden nützlich wären. Grüße Klaus
Hi >da ich für das EA DOGM162W-A keine Assembler Software gefunden habe, ... Kann ich nicht wirklich glauben. >habe ich mich bemüht, sie anhand des Datenblattes zum DOGMxxx und des >Datenblattes zum Controller ST7036 selbst zu schreiben. Habe ich auch vor längerer Zeit gemacht. Allerdings als eine Bibliothek (Anhang) ohne das ganze drumherum des Hauptprogramms. Mein Ansatz war etwas anders: - Alle DOGM-Displays - Verschiedene SPI-Ansteurungen (USART im SPI-Mode fehlt noch) Ist nicht vollständig, aber mehr habe bisher nicht gebraucht. MfG spess PS: An deinen Textausgaben solltest du noch etwas arbeiten.
Hey erstmal ne top Arbeit!!!!!!!!!!!!!!!! 1. am besten unter Codesammlung einstellen 2. wie Spess schreibt als Bibliothek/Includedatei erstellen 3. Schnittstellenanpassung vornehmen und in Datei auskommentieren dann hat immer eine Art Beispiel wie der Ersteller es meint z.B. PortB = LCD_Port ddrb = LCD_DDR pinB = LCD_Pin und man kann es an jeden Controller beliebig anpassen ohne etwas in der Grunddatei zu ändern. 4. Textdatenbank erstellen als eigene Datei denn kann man diese auch gleichzeitig für die anderen Includes nutzen. 5. den Zeichenzähler im Textout auf $ff vergleichen lassen z.B. Text: db "Hallo",$ff das wären so noch Anmerkungen aber sonst find ick did Klasse ;-)
Hi >5. den Zeichenzähler im Textout auf $ff vergleichen lassen > z.B. Text: db "Hallo",$ff Null-Terminierte Strings sind eigentlich üblicher. MfG Spess
Hallo spess53, danke für Deinen Kommentar. Deine Assembler Kenntnisse sind den meinen soweit überlegen, dass sich jeder Vergleich verbietet. Deinen Text dog_text.asm habe ich zur dog_text.pdf gemacht und gedruckt. Ich bin sicher, vieles lernen zu können. Die Datei dog_text.pdf hänge ich hier an. Du hast Dich auch mit dem DOGM081 beschäftigt. Das habe ich bewusst vermieden weil ich keins besitze. Wenn ich etwas nicht ausprobieren kann, dann schleichen sich bei mir garantiert Fehler ein. Deine vielen .if / .endif Statesments sind für mich hochinteressant. Ich hatte überlegt, ob ich nur ein Programm statt der 8 Programme schreibe und die Auswahl der jeweils richtigen Programmteile bzw. Parameter durch das Setzen von Brücken von Inputs nach GND realisiere. 3 Brücken hätten dafür ausgereicht. Diese Technik hätte doch zumindest teilweise Deinen .if / .endif entsprochen, wenn ich Deinen Programmtext insofern richtig verstehe. Weil das Kopieren von Text und die sehr überschaubaren jeweils notwendigen Änderungen aber recht wenig Arbeit gemacht haben, habe ich es bei den 8 Programmen belassen. Vieles in Deinem Programmtext verstehe ich (evt. noch) nicht. Beispiel: ganz am Anfang steht SPI_Masterinit: sbi lcct1,lc_cs ; Outputs setzen 1. müssten lcct1 und lc_cs nicht irgendwie zB. mittels .equ definiert werden? 2. sind das zwei verschiedene Outputs? Das würde bedeuten, dass man mit sbi mehr als einen Output auf 1 setzen kann. Das ist zB. der Assembler Hilfe von Studio 4 nicht zu entnehmen. Und so gibt es viele weitere Fragen. Falls Du bereit sein solltest, mir solche Fragen zu beantworten: Meine E-Mail Adresse ist rodo38@gmx.net. Die in mikrocontroller.net vorhandene Adresse ist nicht mehr gültig. Ich kann sie aber auch nicht durch die gültige ersetzen. Schönen restlichen Sonntag Klaus
Hallo chris, vielen Dank für das Lob. Hallo chris, hallo spess53, Eure Kommentare sind gekommen, als ich die Antwort auf den ersten Kommentar von spess53 geschrieben habe. Vielen Dank dafür. Manches von dem, was chris geschrieben hat, verstehe ich schon, anderes leider nicht. Ich bin aber begierig, zu lernen. Ich denke, auf diesem Weg ein vernünftiges Frage - Antwort Spiel zu betreiben, das wäre wohl kaum möglich. Solltest Du, chris, bereit sein, Fragen von mir zu beantworten: Meine E-Mail Adresse ist rodo38@gmx.net. Diesen Beitrag unter Codesammlung einzustellen sollte ich evtl. erst ins Auge fassen, wenn Fachleute wie Ihr nicht mehr so viele Fehler und Probleme sehen. Nochmals vielen Dank für Eure Zeit und Eure Mühe Klaus
Hi >Deine Assembler Kenntnisse sind den meinen soweit überlegen, dass sich >jeder Vergleich verbietet. Mindestens ein lustige Stelle hast du mit Sicherheit noch nicht bemerkt. >Du hast Dich auch mit dem DOGM081 beschäftigt. Nein. Aber die Angaben aus dem Datenblatt stimmen halbwegs. Eigentlich habe ich immer nur leicht Anpassungen am Kontrast gebraucht. >Deine vielen .if / .endif Statesments sind für mich hochinteressant. Das Ganze wird in der dog_text.inc konfiguriert. Die dog_text asm wird nicht angefasst. Für ein Projekt arbeite ich mit einer Kopie der dog_text.inc im Projektverzeichnis. Es gibt erst mal generell für jede Funktion generell ein '.if use_xyz' Statement mit dem diese Funktion ein oder abgeschaltet (nicht assembliert) wird. Andre Statements beziehen sich auf unterschiedliche Prozessoren und/oder verschiedene SPI-Modes. >Vieles in Deinem Programmtext verstehe ich (evt. noch) nicht. Beispiel: >ganz am Anfang steht >SPI_Masterinit: sbi lcct1,lc_cs ; Outputs setzen >1. müssten lcct1 und lc_cs nicht irgendwie zB. mittels .equ definiert >werden? Ja. Siehe dog_text.inc >2. sind das zwei verschiedene Outputs? Das würde bedeuten, dass man mit >sbi mehr als einen Output auf 1 setzen kann. Das ist zB. der Assembler >Hilfe von Studio 4 nicht zu entnehmen. Welche Stelle meinst du? Das Ganze ist unter Studio 4 geschrieben. (Was sonst). MfG Spess
Hallo spess53, ja, so ist das, wenn man wie ich zu dumm ist, die Beiträge intelligenter Menschen (womit natürlich Du gemeint bist), vollständig durchzulesen. Im Zusammenhang mit Deiner Datei 'dog_text.inc' ist der Programmtext in 'doc_text.asm' gar nicht mehr geheimnisvoll und auch für mich gut verständlich. Natürlich ist Dein Programm deutlich professioneller als meins. Trotzdem werde ich für meine Person dabei bleiben, in einem vergleichbaren Fall auch weiterhin eine Anwendung dafür zu schreiben. Ich kenne mich halt und weiß, dass ich nie an Alles denke, wenn ich es nicht ausprobiere. ------------------------------------------------------------------------ Hallo chris, soweit ich das bis jetzt verstehe, werden Deine Punkte 1. bis 4. von den Beiträgen von spess53 vom 07.06.2015 18:26 'dod.text.asm' und 'doc_text.inc' optimal erfüllt. Dein Punkt 5. macht mir aber Kopfzerbrechen. Ich glaube, dass ich genau das tue, nur verwende ich statt $FF die Dezimalzahl 255. Soviel ich zu wissen glaube, ist es aber gleichgültig, ob man eine der Formen BIN, HEX oder DEZ benutzt zur Darstellung einer Zahl. Ob das auch für OKT gilt, das weiß ich nicht. Vermutlich habe ich nicht verstanden, was Du mir sagen willst. ------------------------------------------------------------------------ An Euch Beide: Ganz herzlichen Dank für Eure Mühe, Eure Zeit und das an mich vermittelte Wissen, Klaus
Hallo, Klaus D. schrieb: > soweit ich das bis jetzt verstehe, werden Deine Punkte 1. bis 4. von den > Beiträgen von spess53 vom 07.06.2015 18:26 'dod.text.asm' und > 'doc_text.inc' optimal erfüllt. jo das stimmt wohl, ich bezog mich aber auf deine Routinen. Klaus D. schrieb: > Dein Punkt 5. macht mir aber Kopfzerbrechen. Ich glaube, dass ich genau > das tue, nur verwende ich statt $FF die Dezimalzahl 255. Soviel ich zu > wissen glaube, ist es aber gleichgültig, ob man eine der Formen BIN, HEX > oder DEZ benutzt zur Darstellung einer Zahl. Ob das auch für OKT gilt, > das weiß ich nicht. Ohhhh ja habs übersehen und hast Recht. Die Form der Zahlendarstellung ist nur zu einer begrenzten Art egal. Vor allem wenn man einzelne Bits setzen muss bietet es sich an. z.B.: .equ LCD_portX = Portd .equ Enable = 6 .equ Zeile1 = $00+16 LCD_enable: sbi LCD_PortX, Enable ; Enable High nop ; kurz warten nop nop cbi LCD_PortX, Enable ; Enable High ret Hierbei hat man den Vorteil man deklariert es sich in der Hauptdatei und kann es auf sein Projekt zügig anpassen. Aus deiner Textausgabe werde ich nicht richtig schlau. Denn es reicht doch die Unterroutine TextOut einmal anzulegen und bei dem Aufruf des Textes 1. Adresse des LCD laden und zum Lcd schicken an dem der Text beginnen soll 2. TextDatenbankAdresse laden 3. Textout aufrufen 4. Ende Sub werbe1: ldi temp1, Zeile1 ;LCD-Adresse rcall lcd_DDR_AdrX ;senden ldi ZH,high(out0*2) ldi ZL,low(out0*2) ;DB-Txt laden rcall txt_out ;Txt ->> LCD senden ret
Hallo chris, Du hast mit Deiner Kritik an meinem Programmierstil absolut recht. Insbesondere werfe ich mir selbst vor, dass ich nahezu gleiche Prozedur-Texte immer wieder schreibe, atatt sie nur einmal zu schreiben und dann immer wieder mit den jeweils geänderten Parametern zu benutzen. Copy und Paste sind halt so einfach. Früher war dieser Stil aber auch hilfreich: Z.B. bei Modernisierungen von Elektroniken von Materialprüfmaschinen habe ich die dafür zu ändernden Programmteile (in VB) in einem ähnlichen Stil geschrieben. Der war dann so einfach zu verstehen, dass die Programmierer des jeweiligen Kunden praktisch niemals Nachfragen hatten. Hier muß ich noch an mir arbeiten. Vielen Dank für die Kritik, insbesondere, wenn sie so fundamentiert ist wie Deine und dann auch noch mit bestens verständlichen Vorschlägen angereichert ist, wie es auch besser ginge. Klaus
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.