www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie lese ich eine Frequenz beim Atmel mega32 ein?


Autor: Katrin Pausi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Bei unsere Diplomarbeit haben wir folgendes Problem. Wir wissen nicht,
wie wir eine Frequenz beim Atmel mega32 einlesen sollen. Wir haben
bisher nur geschafft,dass wir einen Port auf 5V legen. Nun stellt sich
die Frage, wie wir dieses Problem bewältigen sollen, da wir im Internet
leider nichts passendes dazu finden. Wir programmieren in C und leider
finden wir nur Bsp. für Assembler, die uns auch nicht weiter helfen.


Die Frequenz liegt im Bereich 0-120 kHz!

Hoff, uns kann jemand weiter helfen! Wäre toll!

mfg
Kati

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wird am einfachsten über den ICP (Input Capture) gemacht. Wenn der
Timer 1 richtig initalisiert wird, passiert folgendes: der Inhalt der
Timerregister (High und Lowbyte) landen in den Capture-Registern. Ein
Interrupt wird ausgelöst, und dann kann man anhand des
Oszillatortaktes, des Timervorteilers und (Mapfile) die Verweilzeit
bzw. Ein- und Aussprung der Interruptroutine die Frequenz errechnen.
Bei 0-120 KHz muß evtl. auch noch der Timerüberlauf abgefragt werden.
So in etwa geht's.
MW

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daß Du nichts gefunden hast überrascht mich. Es gibt mehrere Lösungen,
hier ein Link:

http://www.mino-elektronik.de/fmeter/fm_software.htm

Autor: Katrin Pausi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hilfe, aber wir haben nur einen ICP Port und wir müssen
aber 3 Frequenzen einlesen!

mfg kati

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Hilfen können nur so gut sein wie die Beschreibungen!!!
MW

Autor: Katrin Pausi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und das Programm ist leider nicht für AVR, so wie bei dem Link! Würd das
aber gehn, wenn wir 3 Frequenzen haben, dass wir 2 über Timer1/ Timer0
einlesen und einen über ICP?

Mfg

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie ist so ein oszillierendes Signal aufgebaut?
Es besitzt eine fallende und eine steigende Flanke, die sich
abwechseln. Bei der nächsten Flanke kommt schon die nächste Periode.
Also kann man zwischen 2 Flanken die Periodendauer messen.
Dann bildet man den Kehrwert, und erhält die Frequenz.
Problematisch sind da nur die niedrigen Frequenzen. (Wie will man 1Hz
oder 0,00001Hz messen?)


(Bei uns war das Stoff Anfang Hauptstudium bei den Maschinbauern und
Freinwerktechnik/Mechatronikern im Elektronik-Labor...)

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
man könnte auch einen Frequenzzähler (Rohde&Schwarz bspw.) an die
serielle Schnittstelle anschliessen und ihn über diese steuern...

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
""Und das Programm ist leider nicht für AVR, so wie bei dem Link!

Ist der Mega32 kein AVR ? Es tut mir leid, aber wenn Dir der Link nicht
hilft, wird es wohl auch kein anderer schaffen.

Autor: Katrin Pausi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An michael:
Wieso bist du so unfreundlich? Es ist nur für den AT90S2313 und nicht
für einen mega32 und da wir uns damit noch nicht so gut auskennen,
müssen wir erst selber mal schaun, wie wir das Problem am besten lösen.
Außerdem ist es nicht einfach ein fertig programmiertes Programm zu
lesen. Wir studieren eh schon seit stunden das Datenblatt über Timer.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut, vielleicht bin ich unfreundlich.
Aber mehr, als die C-Quelle für einen AVR - ob 2313 oder Mega32 -
angeliefert zu bekommen, kannst Du nicht erwarten. Und bei der
Erledigung von 'Hausarbeiten' wird Dir hier vermutlich nicht viel
Entgegenkommen gezeigt. Aber ich lasse mich auch vom Gegenteil
überzeugen.

Autor: Katrin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo, aber das ist keine hausaufgabe. nur weil du vl meinst, dass du
dich da so super toll auskennst, freut mich das für dich. aber es kein
grund mich vl zu beschimpfen. es gibt nun mal leute die sich nicht so
gut auskennen, aber damit wirst du wohl oder übel leben müssen.
aber wir werden das auch ohne deine hilfe schaffen. vl nicht heute,
aber dann halt nächste woche. so blöd ist mein diplomarbeitsgruppe auch
nicht!

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
müsst ihr das ganze in software lösen oder ist auch weitere externe
hardware erlaubt?

Autor: Katrin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist eigentlich recht egal wie wir dies lösen.

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann schau dir mal das an. durch erweiterung sollten sich da locker 3
frequenzen messen lassen (über enable leitungen umschalten)

http://www.myplace.nu/avr/countermeasures/index.htm

