Hallo Ich hab gestern in der Schule eine Aufgabenstellung für ein Microcontrollerboard bekommen, programmiert wird im AVR, und weis nicht wie ich anfangen soll? Die Software ist für einen ATmega16 Hier die Aufgabenstellung: Ein uController Programm ist zu erstellen, dass die Frequenz eines ADC-Port des uControllers angelegten Signals misst und über die 7-Segment-Anzeige ausgibt. Alternative erfolgt die Anzeige der Signalamplitude, wenn Port C, Pin4 auf Masse gelegt ist Das Programme ist so ausführlich mit Kommentaren zu versehen, dass ein HTL-Absolvent dieses vollständig verstehen kann. Teil 1 Programmieren sie eine Funktion ausgabe(unsigned int wert) die den inhalt der Variablen werte an der 7-Segment-Anzeige ausgibt. Programmieren Sie eine Funktion readADC(void), die den Wert des ADC einliest und zurückgibt. Teil2 Programmieren Sie die Funktion get_signal_period(int threshold, die den 16-Bit-Timer startet, soblad der ADC-Wert kleiner als -threshold und diesen wieder stoppt, sobald der ADC-Wert kleiner als -threshold ist. Die Funktion gibt den Timer-Inhalt zurück. Konfigurieren sie de Prescaler des Timers dazu so, dass er fmin nicht überläuft und bei fmax mindestens einen Wert von 2 erreicht. Teil3 Programmieren Sie die Funktion get_signal_amplitude(int threshold), die innerhalb einer Periodendauer des Eingangssignals den Maximalwert ermittelt und zurückgibt. Ist Port C, Pin 4 auf Masse gelegt, dann geben Sie die Amplitude an der 7-Segment-Anzeige aus. Teil4 Verknüpfen Sie die erstellten Funktionen, um die Frequenz bzw. die Amplitude des am ADC angelegten Signals an der 7-Segment-Anzeige. Ich hoffe ihr könnt mir helfen MFG Marc
> Das Programme ist so ausführlich mit Kommentaren zu versehen, dass ein > HTL-Absolvent dieses vollständig verstehen kann. oje, die aufgabe ist unlösbar!
Verschoben, da kein Bezug zu "PC-Programmierung" erkennbar.
Du bist nicht, rein zufällig, an derselben HTL wie Thomas Adam (=>Beitrag "Software Akku - Ladeschaltung ATmega")? So, mit welchem Teil der Aufgabe hast du dein Problem? Wo hängts? Eine komplett vorgekaute Lösung für Punkt 1…4 wird dir hier niemand schreiben, bei konkreten Problemen wird dir aber sicher schnell geholfen.
Ja bei der Teilaufgabe 2 henge ich? Wie funktioniert das mit dem ADC wert, mit fmin und fmax?
Marcus Nippi schrieb: > Ja bei der Teilaufgabe 2 henge ich? > > Wie funktioniert das mit dem ADC wert, mit fmin und fmax? ADC-Wert einlesen geht schon? (⇒ http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Analoge_Ein-_und_Ausgabe) dann, fmin und fmax sind vorgegeben, oder? Aus der Frequenz die Periodendauer ausrechnen, der Timer muss dann so schnell laufen, dass er innerhalb der minimalen Periodendauer (ergibt sich aus fmax) mindestens zweimal zählt, in der maximalen Periodendauer (aus fmin) aber nicht öfter als 2^16 mal zuschlägt. Nun aus dem Datenblatt geeignete Timer-Settings suchen. ♨
fmin und fmax sollten wohl von der Aufgabenstellung vorgegeben werden. Ausserdem muss ein "kleiner" durch "groesser" ersetzt werden.
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.