Habe folgendes Problem: Baue gerade eine Funkuhr mit einem LCD Display. Mein µC funktioniert nur mit 3.3V darum brauche ich eine negative Kontrastspannung(-3.3V) für LCD Display. Ich benutze dafür den ICL 7660, habe schon ins Datenblatt geguckt aber irgendwie check ich nicht welche Schaltung ich nehmen soll für den Spannungsinverter! Ich hoffe mir kann einer von euch weiterhelfen! Dank im Vorraus!
Auf dieser Seite ist das mit dem ICL7660 gut beschrieben: www.sprut.de/electronic/lcd/index.htm#strom
Du kannst auch einen Ausgang Deines µC mittels PWM-Modul auf "Dauerfeuer" stellen und ohne zusätzlichen Chip eine neg. Kontrastspannung erzeugen.
> Du kannst auch einen Ausgang Deines µC mittels PWM-Modul auf >"Dauerfeuer" stellen und ohne zusätzlichen Chip eine neg. >Kontrastspannung erzeugen. Geht darum nicht, da der µC jetzt schon extrem belastet wird! Im Sinne, dass mein Programm so programmiert ist, dass er immer 3 Aufgaben zugleich zu tun hat (alles über interrupts) keine Rechenzeit wird verschenkt
Das PWM Modul muss nur an Anfang initialisiert werden, dann läufte es von alleine.
Welchen uC verwendest du? Und welche 3 Aufgaben musst du erfüllen, dass du nicht mal die Zeit hast um ein Rechtecksignal auszugeben?
Ich verwende den µC PIC18F46K20 Er muss ein DCF77 Signal auswerten zugleich muss durch Interrupts an Timer 0 der schon mit einem Wert vorgeladen ist Interrupts im Sekundentakt auslesen und es wäre gut, dass die Uhr gleichzeitig immer auf dem LCD Display konstant mitläuft!
Sieht nicht so aus, als ob der µC an die Leistungsgrenze kommt, eher nicht.
Das Problem ist nicht die Leistungsgrenze sondern nur, dass er fast alles zu gleich machen muss!
Noch eine weitere Frage dieses Problem ist noch aufgetreten Ich habe folgenden Uhrenquarz: http://www.reichelt.de/Uhrenquarze-SMD-Gehaeuse/32-768-MS1V-12-5/3/index.html?;ACTION=3;LA=446;ARTICLE=85040;GROUPID=4005;artnr=32%2C768+MS1V-12%2C5;SID=12UQlZ8n8AAAIAAG0vwXwa948cc37bbfad8ffe0059b2844836511 Ich möchte ihn an Timer 0 vom PIC18F46K20 betreibern das wäre PIN 6 PORT RA4 wenn ich nicht falsch liege. Ich habe aber nur ein PIN zur Verfügung, mit welcher externen Beschaltung muss ich diesen Quarz an dieses PIN schalten damit er reibungslos anschwingt und dann mit seiner konstanten Frequenz schwingt?
> Ich habe aber nur ein PIN zur Verfügung Tja, dann geht es eben nicht. Du wirst schon einen ganzen Oszillator nehmen müssen: http://de.farnell.com/epson-toyocom/sg-3030jc/oszillator-32-768khz/dp/1278043
Wie wär's damit: http://de.wikipedia.org/wiki/Pierce-Schaltung Man könnte das Ausgangssignal nach einem Buffer auch für die Ladungspumpe verwenden. Normal hängt man den Uhrenquarz an den sekundären Oszillator (RC0 RC1) und verwendet Timer1. Dann könnte man auch den internen Oszillator für die CPU verwenden, und die Pins für den primären Oszillators als IOs verwenden. Du könntest auch den Uhrenquarz als primären Oszillator verwenden, wenn dir der PIC dann nicht zu langsam wird. Wenn das DCF77 Modul die ganze Zeit läuft, könnte man den 1 Hz Takt für die Uhr auch aus diesem Signal gewinnen.
Wenn du das Rechteck für die Ladungspumpe an einen IO ohne PWM Modul ausgeben willst, dann könntest du einen Timer mit Prescaler verwenden und bei jedem Interrupt den Pin toggeln, was ja nur 1 ASM-Befehle (BTG) ist. Vorladen musst du den Timer nicht, da die genaue Frequenz nicht so kritisch ist.
Patrick Schwarz schrieb: > Er muss ein DCF77 Signal auswerten zugleich muss durch Interrupts an > Timer 0 der schon mit einem Wert vorgeladen ist Interrupts im > Sekundentakt auslesen und es wäre gut, dass die Uhr gleichzeitig immer > auf dem LCD Display konstant mitläuft! Das ist doch aber nicht wirklich viel zu tun. Ich denke, du hast etwas falsche Relationen. Für dich als Mensch wäre das einiges zu tun, weil du es wirklich gleichzeitig machen müsstest. Beim µC ist das anders. Für diese Aufgaben, die du genannt hast, braucht er vielleicht 200Takte, habe ich jetzt einfach mal grob geschätzt. Bei internen 8Mhz dauert ein Takt 125ns (Nanosekunden). Das mit den grob geschätzten 200Takten multipliziert macht 25µs(mikrosekunden). Innerhalb dieser Zeit kannst du nichtmal zwinkern. Und nach diesen 25µs wartet er wieder nur sinnlos auf den nächsten Interrupt, der eine Sekunde später kommt. In meiner Rechnung habe ich jetzt nicht mit bedacht, das ein LCD auch mal ein paar Pausen von ein paar µs braucht, um Befehle auszuführen, aber selbst diese Zeit bekommst du als Mensch gar nicht mit. Auch wenn der µC alles nacheinander macht, so kommt es dem Menschen vor, als würde er alles gleichzeitig machen. Wenn du mit einem Taster z.B. durch ein Menü auf dem LCD schalten willst und der µC erst 5ms(Millisekunden) nach dem Tastendruck reagiert, fühlt sich das für dich als Mensch immer noch so an, als hätte er direkt auf meinen Tastendruck reagiert. Tatsächlich hat er aber innerhalb dieser Zeit 40.000 Takte was anderes gemacht. Es ist also alles halb so wild, was dein µC bis jetzt machen muss. MfG Dennis
Lars schrieb: > Wie wär's damit: http://de.wikipedia.org/wiki/Pierce-Schaltung > > Man könnte das Ausgangssignal nach einem Buffer auch für die > Ladungspumpe verwenden. > > Normal hängt man den Uhrenquarz an den sekundären Oszillator (RC0 RC1) > und verwendet Timer1. Dann könnte man auch den internen Oszillator für > die CPU verwenden, und die Pins für den primären Oszillators als IOs > verwenden. > Du könntest auch den Uhrenquarz als primären Oszillator verwenden, wenn > dir der PIC dann nicht zu langsam wird. > > Wenn das DCF77 Modul die ganze Zeit läuft, könnte man den 1 Hz Takt für > die Uhr auch aus diesem Signal gewinnen. Das Problem ist dass Timer 1 schon verwendet wird, den internen nehme ich nicht so gerne, und zu drei der PIC wird mir dadurch zu langsam, da das DCF 77 Modul anhand von 100 bzw. 200ms ausgewertet wird!
> Das Problem ist dass Timer 1 schon verwendet wird, den internen nehme > ich nicht so gerne, und zu drei der PIC wird mir dadurch zu langsam, da > das DCF 77 Modul anhand von 100 bzw. 200ms ausgewertet wird! Im Datenblatt ist ein Code-Beispiel für eine RTC mit dem Timer1 angegeben. Timer2 und Timer3 sind auch 16-bit-Timer, der Timer3 ist dem Timer1 fast identisch, Timer2 kannst Du für PWM nehmen. Der PIC wird Dir zu langsam? Das ist ja wohl lachhaft, der PIC läuft bis zu 64 MHz, der hat die meiste Zeit nix zu tun! Und für die PWM hats Du wirklich keinen Ausgang von den 40 Pins mehr frei???
Interner OSC, den Taktausgang für die Ladungspumpe als Inverter nutzen. Der PIC46k20 ist mit seinen 16MIPS schon eher ein Rechenmonster, da habe ich schon deutlich komplexeres umgesetzt.
> Der PIC wird Dir zu langsam? Das ist ja wohl lachhaft, der PIC läuft bis > zu 64 MHz, der hat die meiste Zeit nix zu tun! Falls ich ihn mit dem Uhrenquarz takten möchte so ist das gemeint
> Falls ich ihn mit dem Uhrenquarz takten möchte so ist das gemeint Warum in alles in der Welt willst Du denn das tun? Warum nimmst Du dann einen solchen PIC? Du hast dich da in eine Sackgasse verrannt. Mach mal einen "harten Reset" und fang wieder bei null an.
Ich habe diesen PIC gerade zur Hand >Und für die PWM hats Du wirklich keinen Ausgang von den 40 Pins mehr >frei??? Dazu, ich habe noch fast den halben PORTB frei
Du kannst auch dem Timer 3 mit externem Uhrenquarz betreiben
@ Patrick Schwarz (patrick_s) Hast Du eigentlich schon mal mit diesem PIC gearbeitet, beherrschst Du so ganz banale Basisfunktionen wie LED ein/aus, Blinken (Ausgänge, div. Timer), Eingänge abfragen ??? Interrupts sind dann schon höhere Weihen!
LED einschalten ausschalten kann ich die IO Ports richtig einstellen den AD Wandler bedienen, Interrupts programmieren ich muss zugeben mit PWM habe ich nocht nichts realisiert. Ich bin eine Anfänger und das behersche ich in C und Assembler nur möchte ich C verwenden, da Asemmbler komplex wird!
Natürlich kann ich auch eingänge abfragen und Timre konfigurieren aber bis jetzt habe ich nur mit dem Timer 0 gearbeitet. (Ich bin noch beim Lernen ich bin erst 17)
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.