Hallo, Ich will mittels Interrupt die Drehzahl der Lima an der W-Klemme messen. Und was ist mit dem Restprogramm? Lima W-Klemme -> NPN -> Interrupt PIN Bei jedem LOW wird nun ein zähler ein hochgezählt. Alle 2 sek das ganze dann auf Upm umgerechnet. Nun wird ja bei jedem Interrupt das Hauptprogramm unterbrochen. Das wären bei 1000 Upm also 1000 mal in der Minute. Wo ist da nun noch zeit für I2C oder weitere Messungen, ADC usw. Ich kann mir das einfach nicht vorstellen wie schnell der uC das berechnet. Wie kann man da noch Timings einhalten. Es geht um einen ATMega 128 mit 12Mhz Quarz.
Nicht per Pin-Change Interrupt. Einfach auf einen Zählereingang, das macht die Hardware alles für dich. Du musst dann nur per Timer den Zähler nach der Torzeit abfragen, das geht dann per Interrupt. Timing für ASM: Tabelle im Datenblatt im Anhang Befehle.
Hi >Es geht um einen ATMega 128 mit 12Mhz Quarz. Immer noch dein unseliger Bordcomputer? Beitrag "Projekt: Bordcomputer" So wie ich das in den etlichen letzten Beiträgen von dir gelesen habe, bekommst du eigentlich nicht wirklich etwas selbst in die Reihe. Such dir ein anderes Hobby. MfG Spess
Tobias N. schrieb: > Nun wird ja bei jedem Interrupt das Hauptprogramm unterbrochen. Das > wären bei 1000 Upm also 1000 mal in der Minute. > > Wo ist da nun noch zeit für I2C oder weitere Messungen, ADC usw. > > Ich kann mir das einfach nicht vorstellen wie schnell der uC das > berechnet. In dieser besagten Minute hat der µC ganze 720 Millionen Takte zeit etwas zu berechnen; da stört ein kleiner Interrupt überhaupt nicht
Also wenn ein Interrupt dann ein Takt ist dann könnte der millionen upm zählen und diese dann noch berechnen!?
Kenne das Auto nicht, aber eine Riemenscheibenübersetzung von 1:2
Motor:Lima
dürfte recht üblich sein.
Max Drehzahlen (ca. 14.000) der Lima werden selten erreicht.
Werte um 10.000 dürfen auf der Dosenbahn zu erwarten sein.
Da die Lima etliche Pole hat, dürfte das die Frequenz nochmal ca. ver 6
fachen.
*ohne Gewähr, die 6 sind geschätzt*
(10.000*6)/60 = 1000Hz
12.000.000/1000 = 12.000
12.000 Takte zwischen den Interrupts
Das ist so viel auch nicht.
Auch kann es sich zwischendurch als notwendig erweisen die Interrupts ab
zu schalten.
>Einfach auf einen Zählereingang...
Das würde ich auch vorschlagen.
Spart Ressourchen
Vergisst keine Ereignisse, wenn Interrupts kurzzeitig gesperrt.
(überläufe erkennbar)
Ulrich F. schrieb: > 12.000 Takte zwischen den Interrupts > Das ist so viel auch nicht. > Auch kann es sich zwischendurch als notwendig erweisen die Interrupts ab > zu schalten. Ohne es näher zu begründen, gehen mir diese Aussagen gegen den Strich. Ein Beispielprogramm mit einem ATmega88 Beitrag "einfache Drehzahlmessung mit ATmega88" deckt den Bereich 0,3rpm - 15Mrpm ab. Es ist auch egal, ob man eine oder 100 Messungen/s macht. Es muß nur minimal eine Periode gemessen werden. Wie in der Schaltung gezeigt, nimmt man ICP1 und als Eingänge die des analog Komparators. Damit kann man auch Signale mit kleinerer Amplitude gut aufbereiten.
m.n. schrieb: > Ohne es näher zu begründen, gehen mir diese Aussagen gegen den Strich. Mir gehen unbegründete Striche auf den Geist! ;-) ;-) ;-) ;-)
Hallo Tobias Das Thema Drehzahlmesser wird wohl nie aufhören hier :-) Ich habe gerade meine Drehzahlmessung fertig gestellt und sie funktioniert recht gut. Damit Du mal ein Gefühl bekommst was ein AVR so alles leisten kann, schreibe ich Dir hier mal alle Funktionen auf, die bei mir laufen. Module 1000 Hz -PID Position Controller für DC Motor -Position Control für Servo (PWM-Ansteuerung) -SPI 3 Sensoren auslesen -TWI 5 Sensoren lesen / schreiben -UART Trace (bis zu 120 Bytes je Millisekunde an PC schicken) Module 100 Hz -Berechnung Drehzahl (0-20000 U/min mit Auflösung 1 U/Min -Berechnung Geschwindigkeit (0-300 km/h mit Auflösung 0,1 km/h) Die Drehzahlimpulse werden dabei über ein PIN Change Interrupt abgefragt weil ich keine Timer für Zählaufgaben frei habe. Ausserdem habe ich ja für Geschwindigkeit auch noch Impulse zu zählen. Trotz dieser Interrupts schafft der Atmel alle seine Aufgaben, ok wenn auch mit 20 Mhz getaktet :-)
Ok, also ist das schon einer der gut was "ab" kann :) Genau so kriege ich nen gefühl was/wieviel er kann. Also mein ATMega128 muss halt noch mit 5 weiteren ATMegas sowie dem Display per i2c reden. Und von dem Farbtouch TFT hat der schon viel zu tun. Dann wäre es vll. doch sinniger einen mega8 ans i2c zu hängen und den die Drehzahlmessung machen lassen. Denn ausser dem Display und den 5 AVRs muss er auch noch ne SD-Karte lesen, einen vs1053b füttern, einen si4735 steuern und dann noch 41 I/O s behandeln. Achso und 5 ADCs auswerten.
:
Bearbeitet durch User
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.