Hallo Leute, ich habe folgendes Problem, mein AT90USB646 hat zwar einen 16Mhz Systemtakt anliegen aber der Takt wird durch das Fusebit CHKDIV8 auf 2Mhz reduziert. Wenn ich das richtig im Datenblatt verstanden habe, ist das für die USB Kommunikation notwendig. Also darf ich den Systemtakt für die Timer nicht auf 16Mhz erhöhen, weil ich dann nicht mehr über USB kommunizieren kann richtig? Die Drehzahlmessung sollte einen Bereich zwischen 50 und 30000 U/min. abdecken mit einer Auflösung von 1 rpm. Was gibt es hier für Möglichkeiten mit diesen Controller? Ich denke die Variante der Periodendauermessung ist sowieso die einzige genaue Variante oder? Denn mit der Pulszählvariante habe ich unten herum eine zu hohe Auflösung. Für hilfreiche Antworten und Tipps wäre ich wirklich sehr dankbar. Gruß Dennis
Bei 30000 U/min hast du 500 U/sec, das sollte doch auch bei 2MHz noch machbar sein, das auszuwerten. Da hast du dann 4000 Takte zeit zu rechnen zwischen den einzelnen Umdrehungen.
Kilpikonna schrieb: > Bei 30000 U/min hast du 500 U/sec, das sollte doch auch bei 2MHz noch > machbar sein, das auszuwerten. Da hast du dann 4000 Takte zeit zu > rechnen zwischen den einzelnen Umdrehungen. Naja also bei 30.000 Umdrehungen sind es 2000µs und als bsp. bei 29999 Umdrehungen sind es 2000,07µs Der Controller kann aber nur alle 0,5µs messen... also gehen ca. 5 Umdrehungen in den Bereich flöten.... und das ist für z.B. eine Zündanlage blöd...
Dennis P. schrieb: > Wenn ich das richtig im Datenblatt verstanden habe, ist das für die USB > Kommunikation notwendig. Falsch verstanden :-) Für USB lässt sich der Taktteiler aus dem Systemtakt heraus extra einstellen (PLLCSR), du benötigst aber eine 2er-Potenz in MHz.
Dennis P. schrieb: > Also darf ich den Systemtakt für die Timer nicht auf 16Mhz erhöhen, weil > ich dann nicht mehr über USB kommunizieren kann richtig? Wär ja absurd einen USB-fähigen µc zu bauen der bis 16 MHz taktbar ist, aber nur mit 2 MHz laufen darf wenn man USB nutzt...
Hmmmm zum Glück habe ich das dann diesmal falsch verstanden ;-) d.h. für mich im Klartext ich kann den CHKDIV8 herausnehmen und auf 16Mhz laufen lassen? Dazu muss ich dann PLLCSR anpassen?
Dennis P. schrieb: > Ich denke die Variante der Periodendauermessung ist sowieso die einzige > genaue Variante oder? Denn mit der Pulszählvariante habe ich unten herum > eine zu hohe Auflösung. ??? Mit der Pulszählvariante hast du bei vielen Pulsen und/oder entsprechend langer Torzeitdauer eine hohe Auflösung und auch Genauigkeit (bei entsprechend genauer Torzeit). Bei niedriger Pulszahl (niedrige Frequenz bräuchte man für entsprechende Genauigkeit eine hohe Torzeit was oft nicht praktikabel oder erwünscht ist. Also misst man dort die Pulszeit. Was wann eine höhere Auflösung liefert darfst du dir selbst berechnen, Ausgangswerte sind Pulsfreqenz, max Torzeit, bzw max. Refreshdauer der Anzeige und Timerfrequenz.
Dennis P. schrieb: > Die Drehzahlmessung sollte einen Bereich zwischen 50 und 30000 U/min. > abdecken mit einer Auflösung von 1 rpm. Kein Problem: Beitrag "einfache Drehzahlmessung mit ATmega88"
Dennis P. schrieb: > d.h. für mich im Klartext ich kann den CHKDIV8 herausnehmen und auf > 16Mhz laufen lassen? > > Dazu muss ich dann PLLCSR anpassen? ja.
Udo Schmitt schrieb: > Also misst man dort die Pulszeit. Sorry wollte "die Periodendauer" schreiben.
Okay erstmal vielen Dank an alle, ich fasse kurz zusammen als erstes nehme ich das FuseBit CHKDIV8 heraus,... passe dann dieses Register PLLCSR an... (hoffentlich liegt das nicht in Atmels Bootloader) dann habe ich immerhin 16Mhz zur Verfügung und kann dann mit den Link von m.n. meine Drehzahlmessung realisieren... Nur eine Frage hätte ich noch... wie reduziert man am Besten die Ausgabegeschwindigkeit auf dem LCD-Display? Weil wie erwartet funktionierte der Code hier Beitrag "Input Capture Pin (ICP) auslesen ( Frequenz messen)" nicht gut, weil die Frequenz in der Hauptschleife zu oft auf das Display ausgegeben wurde.... Da kommen dann nur Spezialeffekte heraus auf dem Display. Was meint ihr 3-4 mal in der Sekunde müsste ja reichen oder?
Dennis P. schrieb: > und kann dann mit den Link > von m.n. meine Drehzahlmessung realisieren... Da werden max. drei Messungen/s aufs Display gegeben - kann man schneller und auch langsamer machen "#define MESSZEIT 100" anpassen.
m.n. schrieb: > Dennis P. schrieb: >> und kann dann mit den Link >> von m.n. meine Drehzahlmessung realisieren... > > Da werden max. drei Messungen/s aufs Display gegeben - kann man > schneller und auch langsamer machen "#define MESSZEIT 100" anpassen. Suuuper, habe gerade schon ein Blick auf dein Code geworfen, das sieht erstmalig viel versprechend aus :-) Vielen Dank
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.