Hallo, ich habe das LCD WD-C2704M-1HNN (4 Zeilen x 27 Zeichen, 8 Taster) von Pollin. Ich möchte dieses LCD nun für ein Projekt von mir nutzen und es über TWI ansteuern um am Haupt-Mikrokontroller einige Pins zu sparen. Dazu habe ich mir jetzt eine kleine Schaltung mit einem Atmega8 erstellt, der die Verbindung zwischen dem TWI-Bus und dem LCD herstellen soll. Könnt ihr mal drüber schauen?? Villeicht habt ihr ja noch Verbesserungsvorschläge oder findet Fehler in der Schaltung. Danke!!
Na ja, das LCD läßt sich genauso gut über ein Schieberegister (74HC595) ansteuern, ein eigener µC dafür erscheint mir ein bißchen zu aufwendig.
Danke für deine Antwort. An ein Schieberegister habe ich auch bereits gedacht. Das halte ich hier allerding für weniger gegeignet, da ich ja im prizip 2 LCD-Controller und die Taster ansteuern möchte. Des Weiteren will ich das ganze von der Ansteuerung so einfach wie möglich halten und den LCD-Mikrokontroller mit verschiedenen Modien versehen, sodass sich der Hauptkontroller nicht mehr um so Dinge wie LCD-Scrollen oder ähnliches kümmern muss.
Interrupt-Leitung für I2C. Solltest du für Projekte nicht dauern pollen wollen, ob eine Taste gedrückt ist, dann sollte so ein Pin vorhanden sein. Es stehen noch Pins zur Verfügung. Osc könnte weggelassen werden und mit dem internen Takt gearbeitet werden. Weiters, pull-downs an den D0-D7, wo du willst über Jumper, würde 2 Vorschlagen, auch nur eines, damit du ev. die Addresse des LCD Jumpern kannst. Musst es ja nicht bestücken. Weiters würde ich die Tasten vom PortB wegnehmen, und D0-D7 mitbenutzen, was noch übrig ist, und die freiwerdenden Tasten ev. für Led(matrix) nehmen. Es passiert oft, daß zusätzlich zu den Tasten usw noch ein paar Leds gebraucht werden. Kontrasteinstellung, auch da kann das Poti durch ein PWM (ohne Kondensator sowie Low-pass, sollte aber bestückbar sein) ersetzt werden. Weiters, Buzzer sowie LED ansteuerung (backlight) sowie Helligkeitsmessung, auch das könnte man bei anderem Display gebrauchen. Es fragt sich, wie Universell du das brauchst, und ob es sich lohnt, da Arbeit reinzustecken.
Erstmal Danke für deine Ausführliche Antwort!!
1 | Interrupt-Leitung für I2C. Solltest du für Projekte nicht dauern pollen |
2 | wollen, ob eine Taste gedrückt ist, dann sollte so ein Pin vorhanden |
3 | sein. Es stehen noch Pins zur Verfügung. |
Ich kann doch, wenn ein Taster gedrückt wurde, den Mikrokontroller anweisen, dies über den I2C an den Hauptprozessor zu senden. Wofür wird dann die interruptleitung benötigt (ich bin was I2C angeht noch totaler Anfänger!!!9
1 | Osc könnte weggelassen werden und mit dem internen Takt gearbeitet werden. |
ich war mir nicht sicher, ob der interne Takt genau genug ist um mit der TWi-Schnittstelle zu arbeiten, aber wenn du das sagst, werde ich diesen weg lassen.
1 | Weiters, pull-downs an den D0-D7, wo du willst über Jumper, würde 2 Vorschlagen, auch nur eines, damit du ev. die Addresse des LCD Jumpern kannst. Musst es ja nicht bestücken. |
Gute Idee, da hab ich noch garnicht drüber nachgedacht.
1 | Weiters würde ich die Tasten vom PortB wegnehmen, und D0-D7 mitbenutzen, |
2 | was noch übrig ist, und die freiwerdenden Tasten ev. für Led(matrix) |
3 | nehmen. Es passiert oft, daß zusätzlich zu den Tasten usw noch ein paar |
4 | Leds gebraucht werden. |
Ich versteh nicht ganz, wie das gehen soll. Da würde doch jeder Pin mehrer Funktionen übernehmen uund zugleich Eingang und Ausgang sein. Woher sollen die Tasten den wissen, ob die Tasten angesprochen wurden oder das LCD.
1 | Kontrasteinstellung, auch da kann das Poti durch |
2 | ein PWM (ohne Kondensator sowie Low-pass, sollte aber bestückbar sein) |
3 | ersetzt werden. Weiters, Buzzer sowie LED ansteuerung (backlight) sowie |
4 | Helligkeitsmessung, auch das könnte man bei anderem Display gebrauchen. |
5 | Es fragt sich, wie Universell du das brauchst, und ob es sich lohnt, |
6 | da Arbeit reinzustecken. |
Die Idee hierfür finde ich ganz gut, nur für das aktuelle projekt werde das warschienlich nicht benötigen.
>Ich kann doch, wenn ein Taster gedrückt wurde, den Mikrokontroller >anweisen, dies über den I2C an den Hauptprozessor zu senden. Wofür wird >dann die interruptleitung benötigt (ich bin was I2C angeht noch totaler >Anfänger!!!9 Das gibt es, weiß jetzt nicht auswendig SMB oder I2C, wird generell gemacht, um aus dem sleep-modus zu kommen, ist aber eine Spezialanwendung. Generell dürfen Slaves, diese Platine ist ein Slave, nicht eigenständig senden. Deshalb gibt es generell eine Interruptleitung, welche in der Regel Open-Collector ist, damit man mehrere solche Signale zusammenschalten kann, um dem Master ein Event zu Signalisieren. Der Master muß daraufhin seine Slaves abfragen, und dadurch auch den Interrupt quittieren. >Osc könnte weggelassen werden und mit dem internen Takt gearbeitet werden. >ich war mir nicht sicher, ob der interne Takt genau genug ist um mit der >TWi-Schnittstelle zu arbeiten, aber wenn du das sagst, werde ich diesen >weg lassen. Das hängt von der Geschwindigkeit des I2C Busses ab. Würde warscheinlich ca 20 oder 40Kbit laufen lassen, und somit genügt der interne Takt. Der interne Takt sollte als Slave 16x höher sein, als der I2C Takt. Sprich, mit 1Mhz internem Takt kann man den I2C Bus mit 62.5khz bedienen. >Weiters würde ich die Tasten vom PortB wegnehmen, und D0-D7 mitbenutzen, >was noch übrig ist, und die freiwerdenden Tasten ev. für Led(matrix) >nehmen. Es passiert oft, daß zusätzlich zu den Tasten usw noch ein paar >Leds gebraucht werden. >Ich versteh nicht ganz, wie das gehen soll. Da würde doch jeder Pin >mehrer Funktionen übernehmen uund zugleich Eingang und Ausgang sein. >Woher sollen die Tasten den wissen, ob die Tasten angesprochen wurden >oder das LCD. Das weiß der Kontroller, ob er das LCD anspricht, oder die Tasten ausliest. Die Tasten müssen das nicht wissen. Zwischen den Tasten und den Pins sowie dem LCD kommen in diesem Falle noch Wiederstände rein.
Danke, dass Hikft mir schonmal weiter. Ein kleine frage habe ich aber noch. Was spricht den dagegen, aus dieser Platine auch einen Master zu machen???
Chris S. wrote: > Generell dürfen Slaves, diese Platine ist ein Slave, nicht eigenständig > senden. Du hast Dir wohl nicht den Schaltplan im 1. Post angesehen. Wo steht das, daß ein ATmega8 nur als Slave betrieben werden darf? Das Senden geht sogar sehr gut, als Multimaster. Niemand muß pollen, wer was zu sagen hat, sagt es einfach. Im schlimmsten Fall verliert er die Arbitration und fängt eben nochmal an, nach dem Stop des anderen Masters. Peter
>Du hast Dir wohl nicht den Schaltplan im 1. Post angesehen. Ja, und habe mir auch den Text durchgelesen. >Wo steht das, daß ein ATmega8 nur als Slave betrieben werden darf? >Das Senden geht sogar sehr gut, als Multimaster. Niemand muß pollen, wer >was zu sagen hat, sagt es einfach. >Im schlimmsten Fall verliert er die Arbitration und fängt eben nochmal >an, nach dem Stop des anderen Masters. Nirgends. Die Platine soll ja warscheinlich nicht nur für dieses Projekt herhalten, sondern auch für nächste. Da kommt es sehr wohl vor, daß man im Master keinen Slave haben will, aus Zeitgründen oder sonstiges.
Chris S. wrote: > Nirgends. Die Platine soll ja warscheinlich nicht nur für dieses Projekt > herhalten, sondern auch für nächste. Ja und? Deshalb muß man dem Poster ja noch lange nicht vorschreiben, wie er den Mega8 zu programmieren hat. > Da kommt es sehr wohl vor, daß man > im Master keinen Slave haben will, aus Zeitgründen. Aus Zeitgründen ist Multimaster sogar günstiger, es entfällt ja das Pollen. Der Slave-Receiver kostet keinerlei zusätzliche Zeit, es ist nur ein anderer Zweig in der I2C-Interruptroutine. Multimaster kann man nur dann nicht verwenden, wenn der andere MC kein HW-I2C hat oder die Pins schon belegt sind und man I2C in SW machen muß. SW-I2C geht nur als Single-Master ohne großen Ressourcenverbrauch. Man kann das LCD aber auch über die UART anschließen: Beitrag "LCD über nur einen IO-Pin ansteuern" Peter
Was ich vergessen hatte, ev. externe Pull-Up´s, muß auch nicht bestückt werden, es sollte halt die Möglichkeit da sein. Weiters, es kann dir unterkommen, daß du ein Display hast, wo du eine negative Spannung als Bias brauchst, sogenannte wide temperature typen, die auch Grade unter 0 vertragen. Da brauchst du ein Pin sowie die entsprechende Schaltung (diode/cap) um einen Inverter aufzubauen. Wie gesagt, es ist fraglich, wie universal du das Board haben willst, und ob es sich auszahlt, das zu Implementieren.
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.