Hallo, ich bin neu hier und habe mich mal angemeldet um hier und da hilfestellungen für meine schulaufgaben zu erhalten. Hardware : Mikrocontroller Board mit Atmega 16 und extern 8Mhz Quarz, 8 LEDs 4 Taster , LDR Widerstand , Temperatursensor, 6 mal 7 Segmentanzeige und 2 Potis. Problemstellung: Entwickeln Sie ein Verfahren, um die Periodendauer eines Rechtecksignals an Taster 4 zu messen. Verwenden Sie dazu einen Timer, welchen Sie bei einer fallenden Flanke des Signals starten und bei der nächsten fallenden Flanke stoppen. Der Inhalt des Zählregisters ist ein Maß für die Zeit. Ich weiß jetzt aber nicht wie ich das mit dem Timer machen soll bzw. welchen ich nehmen muss. Weiter oben im Programm steht bei mir : #include "delay.h" #include <avr/interrupt.h> #include <avr/io.h> #include <util/delay.h> #define JA 1 #define NEIN 0 // ------------Externe Tacktvorgabe ---------8Mhz Quarz //Geschwindigkeitsteiler auf "1Mhz " volatile unsigned int Counter; ISR( TIMER0_OVF_vect ) // alle 0.000128 Sekunden / 8 Mhz { static uint16_t Counter=0; Counter++; if( Counter == 1000 ) // Zählerschleife 0-1000 { Counter = 0; } } ------------------------------------------------------------- Das brauche ich ja wohl nicht alles ;-)
Habe noch was gefunden, ich denke damit hat es was auf sich ;-) Autor: Ballermann (Gast) Datum: 20.11.2011 20:22 Da musst Du nur einstellen auf was für Flanken (positive Flanke/negative Flanke oder positiver/negativer Pegel) reagieren soll. Dann wird mit einem Bit glaub ich noch der INT0 freigegeben. Mit sei() wird der globale Interrupt freigegeben. Und dann halt noch der "Funktionsaufruf" für den Interrupt mit ISR(Speicheradresse). Headerdatei nicht vergessen. ----------------------------------------------------------------------- Also meine Adresse weiß ich vom taster dann muss ein port am atmega 16 auf eingang geschaltet werden der dieses " Prellende " Signal vom Taster 4 aufnimmt und einen vergleich zum systemtackt herstellen mit passendem teiler um einen zählwert zu erhalten. so habe ich das richtig verstanden ?
Jan Sperling schrieb: > Also meine Adresse weiß ich vom taster dann muss ein port am atmega 16 > auf eingang geschaltet werden der dieses " Prellende " Signal vom Taster > 4 aufnimmt und einen vergleich zum systemtackt herstellen mit passendem > teiler um einen zählwert zu erhalten. so habe ich das richtig verstanden > ? Mann Oh Mann, dein Geschreibsel liest sich vielleicht... Die Aufgabe ist doch trivial, der Lösungsweg steht in der Aufgabenstellung. Timer initialisieren, im Hauptprogramm warten auf fallende Flanke, Timer starten, warten auf steigende Flanke, Timer stoppen und auslesen. In Wirklichkeit sollte man vorm Detektieren der steigenden Flanke eine gewisse Mindestzeit warten um den Taster zu entprellen.
Bis auf Stoppen bei fallender statt steigender Flanke hast du leider recht ... Wer sich mit so trivialen Aufgaben nicht selber beschäftigt, lernt gar nix und kommt deshalb auch nicht ein Stück weiter.
Ach, nun habe ich doch glatt noch den obligatorischen konstruktiven Link vergessen: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
Lutz schrieb: > Bis auf Stoppen bei fallender statt steigender Flanke hast du leider > recht ... wie meinst du das?
> Das brauche ich ja wohl nicht alles ;-) Ein Einzeiler waere gefragter ? >>Lutz schrieb: >> Bis auf Stoppen bei fallender statt steigender Flanke hast du leider >> recht ... >wie meinst du das? Egal. Mach's einfach mal. Sonst wir da nie was. Allenfalls zusammen mit einem klassenkameraden.
troll schrieb: > wie meinst du das? Technisch: Eine Periodendauer ist die Dauer einer vollständige Periode. Also bis die Periode wieder an der "gleichen Stelle" angelangt ist. Wenn also der Begin bei fallender Flanke sein soll, ist die Periode auch erst wieder bei fallender Flanke zu Ende. Wenn man bei steigender Flanke schon aufhört, hat man erst eine halbe Periodendauer hinter sich. Wobei das Rechtecksignal auch nicht weiter beschrieben wurde. Die zweite Hälfte kann ja eine andere Dauer haben als die Erste; man könnte dann noch nicht mal sicher sagen, daß man bei halber Periode auch die halbe Zeit hinter sich hat und somit die Periodendauer berechnen. So z.B. bei einer Rechteck-PWM. Eine Periode muß also nicht zwingend aus zwei gleich langen Hälften bestehen. Und schon gar nicht, wenn sie mechanisch "frei Schnauze" an einem Taster eingegeben wird. "Pädagogisch": Ganz offensichtlich hat der TO nicht den Ansatz einer Ahnung von der Materie (was, wie, warum, Grundlagen Software, Grundlagen Hardware, strukturiertes Vorgehen usw.). Und scheint sich auch nicht damit beschäftigen zu wollen; rotzt da stattdessen so eine "Frage" dahin. Deshalb wird es ihn auch überhaupt nicht weiterbringen, wenn ihm hier jemand bei einer so trivialen Einsteigeraufgabe, welche gut zum Lernen geeignet ist, die fertige Lösung gibt. Hier ist nämlich der Weg das Ziel. Die nächste Frage würde vermutlich sein "und wie bestimme ich die Periodendauer jetzt bei Start mit steigender Flanke?". So kann jeder Lehrer sofort rausfinden, ob der Schüler die Materie verstanden hat oder nur irgendwie an ein Ergebnis gekommen ist. Das AVR-GCC-Tutorial ist über viele Jahre entstanden und wirklich gut zum Lernen geeignet.
Lutz schrieb: > troll schrieb: >> wie meinst du das? > > Technisch:> [...] Argh! Du hast natürlich Recht, ich hatte "bestimmen sie die Dauer des Tastendrucks gelesen". Aber gut, macht die Sache nur unwesentlich komplizierter.
troll schrieb: > ich hatte "bestimmen sie die Dauer des > Tastendrucks" gelesen weil der TO in seinem 2. Beitrag irgendwas von einem Taster erzählt.
Ich finde es ja sehr interessant wie freundlich man in diesem Forum empfangen wird ! die leute kennen einen nicht mal und schon wird man als faul hingestellt. wenn ich meine umstände noch bevor ich nach einen 19 stunden tag in wenigen minuten in mein bett falle erläutern darf. Ich mache Konti schicht 2 tage früh , zwei mittag , zwei nachtschicht und habe 2 tage frei. eigentlich nur 1,5 weil den ersten verschläft man halb ! zusätzlich habe ich 2 mal die woche abendschule von 16.45 uhr bis 21,30 uhr. das bedeutet um 16 uhr losfahren und um 22 uhr zu hause sein oder auf nachtschicht wie es gerade so fällt. in der schule gibt es noch 4 weitere fächer mit genug material an elektrotechnik. ich denke jeder hat seine schwerpunkte und interessen. im prinzip habe ich diese auch am microkontroller doch fehlt mir die zeit für solch weitreichende experimente. ich kann mich nicht nachmittags hinsetzten und stundenlang im tutorial lesen und ausprobieren. ich habe auch noch genug wissenslücken aufgrund der umstände. meine freundin sieht mich auch nur noch 1 mal die woche, nicht gerade förderlich für eine beziehung. ich glaube solche umstände haben das die wenigsten und so lässt sich unglaublich schwierig lernen ! ich möchte doch nur hilfestellungen haben und denkanstöße. ich komme einfach nicht mit den befehlen klar beim programmieren. eine SPS ist da kein problem, man kennt die bausteine und funktionen und weiß wie man diese einsätzt doch hier ist das wie ich es finde sehr schwer ! so gute nacht !
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.