Hallo Leute, hab nen kleines Programmierproblem: Ich betreibe an meinem ATMega32 ein LCD Display und habe aufgrund eines besseren Layouts die 8 Datenleitungen (0 - 7) invertiert an die OutputPorts des µC's gehängt. Also: µC Port 0 - LCD Port 7 µC Port 1 - LCD Port 6 µC Port 2 - LCD Port 5 µC Port 3 - LCD Port 4 µC Port 4 - LCD Port 3 µC Port 5 - LCD Port 2 µC Port 6 - LCD Port 1 µC Port 7 - LCD Port 0 Ich will beispielsweise jetzt den Wert 0x05 (0000 0101) auf die Datenleitungen legen. Das LCD sieht den Wert jetzt aber als (1010 0000). Wie kann ich das Umrechnen ?? Besten Dank, Michael
...Ahaaa! Du hast Leitungen nicht invertiert, sondern anders belegt (umgekehrt). Sorry für mein zu schnelles Antworten
@Sami falsch, er meint mit invertiert nicht den Oegel, sondern die Anschlussbelegung. @mmike Entweder baust du eine Tabelle ein, oder du zerlegst das ganze in Bits und setzt es wieder zusammen z.B. mit Schieben (alter Wert nach links, und die Bist in den neuen Wert nach recht rein), oder so: wertneu=((wertalt&128)/128)|((wertalt&64)/32)|((wertalt&32)/8)|((wertalt &16)/2)|((wertalt&8)*2)|((wertalt&4)*8)|((wertalt&2)*32)|((wertalt&1)*12 8)
Oder du überdenkst nochmal dein Layout. Bei den Steuerleitungen ist es relativ egal wo sie hängen. Aber die 4 Datenleitungen: das ist keine gute Idee die zu verdrehen. Aus lange Sicht macht das nur Ärger.
@Karl, "Aus lange Sicht macht das nur Ärger." Warum sollte es ? Ich mach das ja auch immer so. Das Layout zu optimieren spart ne Menge Arbeit. Software ist da viel flexiebler, da gibt es keine Ebenenbeschränkungen und Leitungskreuzungen. Das Spiegeln eines Bytes wurde hier schon oft erläutert, ist überhaupt kein Problem. Peter
> Warum sollte es ? Weil erfahrungsgemäß nach 2 Monaten kein Mensch mehr weiss, dass diePinbelegung gespiegelt wurde. Muss er dann nochmal an das Teil ran, frägt er sich stundenlang, warum die Pegel an den Leitungen vermeintlich nichts mit den gesendeten Daten zu tun haben. Alles schon erlebt. > Ich mach das ja auch immer so. Peter: Du bist Profi. Du weist wie man sowas so einbaut und dokumentiert, dass man auch nach 2 Jahren sofort drüberstolpert.
Hallo Leute, vielen Dank für die Beiträge ! Ich hab mich jetzt doch entschlossen, daß Layout zu ändern, da es wahrscheinlich den µC zu langsam machen wird, wenn jedes Bytes gespiegelt werden muss. Auf dem Display wird relativ hochfrequent was angezeigt ..... @Peter: Aber da das erste Layout auch schon fertig ist werde ich Deine Funktion auf jeden Fall mal ausprobieren. @Karl-Heinz: Das mit dem Platinen ätzen funktioniert super! (Ich bin der mit der "Ersten Platine zur Fertigung") Hab mir das Ätzgerät I von Reichelt geholt und es klappt wunderbar!! Nur das Bohren nervt ein wenig, aber da muss man durch .... Grüße, Michael
Zu langsam? Für ein Textdisplay? Noch alle Tassen im Schrank? Ist Dir nicht klar wie scheiß langsam so ein LCD ist im Vergleich zu nem Controller? Und wie wenig Daten dabei übertragen werden? (rhetorische Frage, nicht Antworten).
Ist ja nicht so daß nur Gebrabbel ausgegeben wird, sondern da laufen auch noch andere Berechnungen von Sensordaten ....
Da du eh nur 128 ASCII-Zeichen hast und davon sicher nur die Hälfte brauchst, wäre es eigentlich kein Problem im Sourcecode schon statt der "echten" ASCII-Codes direkt umgewandelte zu senden. Also anstatt für nen A 65 zu laden (0b0100 0001) lädst du gleich (0b1000 0010). Ist nur das Problem, wenn du mal nen String senden willst, musst du den mit Hex-Zeichen zusammenbaun. Aber ne 128/256Byte Flash-Tabelle wäre auch kein Problem. Dann wäre man sogar freigestellt die Datenleitungen nach beliebigem Schema zu verkabeln.
> Das mit dem Platinen ätzen funktioniert super!
Ich sehe du hast Feuer gefangen.
Ist wirklich keine Hexerei.
Wie Horst-Otto schon sagte: Die Geschwindigkeit ist
sicherlich nicht das Problem. So schnell können LCD
gar nicht anzeigen wiedu sie füttern kannst.
Mir geht es auch nicht um die Steuerleitungen. An welchem
Pin die E, R/W oder Busy anschliesst spielt so gut wie keine
Rolle. Mir geht es um die 4 Datenleitungen (du benutzt
doch den 4-Bit Mode?).
Die 4 Leitungen zu spiegeln ist doch wirklich kein Problem:
Port 0 -----------------> D3
Port 1 -----------------> D2
Port 2 -----------------> D1
Port 3 -----------------> D0
so hast du es zur Zeit. Wenn du die Leiterbahnführung
so machst:
1 | |
2 | Port 0 -------------+ D3 <-----+ |
3 | +---------+ | |
4 | Port 1 ---------+ D2 <-+ | | |
5 | | | | | |
6 | Port 2 -------+ +----> D1 | | | |
7 | +-------------+ | | |
8 | Port 3 -----+ D0 <---+ | |
9 | +-------------------+ |
dann ist jeweils der richige Portpin mit dem richtigen Datenpin am LCD verbunden. Und braucht auch nocht sooo viel Mehrplatz.
:
Bearbeitet durch User
> Mir geht es auch nicht um die Steuerleitungen. An welchem > Pin die E, R/W oder Busy anschliesst spielt so gut wie keine > Rolle. Mir geht es um die 4 Datenleitungen (du benutzt > doch den 4-Bit Mode?). Leider nicht. Ich bin im 8 Bit Mode (siehe 1.Beitrag). Aber das neue PCB ist schon fertig und geht morgen abend ins Bad! Muss ja noch brav üben! Aber so langsam stellt sich schon eine Ätzroutine ein. Ab und an werden die Ergebnisse mal ein wenig unscharf und dann merkt man, daß die Platine nicht sauber auf der Platte aufgelegen hat, weil an der Seite noch der Grat vom zusammensägen abstand.... Naja, Übung macht halt doch den Meister. Ist schon lustig, was man auf einmal alles "basteln" nur weil's kein großer Aufwand mehr ist .... aber im Endeffekt verbringt man mehr Zeit dabei, denn erst eaglen und dann drucken und belichten und und und ... dann bohren usw. Da ist man auf ner Lochraster 5 mal so schnell, aber es sieht halt einfach nicht so professionell aus und größer ists auch.... Sobald ich endlich mal eine Cam finde werde ich mal nen paar Bilder posten und vielleicht mich auch mal an SMD ranwagen ..... Beste Grüße, Michael
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.