hallo ich möchte mit einem ds89c420 einen frequenzzähler realisieren. nun habe ich mir zwei möglichkeiten überlegt: 1. während einer festen zeit von 1s die anliegenden rechteck pulse zählen. das gäbe mir dann direkt die frequenz 2. den internen 16bit timer starten durch eine possitive flanke des rechteck. den timer stoppen durch die nächste possitive flanke des rechtecksignals.der timer wert ergibt mir wiederum die frequenz. ich möchte gerne frequenzen bis ca.25Mhz messen. mir ist klar das ich bei einer frequenz von 25Mhz einen vorteiler gebrauchen muss. ich wollte nur einmal fragen ob jemand von euch schon einmal so etwas programiert hat, und wenn ja, welche variante würded ihr mir empfehlen? weiss jemand vieleicht eine gute seite oder hat ein bsp. wie er das programiert hat? (das ganze will ich in c-programieren) besten dank tobias
www.mino-elektronik.de/fmeter/fm_software.htm und www.mino-elektronik.de/fmeter/fmeterx.htm wenn ich mich nicht vertippt habe.
hallo zusammen danke vielmals. werde das einmal studieren und ausprobieren. gruss tobias
hallo ich habe folgendes problem und habe das auch nicht gerade aus dem bsp. code lesen können. nach einer messung hat mein 16bit timer einen wert den ich lesen möchte. und zwar ein high byte und ein low byte. ich speichere beide byte's als uchar. wie kann ich diese beiden charakter werte in einer ulong variabel zusammensetzten das ich einen 16bit wert habe? oder muss ich das ganz anders anstellen. besten dank tobias
@peter kannst du mir vieleicht nicht kurz dein programm erklären? ich kenne die ganzen register nicht da ich mit einem 8051 arbeite. wie genau läuft bei dir die messung der frequenz ab mit der ganzen interrupt routine? besten dank tobias
Der 2051 ist ein 100% 8051, bloß P0 und P2 fehlen. Für die Messung arbeitet T0 im 2*8bit-Mode, TH0 ist die Zeitbasis, TL0 zählt die geteilte Eingangsfrequenz. Per Interrupt werden beide auf 24Bit erweitert. Im NF-Bereich zählt statt TL der T1 die ungeteilte Frequenz. Angezeigt wird: fx = Quarz * n / m Siehe auch: http://www.specs.de/users/danni/appl/soft/c51/frequenc/index.htm Peter
ich habe es auf diese weise versucht: ich inkrementiere den timer1 16bit mit jeder fallenden flanke am eingang t1 (timer input). die ganze messung lasse ich eine sekunde laufen. und somit habe ich schon die freqeuenz. jetzt habe ich aber folgendes problem: ist die frequenz kleiner als 255Hz funktioniert es, erhöhe ich die frequenz nun bekomme ich ein falsches resultat. vermutlich wird das lsb und msb nicht richtig zusammengesetzt. ich finde jedoch diesen fehler nicht. vieleicht kann mir jemand weiterhelfen. besten dank tobias
"high_byte*0x80+low_byte" kann ja nicht gehen Ein Byte hat 8Bit also *256 oder *0x100 oder <<8 Peter
habe ich gerade auch gesehen. jetzt funktioniert der frequenzzähler. ist aber viel zu ungenau. da ich ja ein internes delay habe das mir die messzeit von 1 sekunde bestimmt. so habe ich eine relativ grosse abweichung je höher die zu messende frequenz. jetzt muss ich mal schauen ob ich deine variante programieren kann. dann sollte dieses problem ja umgehen können. gruss tobias
hallo ich habe das neu programiert. nun habe ich folgendes problem: den timer0 lasse ich zählen durch meine externe (zu messende) frequenz. der timer0 arbeitet im 16bit mode, nun möchte ich immer bei einem entstehenden owerflow einen interrupt auslösen und den merken. der timer1 läuft auch im 16bit mode wird aber durch den internen takt gezählt. aber irgendwo liegt ein fehler beim merken des timerowerflow von timer1 und timer0. oder der timer0/1 interrupt wird gar nicht ausgelöst! kann mir vieleicht jemand helfen wo der fehler liegt? ich benutze einen 8051 compatiblen "ds89c420" besten dank tobias
hallo das mit dem timer owerflow interrupt habe ich gelöst. die messung funktioniert, aber noch zu ungenau. in der berechnung der frequenz habe ich im moment noch einen korrekturfaktor. vieleich kann mir jemand sagen wo dieser fehler passiert. besten dank tobias
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.