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
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
Daß Du nichts gefunden hast überrascht mich. Es gibt mehrere Lösungen, hier ein Link: http://www.mino-elektronik.de/fmeter/fm_software.htm
Danke für die Hilfe, aber wir haben nur einen ICP Port und wir müssen aber 3 Frequenzen einlesen! mfg kati
Die Hilfen können nur so gut sein wie die Beschreibungen!!! MW
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
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...)
man könnte auch einen Frequenzzähler (Rohde&Schwarz bspw.) an die serielle Schnittstelle anschliessen und ihn über diese steuern...
""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.
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.
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.
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!
müsst ihr das ganze in software lösen oder ist auch weitere externe hardware erlaubt?
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
"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
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!
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
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
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...
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
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
@ 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!
"...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
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 ??
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
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.