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
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?
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.
ich programmiere in Basic mit Bascom. es kommt immer nur falsches raus. also ich möchte nicht ganzes programm, nur die paar zeilen.
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.
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.
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.