AVR_Programmierung eines uController

Gast #1262848
Lesenswert?

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
#1263230
Lesenswert?

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.
♨

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren