Gast
#4376518
Hallo, ich bin grade an meinem avr Digitale Uhr Projekt und habe einige Fragen zu avr C. Im Anhang der komplette Code fuer meine Uhr zur Zeit. Es ist eine Uhr mit 2mhz Quarz und 6 7-Segment LEDs mit gemeinsamer Anode zur Anzeige. Die Segmente der 7Seganzeige sind jeweils parallel verbunden und mit 7 Transistoren nach GND verbunden. Jedes Segment hat quasi seinen eigenen Transistor und die werden durch die einzelnen uC Pins gesteuert. Die Anzeigetechnik ist Multiplexing, der uC ist ein Attiny2313. Ich hab 2 konkrete Fragen zum avr-C, folgende Situation: 1) Ich wollte Taster per Interrupt einsetzen. Dazu hab ich die GIMSK |= (1<<PCIE); PCMSK |= (1<<PCINT7) | (1<< PCINT6); gesetzt, ebenfalls wurde sei() ausgefuehrt. Sobald diese Register gesetzt waren, war aber ploetzlich jedes Mal beim Betaetigen der Taster eine Resetwirkung des Controllers festzustellen. Die Uhranzeige hat sich immer wieder reseted. Dann hab ich die Loesung ohne Interrupts wie im Anhang verwendet mit der direkten PIN abfrage. 2) Ich wollte die 7Segmentanzeige an und ausmachen wollen per Taster. Also hab ich in meiner Pinabfrage folgenden Code ausprobiert, hier mal als Ausschnitt ausm Kopf zusammengereimt:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
Sobald ich das "an und aus Spiel" auf 2 Taster verteilt habe, hats auch funktioniert. Nur mit einem Taster gings nicht. Ich habs anders geloest in der jetzigen Version, aber es scheint mir ziemlich beknackt zu sein und ich verstehe nicht, warum es nicht funktioniert. Ich vermute es liegt an der Compileroptimierung. Ohne Optimierung gehts aber nicht, Code zu gross um es auf den uC zu laden. 3[die unkonkrete Frage]) Der Code im Anhang funktioniert auf jeden Fall schonmal grob. Die Uhr laeuft und ich kann auch die Uhrzeit einstellen. Womit ich allerdings Probleme hab ist, dass die Uhr abstuerzt, wenn ich die Taster intensiv benutze. Wenn ich zu intensiv die Uhrzeit einstelle, dann passiert es, dass ploetzlich das 7Segmentdisplay nur noch eine 1 anzeigt und nur noch ein Reset weiterhilft. Ebenso verstellt sich manchmal die Zeit, wenn ich das Display an und ausschalte, obwohl der Taster nichts mit der Zeiteinstellung zu tun haben sollte. Das ist Verhalten, was ich nicht verstehe... ich fuerchte, dass da elektronikmaessig Stoerungen sind, die ich nicht begreife. Man muss dazu sagen, dass 82mA Strom fliessen wenns Display an ist und 1,3mA wenns aus ist. Das sind immer ziemliche Spruenge mit dem an und aus machen. Kann es damit zusammmenhaengen? lg Antoni