Hallo, ich stelle kurz mal mein Projekt vor. Ziel ist es eine Art Bordcomputer für ein Auto zu erstellen. Ausgabegerät ist ein 4x20 Zeichen LCD 4bit-Modus, 4 Kanal ADC (PC0-PC3), 2 Tasten(Erste für Bestätigung von Fehlern, Zweite zum Blättern bzw. zum einstellen der Uhr) Das LCD ist an Port D, der ADC an Port C und die Taster an Port B. Die Funktionalität des Computers habe ich soweit fertig. Jetzt möchte ich noch eine Uhr und vll ein Datum, das Datum ist aber zweitrangig. Mir geht es in diesem Thread eher darum das die Uhr exakt ist. Ich habe mir Gedanken gemacht, jedoch habe ich Angst das sich die Uhr durch mein bestehendes Programm "verläuft". Ist diese Kombination überhaupt mit meiner Konfiguration möglich? Eine einzelne Uhr wäre nicht das Problem nur habe ich bedenken im Bezug auf meinen bisherigen Code, die Uhr müsste quasi parallel laufen?!? Systemfrequenz ist momentan auf 4MHZ interner Takt, da ich noch keine exakte Zeit gebraucht habe. Durch die Suche kam ich auf das DCF77... Ich will hier keinen fertigen Code, nur einen kleinen Schubs in die richtige Richtung. Ich bedanke mich schon einmal im voraus! Gruß Andreas
Was für ein Controller? Gibts nen Schaltplan oder Code? Ich würde evtl. zu nem Timer tendieren, der über ein externes Quarz getriggert wird (Wenns nen Almel ist: Uhrenquarz an XTAl1 und XTAL2). gruß tobi
hacker-tobi schrieb: > Was für ein Controller? Gibts nen Schaltplan oder Code? Atmega8. Habe ich das jetzt geraten oder die Überschrift gelesen? Andreas schrieb: > Ziel ist es eine Art Bordcomputer > > für ein Auto zu erstellen. Sowas ähnliches habe ich schon mal gemacht. Allerdings nicht mit dem Atmega8 sondern mit dem 168. Uhrenquarz an Timer2, 8 MHz intern. Alles völlig Problemlos. mfg.
Controller ist ein ATMEL ATMEGA 8, wenn es mit einem anderen besser ginge wäre ich nicht abgeneigt zu wechseln, sollte aber avr sein, damit ich den code übernehmen kann. Gibt keinen Schaltplan, habe es über das STK500 aufgebaut. Ich frage mich nur wie ich die Uhr aufbau ohne, dass diese vom bisherigen Code abhängt, einen Timer muss ich ja auch auswerten, und je nachdem welchen "Umweg" das Programm läuft, komm ich ja nicht immer genau auf den Wechsel nach 60 Sekunden. Meine Denkweise ist doch richtig oder?
Thomas Eckmann schrieb: > Uhrenquarz an Timer2, 8 MHz intern. > > Alles völlig Problemlos. Das mit dem Uhrenquarz und 8 MHZ intern hat mich verwirrt. Ich nutze doch nur eine Quelle?!?
Andreas schrieb: > Meine Denkweise ist doch richtig oder? Nein. Eine Uhr ist ganz einfach. volatile char nS = 0; volatile char nM = 0; volatile char nH = 0; volatile char bClockout = false; ISR(TIMER2_OVF_vect) { bClockout = true; nS++; if (nS == 60) { nS = 0; nM++; if (nM == 60) { nM = 0; nH++; if (nH == 24) nH = 0; } } } Und dann machst du in der main() die Ausgabe der Uhrzeit, damit er nicht ewig in der Interrupt-Routine hängt. mfg.
Hi >Das mit dem Uhrenquarz und 8 MHZ intern hat mich verwirrt. Ich nutze >doch nur eine Quelle?!? Du kannst an TOSC1/2 einen Uhrenquarz anschliessen und Timer2 als RTC benutzen.
Andreas schrieb: > Ich nutze > > doch nur eine Quelle?!? Nein. Timer2 hat einen Asynchron-Mode. Damit läuft der unabhängig vom CPU-Takt. mfg.
Ich finde das Forum so unglaublich hilfreich! Danke schonmal für die Tipps! Ich werde das alles gegen Abend testen! Großes Lob an euch!
Hat noch einer n paar Fakten zum initialisieren? hab zu Hause noch Quarze mit 7,3728 MHZ, muss ich den µC dann nicht auf 16 MHZ intern betreiben? Hab noch was im Kopf das der externe von Timer nur maximal halb so groß sein darf wie der interne?!?! Bin noch auf Arbeit, kann also leider nicht jetzt schon dran arbeiten.
Andreas schrieb: > hab zu Hause noch Quarze mit 7,3728 MHZ, Das geht nicht. Da muss ein 32,768 KHz Quartz dran. mfg.
Thomas Eckmann schrieb: > Andreas schrieb: >> hab zu Hause noch Quarze mit 7,3728 MHZ, > > Das geht nicht. > > Da muss ein 32,768 KHz Quartz dran. > > > mfg. intern muss ich also nicht höher sein?
Und warum schliesst du an dem AVR nicht einen extern Quarz an und stellst einen Internen Timer passend ein? Also keinen internen RC Oszillator sondern direkt einen Quarz anschliessen. Dann programmierst du einen der Timer so das er dir laufend einen Interrupt generiert. In dieser Service Routine zaehlst du deine Uhr dann hoch. Der Rest des Programmes merkt davon nichts.
Andreas schrieb: > hab zu Hause noch Quarze mit 7,3728 MHZ Kann man auch nehmen, dann aber als CPU-Takt. Im Auto sollten die paar mA ja keine Rolle spielen. Der einzige Vorteil des Uhrenquarz wäre, daß im Power Down (nur die Uhr läuft weiter) nur wenige µA fließen. Peter
Nee nee ich besorg mir nen 32,768 KHz Quartz. Mir fällt grad auch auf, dass ich mich noch gar nicht mit beschäftigt habe, dass wenn die Zündung aus ist, alles aus ist aber die Uhr weiter läuft...
Hi >Mir fällt grad auch auf, dass ich mich noch gar nicht mit beschäftigt >habe, dass wenn die Zündung aus ist, alles aus ist aber die Uhr weiter >läuft.. Es gibt auch Dauer-Plus. Oder du nimmst eine batteriegepufferte RTC. MfG Spess
Andreas schrieb: > Mir fällt grad auch auf, dass ich mich noch gar nicht mit beschäftigt > > habe, dass wenn die Zündung aus ist, alles aus ist aber die Uhr weiter > > läuft... Ohne Spannung läuft die natürlich nicht weiter. Aber das Radio hängt meistens auch ständig an +. Und das sollte ja auch nicht allzu weit entfernt sein. Man kann den Atmega dann in den Power-Save-Mode versetzen, dann läuft nur noch der Timer2 mit der Uhr. Das Display mitsamt Beleuchtung schaltet man dann komplett ab. Das Aufwecken ginge dann über die Auswertung der Zündung mit einem Interrupt. Da drängt sich dann wieder der Atmega 88 auf. Bei dem kann man jeden Pin als Interrupt-Quelle verwenden. mfg.
Nimm doch einfach einen externen Uhrenchip. Ein PCF8583 kostet in Einzelstückzahlen unter einem Euro. 32 kHz Quarz dran, Knopfzelle als Backup-Spannungsversorgung, und gut ist. Du bekommst außerdem noch 240 Bytes batteriegepuffertes RAM dazu. Problem gelöst. fchk
fchk schrieb: > Nimm doch einfach einen externen Uhrenchip. Ein PCF8583 kostet in > Einzelstückzahlen unter einem Euro. 32 kHz Quarz dran, Knopfzelle als > Backup-Spannungsversorgung, und gut ist. Du bekommst außerdem noch 240 > Bytes batteriegepuffertes RAM dazu. > > Problem gelöst. > > fchk hab ich schon verbaut, sehr schönes teil. einfach anzusteuern und man muss es nur einmal richtig einstellen. danach kan man wenn der cpu gerade mal zeit hat, das datum bzw. uhrzeit aktualisieren.
Andreas schrieb: > ich noch eine Uhr und vll ein Datum, das Datum ist aber zweitrangig. Mir > geht es in diesem Thread eher darum das die Uhr exakt ist. Genaue Uhren gibt es nicht. Nur mehr oder weniger ungenaue. Die Frage ist also eher, wie ungenau zulässig ist.
fchk schrieb: > Nimm doch einfach einen externen Uhrenchip. Das ist aber nicht einfacher, als einfach den internen Timer zu nehmen. Du mußt extra Hardware dranpappen, Du mußt dessen Schnittstelle und Protokoll programmieren und Du mußt jedesmal die Zeit von dem Chip holen bzw. beim Stellen zu ihm hinschicken. Mit dem Timer brauchst Du nur im Interrupt ein paar Variablen hoch zu zählen und hast dann Sekunden, Minuten, Stunden usw. jederzeit in den Variablen verfügbar. 1/100 Sekunden sind auch kein Problem und Sommerzeit auch nicht. Und den Abgleich kann man auch bequem in Software machen und muß keinen Trimmer drehen. Peter
Peter Dannegger schrieb: > Mit dem Timer brauchst Du nur im Interrupt ein paar Variablen hoch zu > zählen und hast dann Sekunden, Minuten, Stunden usw. jederzeit in den > Variablen verfügbar. > 1/100 Sekunden sind auch kein Problem und Sommerzeit auch nicht. > Und den Abgleich kann man auch bequem in Software machen und muß keinen > Trimmer drehen. Und wenn das Teil aus ist? Der Uhrenchip braucht bloß ein paar uA und tickt dann vor sich hin.
Frank K. schrieb: > Der Uhrenchip braucht bloß ein paar uA und tickt dann vor sich hin. Mehr braucht der Atmega im Sleepmode auch nicht. Und eine Knopfzelle für den Fall der Fälle lässt sich da auch ransetzen. mfg.
Ich merk grad ich muss mich in die Timer und Sleepmode Themen mehr einlesen :) die externe Variante klingt auch gut, aber wenn es intern geht würde ich dies eher vorziehen, somit schließt man schon ein paar mögliche Fehlerquellen aus. Wollte schon fragen wie es ist, weil ich ja auch nen ADC hab und ich glaube gelesen zu haben, dass der auch relativ lastig ist was Verbrauch angeht. Aber das werde ich denke ich unter Sleep Mode lesen.
Hallo, ich hol den Thread mal wieder aus der Versenkung. Ich habe jetzt schon ein paar Funktionen die richtig gut laufen. Ich bin nun dabei, die Bordnetzspannung abzufragen.... aber da stellt sich mir die Frage wie ich das genau anstellen soll... KFZ-Spannung ist ja in dem Bereich von 11-15V und es treten auch Spannungsspitzen auf. Wie kann man denn diese Spannunsgspitzen filtern? Hat doch bestimmt schon mal jemand gemacht! Wäre schon einen kleinen Denkanstoss zu bekommen.
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.