- LiTime Speicher und Akkus         
Ergebnis 1 bis 10 von 10

Thema: Frequenzzähler bis 20MHz ohne Teiler?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627

    Frequenzzähler bis 20MHz ohne Teiler?

    Anzeige

    Powerstation Test
    Hallo,
    ich hab da so eine Idee und möchte wissen, ob das wohl so umsetzbar ist.

    Ich möchte eine Frequenz bis 20MHz direkt auf den T0 Eingang geben und die Frequenz messen.

    Prinzip:
    Mit T0 eine Variable hochzählen, und nach einer Sekunde den Zählerstand auf einem LCD ausgeben und Zählervariable zurücksetzen.

    Das ganze in BASCOM,
    mit einem AT 89C51ED2 PLCC,
    einem 48MHz Quarz
    und 16*2 LCD

    Ist der µC mit dem 48MHz Quarz schnell genug um 20MHz zu messen und auf dem LCD auszugeben?
    Kann man eventuell auch alle 0,5 Sekunden die Variable auslesen und den Wert dann verdoppeln(also von der µC Geschwindigkeit gesehen)?

    Danke, Tobias

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die AT89C51 µCs sind keine AVR µCs, da wäre ein anderes Forum passend, auch wenn es auch für die familie einen Bascom Compiler gibt.

    Durch den Internen Takt-teiler bem 80C51 sollte bei 48 MHz takt die maximale Frequenz nur takt / 8 sein, also 6 MHz. Die Datenblätter isnd da sehr unübersichtlich, könnte sein dass sogar noch langsamer sein muß.
    Man wird also da nocht um einen Vorteiler herumkommen.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    aha...
    ich habe den AT89C51 im Katalog auf der selben Seite wie die AVR´s gesehen und dachte der gehört dazu...schade

    Kann man den internen Teiler nicht deaktiviren(wie bei den meisten AVR´s)?

    Da muss ich wohl doch das Datenblatt wälzen...dachte das könnte ich mir bei einer "so einfachen" Anwendung sparen

    Tobias

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Um eine Frequenz bis 20MHz richtig zu messen sollte die CPU Faktor >50 schneller sein.
    Ganz abgesehen von von LCD Anzeige nebenbei.

    Solltest Du einen Teiler / 100 z.B. nehmen.

    Gento

  5. #5
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Der At89C51 ist ähnlich wie die original 8051 und hat daher immer einen Teiler :6 oder 12 drin. Die erternen takte dürfen dann auch noch man nicht so schnell sein. Die Einschränkung haben viele µCs. Auch bei den AVRs darf der externe takt höchstens halb so groß wie der µC Takt sein, und dass auch nur bei exakt 50% tastverhältniss, sonst eher 1/3.

    Schneller muß die CPU nicht sein sein, man braucht nur einen Vorteiler (z.B. :256) . So komliziert oder gar teuer ist ein Vorteiler nicht. Einfach ein 8 Bit Binärzähler aus der 74HC... Serie. Wenn man auch niedriege Frequenzen messen will, dann sollte man aber auch die Möglichkeit haben ohne den Teiler zu messen - das geht aber über einen 2 ten Eingang am µC.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    vielen Dank für die Antworten, dann hat es sich mit dem AT89C51 erledigt.
    Ich werde einen externen Teiler nehmen und wie Besserwessi schreibt zusätzlich einen zweiten Eingang für die niedrigen Frequenzen.

    Danke, Tobias

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Noch mal was Grundsätzliches zum Frequenzzähler. Man hat für die Frequenzmessung 3 Möglichkeiten:
    1) Man zählt ganz klassisch fur z.B. 0,5 oder 1 Sekunde. Das ist relativ einfach zu programmieren und nur für höhere Frequenz (ab ca. 10 kHz) wirklich brauchbar, denn die Auflösung ist begrenzt.

    2) Man mißt die Zeit für eine Periode. Das ist etwas schwieriger zu programmieren und so direkt nur gut niedriege Frequenzen (unter etwa 1 kHz)

    3) Man mißt die Periodendauer über mehrere Perioden. Das ist noch etwas schwieriger zu programmieren. Dafür geht das Verfahren gut für mittllere und niedrigr Frequenz. Je nach µC so etwa bis 100 kHz, für höhere Frequenzen braucht man da einen Vorteiler.

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    d.h. es werden idealer weise verschiedene Methoden zum messen genommen?
    Also zuerst wird über eine bestimmte Zeit (möglichst klein, um schnell etwas anzuzeigen) gemessen, und je nach Ergebniss eine andere Messmöglichkeit genommen, um die Messgenauigkeit zu erhöhen.

    Richtig so?

  9. #9
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Man muß nicht die Methode wechseln, aber ggf. den Vorteiler.
    Man kann z.B. erst ohne Vorteiler anfangen die Periodendauer zu messen. Wenn man dabei feststellt, das die Flanken zu schnell kommen, dann schaltet man den Vorteiler dazu. Um zu erkennen das die Flanken zu schnell kommen, braucht es nur ein ganz paar Perioden, was bei einer hoher Frequenz ja sehr schnell geht (z.B. 100 Periode bei 100 kHz oder etwa 1 ms). So habe ich das jedenfalls bei meinem Zähler gelöst.

    Genauer so:
    Für die Periodenmessung wird erstmal die Position der Flanken per ICP bestimmt, und eine gewisse Zeit (ca. 1/5 der angestrebten Messzeit) gemittelt, maximal aber 255 Flanken. Wenn die 255 zu schnell voll sind wird ein Vorteiler (:256 dazugeschaltet) und dann nochmal angefangen. Bei mir ist das zu schnell bei etwas über 300 kHz erreicht, allerdings in ASM. Dann wird etwas gewartet und nur die Zahl der Flanken gezählt (bis ca. 4/5 der normalen Messzeit) und dann für die gleiche Zahl an Flanken wieder die Postion bestimmt. Aus der Differenz kann dann die Periodendauer berechnet werden. Durch das mitteln über viele Flanken hat man schon sehr schnell eine hohe Auflösung und ist nicht so empfindlich auf Störungen (Jitter).

    Mit dem einen Umschalten des Vorteilers geht so eine Messung von etwa 0.1 Hz bis ca. 40 MHz - was der Vorteiler halt mitmacht. Die Auflösung ist über den ganzen Bereich sehr gut. Die Messung über die Periodendauer ist mit der Auswertung mehrerer Flanken immer besser als ein direktes Zählen im µC. Man braucht das andere Verfahren also nicht.

    Wenn man das gleiche in Bascom Programieren will, sollte man die ISRs eventuell auch in ASM schreiben, denn die bestimmen die maximale Frequenz ohne Teiler. Wenn nicht wird man vermutlich ein größeren Teiler brauchen (z.B. :1024). In Bascom hat man immerhin den Vorteil, dass man Fleißkommazahlen hat - in ASM sind lange Zahlen ziehmlich unhandlich.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Hallo Besserwessi,
    vielen Dank für die ausführliche Beschreibung. Ich werde mich am Wochenende mal in die Materie einlesen - also wie ich das in Bascom umgesetzt bekomme.

    vielen Dank, Tobias

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus