Brauche mal euren Rat. Ich muss mit dem o.g. Controller eine Frequenz messen, was ja eigentlich kein Problem darstellen sollte, ABER ich habe beide Timer die der uC hat schon im Gebrauch. Timer 0 läuft als Timer und erzeugt internen Interrupt und Timer 1 läuft als externer Counter für Drehzahlmessung (also auch eine Frequenzmessung). 3. Frequenz wird die Geschwindigkeit, aber wie kann ich nun die messen? Am besten wird es wohl sein, dass ich den Counter 1 multiplexe oder?
Hallo! Das kommt darauf an, welche Frequenzen du so hast, und was der Controller sonst noch so machen muß. Reine Softwarelösungen haben halt immer das Problem, daß sie leicht durch einen Interrupt unterbrochen werden, und dann das Ergebnis nichts mehr ist. Wenn man aber gezielt in einer 'Lücke' messen kann, spricht wenig gegen eine Softwarelösung. Andererseits: was spricht denn gegen multiplexen? servus, Martin
Für eine Lösung wären halt die Parameter interessant. Wenn die Periode vom Timer0 mit dem zu messenden Signal zusammenpasst könntest du das Signal auf einen ext. Interrupt legen, welcher eine Variable incrementiert. Bei jedem Tmr0 overflow liest du die Variable aus und setzt sie wieder auf Null. grüsse leo9
Gegen das multiplexen spricht eigentlich, das ich einen Pin mehr brauche und der (minimale) Hardware aufwand. Pins sind verdammt knapp. Um es zu konkretisieren: Es geht um einen Boardcomputer für meinen Wagen. Ich überwache meine Boardspannung, Lambdawert, Innenraumtemp, Außentemp, Motordrehzahl, Alarmanlagenfeatures usw. Also was Software angeht ist der uC ziemlich ausgelastet. Ich wollte jetzt noch die km/h hinzufügen, also letztendlich Pulse zählen und auf die Zeit beziehen. Den Zeitbezug bekomme ich über Timer0 und Pulse habe ich mit Counter1 gezählt beim DZM. Nehme mal an, dass das multiplexen doch wohl die einfachste und beste Lösung ist?
nein, glaube der mit 3 Timer ist der 89S8252 oder so. wollte auch ursprünglich den nehmen, aber an den 82S52 hatte ich schon da.
Der Unterschied 8051/8052 ist: weitere 128 Byte SRAM und Timer T2. Und T0 kannst Du noch in 2 * 8 Bit aufteilen, damit hast Du also insgesamt 4 Timer/Counter. Peter
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.