Hiho, ich bin grad relativ stolz und froh, denn mein erstes "eigenes" Projekt ist fertig, bzw funktionsfähig (möchte noch div. sachen implementieren). Es handelt sich um eine AVR Binähruhr. Ich habe zuerst nur die von Markus Lelie nachgebaut (http://www.lelie.de/markus/show.php?thema=15), habe mich aber entschlossen, dass mir div. funktionen fehlen oder mir nicht gefallen. Drum hab ich das mal kurzerhand angepasst. bisher frei schnauze mit eigenem Schaltplan (gezeichnet), ich kann aber auf wunsch gerne Eagle Files erstellen (aber kein Layout, da ich nicht ätze kann ich das noch nicht, ich löte (noch) auf lochraster). Also zuerst wie gesagt, die von Markus Lelie, da hab ich mir dann angeschaut wie das so im einzelnen funktioniert. Nachgebaut hab ichs etwas anders. Ich hab keinen INT0_INT1_RESET_SW, dafür habe ich je einen Taster an die Ports PD0-PD3 geklemmt, je mit einem PullUp Wiederstand (10kOhm). Die LED anordnung habei ch noch angepasst und die Controll LED weggelassen (gefällt mir irgendwie nicht o_O, ich habe an die stelle die selbe gepflanzt wie beim anderen, damit die 3 Gruppen gleich aussehen). Dann habe ich die Software komplett neu geschrieben. Ich stelle den Quelltext hier rein und vorweg: Ich freue mich über kritik, gute und schlechte, über feedback und über hinweise bishin zu vorschlägen, aber bitte bitte bitte...das ist mein erstes projekt, sicherlich wird der ein oder andere beim code die nase rümpfen, das kann er gerne machen, nur bitte keine unpassenden kommentare posten, wie "lern erstmal coden du n00b" oder "so schlechten code hab ich noch nie gesene". kritik OK, aber auf den code achten. Also was bisher gemacht ist: Die Uhrzeit wird angezeigt und läuft mittels Timer weiter. Die LEDs werden per Multiplexing angezeigt Wenn Taster 0 gedrückt (und gehalten wird) kommt man in den Uhrstellmodus, dann sind Taster 1 - 3 je für Stunde, Sekunde und minute, die uhr sollte währenddessen eigentlich stillstehen, tut sie aber nicht, warum weiß ich noch nicht, ich suche noch. Wird nur Taster 2 betätigt, dann kommt man in den Demomode, bisher ist nur ein Demomode eingebaut. Mehrere kommen, aber das ist mir nicht das wichtigste. Was noch kommt: Mehr demomodes :P Spielereien müssen einfach sein Glimmmodus über Taster 2 und 3 einstellbar (wenn setmode nicht gedrückt wird), damit kann man in bestimmten zyklen vom multiplexing die nicht angesteuerten LEDs auch ansteuern, damit sollten sie dann leicht glimmen, ist für nachts vielleicht gut. Was ich an der Hardware noch machen werde: Einen Tag und Nacht modus. Entweder über einen schalter oder über ein Lichtempfindliches bauteil, weiß nur nich wie das heißt (aber mein radiowecker daheim hats um das display zu dimmen wenns dunkel wird). Da soll im prinzip nur zwischen vorwiederständen für die LEDs umgeschaltet werden, wenn es dunkel wird, damit die LEDs nicht so hell sind. So nun viel Spaß mit dem Quellcode und dem hexfile. P.S.: Man kann das hexfile auch auf die uhr von Markus Lelie draufmachen, allerdings fehlen einem dann die schalter und ich weiß nicht wie sich das ohne pullup wiederstand verhällt. MfG
Es gibt lichtabhängige Widerstände, so genannte LDRs.. Wenn du den am µC analog misst, kannst du die Helligkeit rauskriegen ;)
Danke, genau nach sowas hab ich gesucht. wenn ich mich im tutorial nicht verlesen hab ist das mit dem ATMega8 sogar möglich. Sollte doch über den Analog Comparator möglich sein, oder täusche ich mich da? Müsste man halt etwas mit dem LDR spielen, aber sollte gehen
Also folgende Vorschläge: Zur Zeit benutzt du einfach nur einen Timer mit Prescaler. Eine höhere Präzision kann man meißt erreichen indem man zusätzlich zum Quarz noch ein weiteres Uhrenquarz (ich glaube 32khz) nimmt, das seperat zu Overflows je Sekunde führt. Glimmende LEDS? Mich stört Licht nachts eher Umso besser finde ich die Idee mit den Lichtern die Nachts dunkel sind!!! Von sowas habe ich bisher noch nicht gehört. Aber ganz ehrlich, es ist eine UHR, da kann man ja so ziemlich davon ausgehen wann es Nacht ist, wenn die gestellt ist. (Einfach zwischen 22-6 Uhr dimmen?) Das Dimmen der LEDS über einen Vorwiderstand ist unnötiger Aufwand, Stichwort Pulsweitenmodulation. Ist bei LEDS auch viel schöner. In eigener Sache: Was hast du als Gehäuse genommen? Soll ja auch schick aussehen.
Hi, also das gehäuse ist momentan noch in arbeit. Aber ich werde wohl ein Plexiglasgehäuse bauen, da ich noch plexiglas daheim habe. Die LEDs werde ich durch das glas durchstecken (5mm dick), dann mal schaun obs da vielleciht einen schönen effekt gibt. die ecken dann eventuell noch so abschleifen, das das licht "um den ganzen würfel" (oder w4elche form auch immer) reflektiert wird. Ebenso hatte ich mir überlegt einen holzrahmen zu bauen und das ding an die wand zu hängen. Ich habe die taster extra für solche fälle abnehmbar gemacht (braucht man ja nicht dauerhaft, sind auf ner extra platine mit platinensteckverbinder) und die LEDs sind auch auf ner separaten platine. Also bin ich da völlig frei was ich machen will. WEnn ich dir uhr wirklich zwischen 22 und 6 uhr dimmen will, brauch ich auch 4 weitere ausgänge, die dann einen anderen vorwiederstand haben. Damit brauch ich dann 4 weitere Transitoren, etc, ich denke da ist die variante mit einem Schalter besser. Was mir nun auchnoch eingefallen ist, was ich noch machen werde: Einen kleinen wecker integrieren und mit einem piezo dann den weckton erzeugen (wie der aussieht schaumer mal). Auf die Idee mit dem dImmen bin ich btw wirklich durch meinen "normalen" wecker gekommen, der hat ein kleins Lichtempfindliches bauteil, damit stört er nachts nicht wenn man mal draufgucken will (hat dann die perfekte helligkeit) Wo schließe ich denn das Uhrenquarz an? Ich weiß nicht wie das geht, bin noch neu in der µC welt :D
Markus Foitschik schrieb: > WEnn ich dir uhr wirklich zwischen 22 und 6 uhr dimmen will, brauch ich > auch 4 weitere ausgänge, die dann einen anderen vorwiederstand haben. > Damit brauch ich dann 4 weitere Transitoren, etc, ich denke da ist die > variante mit einem Schalter besser. Brauchst du nicht. Die Idee bei PWM ist die LEDs einfach so oft ein und aus zu schalten das das Auge es nicht mehr wahrnimmt. Die Helligkeit laesst sich dann einfach ueber das Verhaeltnis von Ein- zu Ausschaltzeit festlegen. Alles ueber den selben Ausgang am Controller. http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM http://www.mikrocontroller.net/articles/Pulsweitenmodulation http://www.mikrocontroller.net/articles/Soft-PWM
Ah danke, das werd ich mir doch wohl mal anschaun :P. So lernt man immer wieder was dazu :D Ne frage hätt ich noch. Ich seh grade die uhr läuft nicht richtig, also hat schon einen deutlichen unterschied zur uhrzeit auf dem wecker. Wie errechne ich den Timer, damit eine sekunde um ist? Ich weiß leider nichtmehr wie ich auf diese 16 interrupts gekommen bin (in meiner Rechnung kam soweit ich weiß ca 15,6 interrupts raus)? Kann ich da nicht machen in dem ich die Timerdurchläuft auf 100zyklen beschränke? oder wie rechnet man das generell? Und zum PWM: Ein ausschalten tu ich ja jetzt schon ;) Im der mainloop eben. Aber das Hardware PWM scheint ja wegzufallen, da der ATMega8 nur 2 outputs für PWM hat, ich bräuchte aber 4 ;). Naja dann werd ich mir morgen mal das Soft-PWM anschaun, das geb ich mir heute nacht nichtmehr :D
> So lernt man immer wieder was dazu :D Noch was zum selben Thema... > ... vorwiederstand ... PullUp Wiederstand ... wiederstand ... Es sind Widerstände, die dem Stromfluss widerstehen. Sie heißen nicht nur so, weil sie wieder stehen. Das ist sonst fast so, wie wenn ein Heizungsbauer dauernd von einer Umweltspumpe sprechen würde ;-)
Markus Foitschik schrieb: > > Ne frage hätt ich noch. Ich seh grade die uhr läuft nicht richtig, also > hat schon einen deutlichen unterschied zur uhrzeit auf dem wecker. > > Wie errechne ich den Timer, damit eine sekunde um ist? > > Ich weiß leider nichtmehr wie ich auf diese 16 interrupts gekommen bin > (in meiner Rechnung kam soweit ich weiß ca 15,6 interrupts raus)? > > Kann ich da nicht machen in dem ich die Timerdurchläuft auf 100zyklen > beschränke? oder wie rechnet man das generell? http://www.mikrocontroller.net/articles/AVR-Tutorial:_Uhr > > Aber das Hardware PWM scheint ja wegzufallen, da der ATMega8 nur 2 > outputs für PWM hat, ich bräuchte aber 4 ;). Man kann eine PWM auch rein in Software machen.
Und dann könntest du ja noch einen Funkuhrenempfänger einbauen.
dazu muss ich mich erst mehr damit befassen, wie das alles funktioniert ;) wie gesagt bin noch in den anfängen. wenn die binäruhr nu alles drin hat was ich will hab ich vor ein Game of Life auf nem 16x16 LED Board komplett selbst zu entwickeln...sollte ja mit 4 Ports möglich sein...
Hallo, ich wollte mal fragen ob du den Schaltplan online stellst :) wer echt super von dir !!! Die Uhr von den Link habe ich schon gebaut und diese hat bei mir eine Abweichung von 1 Std. am Tag !!! Da ich mit Assembler gar nicht klar komme wollte ich halt deine mal bauen ;) LG Obi
Die Zeitbasis ist doch sicherlich in der Software einstellbar?
ja aber ich habe doch kein Plan von Assembler :( deswegen kann ich das nicht anpassen etc. LG
na ich hab den benutzt den er in seinen Schaltplan eingezeichnet hat 4,0 MHz der iss Falsch ? wenn ja :( LG
Hi
>der iss Falsch ? wenn ja :(
Nach meiner Rechnung, ja.
MfG Spess
(at) Heiko Tolle Antwort Respekt bist einer der alles kann nich wa wenn ich mal Probleme hab werde ich mich sofort bei dir melden !!! (at)all kann man nicht die soft anpassen ? und wenn ja könnte mir da einer helfen ? wer euch sehr Dankbar weil die Uhr auseinander nehmen iss schlecht (iss verbaut) nur der ISP liegt frei ! LG
Hi Der Atmega8 hat auch einen 16-Bit-Timer. Mit Vorteiler 256 und einem Compare-Wert von 0x3D08 kannst du einen Interrupt im Sekundentakt erzeugen. MfG Spess
Obi schrieb: > ja aber ich habe doch kein Plan von Assembler :( Dann lerns. So viel braucht man nicht um eine Uhr hinzubekommen. Ausserdem hast du ja eine Vorlage sprich ein Programm das prinzipiell funktioniert. WEnn du nur an der Uhr interessiert bist, dann kauf dir eine. Ist deutlich einfacher und lernen brauchst du auch nichts (ausser das bischen Chinesisch um sie einzustellen)
(at)Mod Ahh ja alles klar von einen Mod hätte ich mehr erwartet habe selber 2 Boards die ich verwalte aber sowas hab ich da noch nie geschrieben !!! Ich gehe mal davon aus wenn du in Indien Urlaub machst lernst du auch erstmal die Sprache obwohl du englisch kannst oder kaufst du dir ein Dolmetscher ? (at)all Ich danke euch erstmal für eure Hilfe Ich blicke in Assembler nich durch und damit ich mir so ein scheiss von div. Leuten weiter ansehen muss such ich im Netz nach einen anderen Forum wo die Mods. freundlicher sind (auch wenn mutti ihn nicht ran lässt) Sorry LG
Hi >> ja aber ich habe doch kein Plan von Assembler :( >Dann lerns. Es ist aber C. MfG Spess
Obi schrieb: > Ich gehe mal davon aus wenn du in Indien Urlaub machst lernst du auch > erstmal die Sprache obwohl du englisch kannst oder kaufst du dir ein > Dolmetscher ? In Indien kommt man English sehr gut über die Runden. Und wenn mir ein Inder den Weg zeigen will, dann stell ich mich auch nicht hin und lametiere dass ich nicht Indisch kann sondern ich überleg mir vorher wie weit ich mit meinen Sprachkentnissen im Falle eines Falles komme. Und ja, ein paar Brocken der jeweiligen Landessprache der Länder in denen ich bisher war, kann ich immer. Zumindest soviel um einfache Dinge wenigstens dem Prinzip nach verstehen zu können. Entweder du willst etwas selber bauen oder du willst es nicht. Aber wenn du willst, dann musst du dich auch damit beschäftigen. Indem man vorgefertigte Flächen mit Farbe ausmalt, lernt man nicht was es ausmacht ein Bild zu malen.
>(at)all >Ich danke euch erstmal für eure Hilfe >Ich blicke in Assembler nich durch >und damit ich mir so ein scheiss von div. Leuten weiter ansehen muss >such ich im Netz nach einen anderen Forum wo die Mods. freundlicher sind >(auch wenn mutti ihn nicht ran lässt) >Sorry >LG "LG" und dann solch böse Wörter... passt nicht. Mancher ist halt lernresistent.
Spess53 schrieb: > Hi > >>> ja aber ich habe doch kein Plan von Assembler :( > >>Dann lerns. > > Es ist aber C. Er meint den externen Link im ersten Posting. Und weil die Uhr, die er nach diesem Link nachgebaut hat, zu langsam geht, baut er lieber eine 2.te Uhr auf, anstatt * sich die vorhandene Hardware anzusehen und in C selber eine Uhr zu schreiben (sofern es überhaupt stimmt, dass er wenigstens irgendeine Sprache programmieren kann. In seinem Indien Posting hat er wenigstens so etwas anklingen lassen) * soweit Assembler und die Grundlagen zu lernen, dass er den Fehler in der breits gebauten Uhr beheben kann. So schwer ist das nicht. Sorry. Aber dafür hab ich wirklich kein Verständnis. Das das eine oder andere Detail einem nicht so einfach in den Schoss fällt ... geschenkt. Aber alles einfach mit einem kategorischen "Ich kann nicht Assembler" abzuschmettern, ist eine ganz andere Sache. Ich hab mir den Code angesehen. So schwer ist der nicht zu verstehen, wenn man ein wenig programmieren kann (egal in welcher Sprache) und vor allen Dingen seinen AVR zumindest ein bischen kennt.
(at) Spess53 Danke ich habs hin bekommen du hast mir den richtigen denk Anstoß gegeben !!! hab den quelltext nochmal studiert und auf div. seiten gelesen um zu verstehen was welcher befehl in assembler macht und nun hab ich den Wert geändert (15625) und nun läuft sie sync. den denk Anstoß habe ich bekommen als ich das gelesen hab und das mal in ruhe 2 Std.später verinnerlicht hab . " Der Atmega8 hat auch einen 16-Bit-Timer. Mit Vorteiler 256 und einem Compare-Wert von 0x3D08 kannst du einen Interrupt im Sekundentakt erzeugen. " nochmal Big Thx für dein schupser in die richtige Richtung (at)all trotz allen würde ich gern die Uhr von Markus F. bauen und das hat nix damit zu tun das ich die erste Uhr von M.L. erst nicht hin bekommen habe sondern weil ich halt gern noch eine 2te hätte die mehr funktionen hat und an der ich selber was Prog. kann . Mir auch egal ob sich hier wieder einer lustig macht oder so was intelligentes ab lässt wie NERD NOOB etc. Schönes Rest WE
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.