Hallo! Zuallererst muss ich sagen das für mich PICs und AVRs etwas neues sind, kenne mich da noch nicht so aus... Bevor ich mir die Zähne dran ausbeisse frag ich lieber hier ob mein Problem so lösbar ist. Mein gebraucht gekaufter Tacho (sehr schwierig aufzutreiben) geht leider 9-10% vor. (Elektronische Codierung die sich nicht auf den passenden Wert ändern lässt, sprich der Tacho meint ich hätte ein anderes Getriebe drin) Also, es geht darum das ich ein Rechtecksignal aus dem Getriebe meines Autos bekomme. Das geht bei 0,xy Hz los und geht bis ca 260 Hz, je nach gefahrener Geschwindigkeit. Nun müssten von der gemessenen Frequenz ca 10% abgezogen werden und damit ein Ausgang befeuert werden. Alles was unter 1Hz liegt kann am Ausgang unter den Tisch fallen. Wer fährt schon stundenlang 1km/h... Zuerst wollten wir die Lowphase des Ausgangs länger ziehen, aber da ändert sich ja nur das Tastverhältnis.. Das Tastverhältnis hat keine Auswirkung, nur die Frequenz der >Masseimpulse< ist wichtig. Nun könnte man Interrupts nutzen: -einen am Eingang bei fallender Flanke, nen Zähler starten -ebenso einen am Eingang bei steigender Flanke, Zähler stoppen und die vergangen Takte,also Frequenz ausrechnen. Nun müsste mit dem Ergebnis ein Ausgang beschickt werden. Auch wieder mit einem Zähler.Wenn der aber abläuft löst er ja einen Interrupt aus und das hat zur Folge das die Interrupts bei fallender/steigender Flanke unter den Tisch fallen. (verschieden Frequenzen überschneiden sich irgendwann mal, also während er den einen IR abarbeitet kommt von woanders ein anderer der ingnoriert wird. Wie ist das überhaupt wenn ich einen IR bei fallender Flanke auslösen will, das aber nicht geht weil gerade ein anderer IR bearbeitet wird.. Fällt dem AVR dann nach abarbeitung auf: "Oh da habe ich was übersehen" und löst dann gleich den anderen IR aus? Bis jetzt habe ich zum probieren einen Atmega8 der mit 3,6864 Mhz rennt. Für den Eingang hätte ich den 16bit Zähler genommen. Für den Ausgang, erst recht bei 3,7 Mhz ist ein 8bit Zähler sehr knapp.. Er müsste mehrfach überlaufen und das würde jedes mal das alles andere unterbrechen. Im Prinzip muss meine Anwendung auf zwei Hochzeiten tanzen. Wäre PWM eine alternative? Nur wie ist das beim ändern der Frequenz, gibt es da "Pausen/Sprünge"? Für meine Anwendung wäre wichtig das man das Signal gleichmässig ändern können muss, sonst springt die Tachonadel.. Ist mein Problem so mit einem Atmega8 lösbar? Müsste ich einen 162er nehmen (hat 2 16-bit Zähler) oder bin ich total auf dem Holzweg? Hat jemand eine Idee wie das zu lösen wäre? danke mfg, Steffen
Zuerst mal haben die Interrupts (ATMEL) Prioritäten, nach denen sie ausgelöst werden. Während der Ausführung eines Interruptes wird der globale Interrupt gesperrt, es werden keine weiteren ausgelöst. Wenn während der Ausführung eines INT ein anderer ausgelöst werden würde bleibt dessen INT-Flag gesetzt und der INT wird nach Beenden des 1. ausgeführt, vergessen wird keiner. Falls nun während der Ausführung mehrere INT-Flags anstehen werden diese INTs nach Priorität ausgeführt. Du kannst die Frequenz am Eingang messen, 2 Möglichkeiten: 1. Torzeit und Impulse zählen oder 2. bestimmte Anzahl Impulse zählen und Zeit messen. Die Ausgabe kannst du mit dem Timer-Interrupt machen, indem du mit Output-Compare-INT schaffst und den Wert nach der Eingangsfrequenz berechnest. Dann hättest du am Ausgang wieder eine stabile Frequenz.
PWM ist der falsche Ansatz, die ändert ja das Tastverhältnis. Einen ATtiny2313 oder notfalls nen ATmega8 kann man nehmen. Die Eingangsfrequenz geht auf den Capture-Eingang. Im Capture-Interrupt liest man nun den Wert aus und bildet die Differenz zum vorherigen. Damit hat man nun die Eingangsdauer und multipliziert mit dem Korrekturwert. Für die Ausgabe nimmt man nen "toggle on compare"-Pin. Im Compare-Interrupt wird nun einfach immer der Ausgabewert zum Compare-Register addiert. Der Ausgabewert muß die halbe Periodendauer sein (im Korrekturwert berücksichtigen). Soll die Rechnung in float erfolgen, muß es doch ein ATmega8 sein, da die float Library sehr Codefressend ist (>2kB). Peter
Hallo, Da ich etwas ähnliches brauche häng ich mich hier mal an. Was genau muß ich unter "toggle on compare"-Pin denn verstehen, Google spuckt mir dazu nichts gescheites aus? @Peter, kannst du das anfängerfreundlich formulieren g THX Tommi
So Sorry dass es sein muss aber wir sollten dir das sagen: Ist dir klar, dass wenn du das im Bereich der StVO einbaust und nicht eintragen lässt (was du nicht durchbekommst ohne Gutachten im k€ Bereich) die Betriebserlaubnis erlischt. Damit auch der Versicherungsschutz. Wenn du jetzt gegen einen Bus rammelst und weiß Gott ich wer und was kaputt verletzt tot ist dann kannst du das alles privat Bezahlen. IST DIR DAS KLAR ? Ist egal ob die Tachonadel jetzt mit dem Unfall zu tun hatte oder auch nicht. Manipuliert ist manipuliert! Achja und solltest du auf die Idee kommen (ich will dir ja nicht's unterstellen) das dafür zu verwenden z.B. die Drossel bei so manch neuem Roller / Moped auszutricksen dann würde ich das auch mal schnell wieder vergessen. Bitte sei mir nicht böse aber das sollte dir jemand gesagt haben. Gruß
Hehe, keine Panic hier gibts nicht nur 16jährige Rollerfanatiker ;-) Nein mir gehts um ne Importsache wo von Meilen auf Kilometer umgerüstet werden muß, und das wird abgenommen, sowas gibts schon 100fach. Klar kann man sowas auch fertig kaufen...ich weiß...aber dabei lern ich nichts.
Hi >keine Panic hier gibts nicht nur 16jährige Rollerfanatiker ;-) Mach dir nichts draus. Er muss wohl mit erhobenen Zeigefinger geboren worden sein. >Was genau muß ich unter "toggle on compare"-Pin denn verstehen, Bei AVRs nennt sich das CTC (Clear Timer on Compare Match). Praktisch heisst das, ein Timer hat einen einstellbare Obergrenze. Beim Erreichen dieses Wertes wird ein Pin umgeschaltet und der Timer beginnt wieder von Null. Damit lässt sich an dem Pin eine variable Frequenz erzeugen. MfG Spess
Alle Leute scheinen Controller zu verbauen wie Spaxschrauben :D Das ist mit einem &-Gatter und einem Deziamlzählebaustein doch schnell zusammengetüdelt. Wenn man ein Schmitt-Trigger-&-Gatter hernimmt, macht man damit auch gleich die Signalkonditionierung mit. mfg mf
@spess, vielen Dank für den Hinweis, ich denk das hilft mir schon weiter. @Joachim, sicher ginge es auch so wie du schreibst aber ein Mega8 kostet so gut wie nichts und ist nur ein einziger Baustein, für den man notfalls nichtmal eine Platine braucht. Auch möchte ich mich in Sachen C weiter bilden da sind die AVR eben erste Wahl für mich.
Hi
>aber ein Mega8 kostet so gut wie nichts und ist nur ein einziger Baustein, >für
den man notfalls nichtmal eine Platine braucht.
Bitte unterschätze den Aufwand für einen störungsfreien Betrieb des
Atmega in automotiver Umgebung nicht.
MfG Spess
Ja das war jetzt eher generell gemeint und nicht direkt auf den automoviten Bereich bezogen.
@spess Lass ihn doch machen. Was er wirklich mit der Schaltung manipulieren will weiß eh keiner. Gruß
ist S.Hintsche = Thommi ? falls ja und das hier http://www.kleiber.li/joomla/index.php?option=com_content&view=article&id=134&Itemid=54 etwas für dich ist, kann ich dir den schaltplan und code geben. aber achtung: es ist nicht bord-spannung geschützt etc. und ich habe keine ahnung, wie gut das teil bei deinen tiefen frequenzen läuft; ist halt eines meiner ersten uC-projekte, veraltet und nicht weiter gepflegt - funktioniert aber bei meiner Kawasaki wunderbar :-) mit den schalterchen gibst du auf 1% genau einen faktor ein, welcher dann im EEProm gespeichert wird, d.h. du kannst den faktor jederzeit ändern ohne den PIC neu programmieren zu müssen.
Nein ich bin nicht der Themenersteller, hab mich hier nur reingehangen weil Google mich her führte ;-) Deine Schaltung kommt der Sache verdammt nahe, einzig das ich eine feste Umrechnug Meilen>Kilometer/h benutzen will, dazu evtl. Reifengröße kompensieren aber das kann man ja in einem Faktor machen. Leider hab ich jetzt von PIC´s wirklich keine Ahnung und benutze natürlich auch ein Pollinboard zum beschreiben der AVR´s, somit stünde neue Hardware ins Haus. Muß ich mir überlegen ob sich das lohnt... Zum Thema CTC hab ich jetzt Stunden gegoogelt und auch viel gefunden, dazu das Datenblatt Tiny13 aber so recht weiß ich noch nicht wies geht g bin eben doch auch nach 2 Jahren noch Leihe. Zur Zeit komm ich auch an meine Hardware nicht ran und mein Oszi muß auch erstmal repariert werden...dauert also alles und viel testen kann ich so leider nicht. So long Thommi
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.