Autor: Katrin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, könnte mir weiter helfen ;-)

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Die Frequenz liegt im Bereich 0-120 kHz!"


Das geht schonmal garnicht !

Für 0Hz must Du nämlich unendlich lange messen.

Gib also irgendwas realistisches an.

Und dann sag erstmal, wie schnell die Messungen sein müssen und wie
genau (in % und in Digits).

Dann erst kann man überlegen, wie es gemacht werden könnte.


Für die C-Programmierung ist allerdings besser ein ATMega8 zu
empfehlen, da ein ATTiny2313 recht schnell am Anschlag ist (nur 1024
Befehle).


Peter

Autor: Katrin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay, i muss korrigieren. die frequenz liegt zwischen 50-120khz!
der abstand der messung sollte sekunden genau sein.
aber wir haben schon eine lösung für unser problem. danke trotzdem!

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also 50kHz ist ja doch schon sehr weit weg von 0Hz.


Trotzdem ist noch die nötige Genauigkeit wichtig, um die Software
überhaupt anfangen zu können.

Es ist schon ein  erheblicher Unterschied, ob 120,0000kHz von
120,0001kHz unterschieden werden sollen oder nur, obs 50 oder 120kHz
sind.


Die Lösung ist umso einfacher, je besser man überhaupt erstmal die
Aufgabe definiert.


Peter

Autor: luchs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meine meinung

die fragensteller haben sich noch keinen kopf gemacht, weil mehrere
crossposting mit dem selben thema aufgekommen sind soetwas macht man
nicht.

diplom hiest in unseren breitengraden  leistung pro zeiteinheit
deswegen auch eine zeitbegrenzung

und gennerell gilt  studium (lat.) sich bemühen   und nicht wie manager
andere bemühen

nimms nicht für ungut aber neeneeee

mfg

toni

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, und dann fragt sie sich, wiso sie in allen Foren in denen sie
gepostet hat so "unfreundlich" wie sie es selber nennt, behandelt
wird...

Autor: werner Hoch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Analog-Comparator des ATmega32 kann auch als Quelle für den Timer
dienen.
Als Eingänge für den Analog-Comparator können neben den 2 normalen
Analogcomparatoreingängen auch alle Analogports verwendet werden.

Mit einem ATmega können also ohne Zusatzbeschaltung 9 Frequenzen
gemessen werden.

obiges ist aus meiner Erinnerung also bitte alles nochmal selbst im
Datenblatt nachlesen.

MfG Werner

Autor: Katrin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Hilfe! werd den vorschlag weiter leiten. bin heut zu
einem anderen themenbereich eingeteilt worden. also liegt das einlesen
der frequenz nicht mehr in meinem bereich.

mfg
kati

Autor: Dominik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Benedikt & luchs
ihr brauchts net blöd mauln, wenn ihr schon so net fähig seid zu
helfen. aufspielen allein bringt euch nix. würd mi da eher saublöd
vorkommen!aber i find euch beide nur zum auslachen!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"...wenn ihr schon so net fähig seid zu helfen."

die sind schon fähig zu helfen, aber eben nicht fähig in Deinen Kopf zu
schauen !!!

Wer nicht weiß, daß man 0Hz nicht messen kann und daß es einen großen
Unterschied macht, ob man 50Hz oder 50kHz messen muß, der sollte nicht
andere auslachen sondern sich schämen, weil er bisher alle Vorlesungen
völlig umsonst besucht hat.


Und über die benötigte Genauigkeit weiß hier immer noch keiner
Bescheid.

Dir würde man warscheinlich eine Personenwaage andrehen können, die auf
0,001g genau ist (kostet eben nur schlappe 10.000€) und ein
Fieberthermometer, welches auf 10°C genau ist.

Genauigkeitsbetrachtungen gehören zu den absoluten Grundlagen jeglicher
Messung.


Peter

Autor: luchs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ahja

also meiner einer hat sehr zügig in dem anderen forum geantwortet dort
is dann blos nie was zurückgekommen und was hats gebracht eine
beschöftigung von völkerstämmen  alles nur heise luft weils jemand
nicht erwarten kann   das ist nett gesagt   absolute scheiße
 viele arbeiten nebenbei und wollen helfen und machen das auch
zudem wurden nur halbfertige aufgabenstellungen angeben was es nicht
leichter macht.
und mein eindruck bleibt bestehen, das die hier ohne große vorbereitung
gefragt haben und das sollte zu erwarten sein.
oder wieso weiß man den sonst nicht das ein mega ... zur avr typenreihe
gehört
steht doch ganz oben im datenblatt ..... .

so und wer von uns beiden hat jetzt blöd gemault ??

Autor: Werner Hoch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mich verzählt.
Neben den 8 Analog-Eingängen und dem Analog-Comparator kann immer noch
der ICP-Pin verwendet werden.
Insgesamt also 10 Pins und nicht 9.
MfG Werner

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.