Forum: Mikrocontroller und Digitale Elektronik Ich kann keine Frequenz zählen :((((


von Alex (Gast)


Lesenswert?

Hallo, Leute!
Kann mir einer das beispielprogramm posten?
Also ich gebe ein signal vom Funktionsgenerator rein, ausgang LCD.
Ich habe schon viel gelesen, doch davon bekomme ich nur kopfschmerzen 
und noch mehr verwirrung!
Danke!
P.S.Habe ein ATmega16

von HenrikJ (Gast)


Lesenswert?

Hmmm... Für den ersten Schuss:

Du vergleichst quasi ob positive Flanken aufgetreten sind.

while(1)
{
readPin = PINC; //PINC abspeichern
readpin &= 0x01; // entsprechende Pins rausmaskieren

if (readpin > oldreadpin)
positiveflanke++;

old_readpin = readpin;
}

Wie du das aufs LCD bekommst, musst selbst wissen. Ggf Tutrorial 
nachlesen.

Schreinbst du eigentlich in C oder asm?

von Stephan (Gast)


Lesenswert?

also, für gewöhnlich beschäftigt man sich erstmal mit dem Thema, benutzt 
hier die Suchfunktion und beginnt zu programmieren und kann dann hier 
auch mal fragen was im Proggi nicht geht.

Deine Frage sieht aus wie "ich habe keinen Bock auf Hasuaufgaben".
Und die wird hier niemand für Dich machen...

Ein Frequenzzähler macht nichts anderes als Impulse zu zählen die in 
einer vorgegebenen Zeit eingehen.

Also nimm einen Timer und starte ihn beim 1 Impuls und stoppe beim 2.
Dann kannst Du über die allg. bekannte Formel die Frequenz aus der Zeit 
im Timer berechnen.

ODER

Starte einen Timer für eine festgelegt Zeit und zähle dabei die 
eingehenden Impulse. Kommt auf gleiche raus, mußt aber nicht umrechnen.

Sollte das auch schon Kopfschmerzen machen, überlege ob das hier das 
richtige Hobby für Dich ist.

von Alex (Gast)


Lesenswert?

ich programmiere in Basic mit Bascom. es kommt immer nur falsches raus.
also ich möchte nicht ganzes programm, nur die paar zeilen.

von Karl H. (kbuchegg)


Lesenswert?

Machen wirs doch anders rum.
Veröffentliche dein Programm und irgendeiner des BASCOM
mächtigen (ich nicht), wird sich darum annehmen und dir sagen
was darin nicht stimmt. Dadurch lernst du auch etwas
dabei.

von Karl H. (kbuchegg)


Lesenswert?

Ansonsten ist (wie immer in der Programmierung) ein Stufenplan
wie oben bereits von HenrikJ angedeutet eine gute Idee.

Verlege dich erst mal aufs Pulse-Zählen.
An einem Eingang hängt statt des Frequenzgen. ein Taster.
Deine Aufgabe ist es jetzt, zu zählen wie oft der Taster
gedrückt wurde. Dazu baust du zb. eine Schleife und holst
jeweils den Wert vom Port der dem Taster entspricht. Den
vergleichst du, so wie HenrikJ es oben angedeutet hat, mit
dem Wert den derselbe Eingang einen Schleifendurchlauf vorher
hatte. Sind beide gleich, dann hat sich nichts getan. Sind
sie aber ungleich, dann wurde der Taster entweder gedrückt
oder losgelassen. Dich interessiert nur der Fall gedrückt.
Das lässt sich aus dem Wert des Tastereingangs eindeutig
bestimmen. Also erhöhst du deinen Zähler um 1 und gibst das
Ergebnis am LCD aus.

Wenn dann der µC brav deine Tastendrücke mitzählt, kannst
du ja mal den Frequenzgenerator statt dem Taster anhängen.
Bei niedrigen Frequenzen solltest du schön sehen können wie
der Zähler immer weiter hochzählt.

Damit kommen wir zum Frequenzzähler.
Ein Frequenzzähler zählt auch nur Pulse(*). Allerdings tut er
das eine bestimmte Zeit lang und gibt dann aus wieviele Pulse
in diesem Zeitraum aufgetreten sind. Umgerechnet auf 1 Sekunde
ergibt das dann die Frequenz ( Wenn in 0.1 Sekunden 10 Pulse
aufgetreten sind, dann treten in 1 Sekunde 100 Pulse auf und
die Frequenz ist 100 Herz). Du wirst dich also damit beschäftigen
müssen, wie du diese Zeitsteuerung hinkriegst (Stichwort: Timer).
Der Rest ist dann wieder leicht: Der Timer löst nach einer
definierten Zeit ein Ereignis aus. Als Reaktion auf das Ereignis
rechnest du die Anzahl der Pulse auf 1 Sekunde um, gibst sie
aus und setzt den Zähler auf 0

Soweit mal im Groben. Bei deinen Studien des Timers wird dir
auch auffallen, dass man das Zählen der Pulse auch in Hardware
machen kann. Aber soweit sind wir noch nicht.

(*) Man kann das ganze auch anders machen. Anstatt zu zählen
wieviele Pulse in einem best. Zeitintervall erfolgen, kann
man auch messen, wieviel Zeit zwischen 2 Pulsen vergeht und
daraus die Frequenz ausrechnen.

von Henrik J. (henrikj)


Lesenswert?

@Karl Heinz

Warst du früher mal Lehrer oder bist es immernoch? Ich finds cool, wie 
ruhig und geduldig du den Leuten hier die Sachen immer und immer wieder 
erklärst. :)

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
Noch kein Account? Hier anmelden.