www.mikrocontroller.net

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


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: HenrikJ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Alex (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Henrik J. (henrikj)
Datum:

Bewertung
0 lesenswert
nicht 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. :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.