Ahoi, ich habe hier eine Platine die ich gerne per reverse-engineering wieder zum leben erwecken würde. Diese ist bestückt mit einem 82C54 Timerbaustein und erzeugt mittels diesem 2 separat steuerbare PWM-Signale mit 190Hz Frequenz. Ich kenne nur die Hardwarebeschaltung des Bausteins, nicht aber die Programmierung die die PWM erzeugt. Verschaltung: 8MHZ Oszillator an Clk0/1/2, Gate0 = High, Out0 geht auf Gate1 und Gate2 Ich habe mir daher einen 82C54 besorgt und diesen entsprechend testweise an nen Arduino UNO beschaltet, so wie auf der Platine die ich später zum laufen bringen will. Ich erzeuge nun mittels Counter 0 und Modus 3 (2 geht auch) ein periodisches 190Hz-Signal aus den 8MHz Input und dieses dient den beiden anderen Countern als Gatesignal. Soweit so gut. Jetzt kriege ich es aber nicht hin Counter 1 oder 2 ein PWM-Signal zu entlocken, egal welchen Modus ich verwende (ich vermutete Modus 1 würde sich anbieten). Kann mir irgendwer sagen welcher Modus für Counter 1/2 anwendbar ist und sicher PWM erzeugt? 82C54-Datenblatt: https://www.intersil.com/content/dam/Intersil/documents/82c5/82c54.pdf
82C54 schrieb: > Ich habe mir daher einen 82C54 besorgt und diesen entsprechend testweise > an nen Arduino UNO beschaltet Wenn du einen modernen Prozessor wie den Arduino verwendest, brauchst du für so niedrige Frequenzen den 8254 wahrscheinlich gar nicht mehr. Überlege dir, wie du mit dem Arduino das gewünschte Signal erzeugen kannst und orientiere dich dabei nicht daran, wie man das mit dem 8254 zusammengerödelt hat.
:
Bearbeitet durch User
Hi
>Wenn du einen modernen Prozessor wie den Arduino verwendest,...
Seit wann ist denn ein Arduino ein Prozessor?
MfG Spess
spess53 schrieb: > Seit wann ist denn ein Arduino ein Prozessor? Der 82C54 ist für den Anschluss an µP entworfen worden. Nicht für den Anschluss an µC. µC enthalten meist/immer selber Timer µP eher nicht.
Der 8253,8254 und seine CMOS-Inkarnationen sind programmierbare Timerschaltkreise die aus Intels Peripheriebaukasten zum 8080, 8085 und 8086 System stammen. Die Platine kann nicht ohne eine CPU, oder zumindest ein Schaltwerk das den Timer programmiert funktionieren. Das Wesentliche fehlt hier also völlig. Es ist völlig nutzlos einen einzelnen IC zu besorgen um damit etwas nachvollziehen zu können da der sich ohne Programmierung einfach tot stellt. Gruß, Holm
Natürlich ist der Arduino in der Lage 2x 16Bit-PWM selbst zu erzeugen, aber dann müsste ich die vorliegende Platine entsprechend verändern. Das habe ich nicht vor, da es dann andere Komplikationen gibt die zu beachten sind und ich es mit dem 82C54 schaffen will.
@Holm: Ich programmiere den 82C54 mittels Arduino über den 8Bit-Parallelbus und die erstellung der 190Hz mittels Modus 3/2 im Counter 1 funktionierte auch auf Anhieb. Allerdings bringe ich es nicht fertig den anderen beiden Countern damit eine im Tastverhältnis einstellbare 190Hz-PWM zu entlocken. Vielleicht habe ich einen Denkfehler und der 82C54 muss ständig per Interrupt von außen getriggert werden um PWM zu erzeugen und schafft dies nicht selbstständig mit der genannten Verschaltung?
Mit Modus 1 sollte sich schon erreichen lassen was du vorhast. Der Timer ist retriggerbar. Das Ausgangssignal sollte invertiert sein, aber das macht ja nichts. Solange alles richtig initialisiert ist und der PWM Zähler kleinere Zahlen zu fressen bekommt als der Zähler fürs dutycicle sollte das schon funktionieren. Man hat sich heute an mehr Komfort gewöhnt aber gehen sollte das.
:) Hab es jetzt doch hingekriegt mit Modus 1 für Counter 1 und 2. Ich hatte einen Programmierfehler: A0 und A1 waren fehlerhaft gesetzt beim beschreiben des ControlWord-Registers, diese hätten zum einstellen aller Counter auf jeweils 1 stehen bleiben müssen, ich hatte sie aber auf 01 und 10 gesetzt.
82C54 schrieb: > Kann mir irgendwer sagen welcher Modus für Counter 1/2 > anwendbar ist und sicher PWM erzeugt? Die einzelnen Zähler bieten schon einige Betriebsarten, 'echte' PWM ist allerdings nicht dabei. Trotzdem scheint es mir möglich, mit den beiden übrigen Zählern nach folgendem Prinzip ein PWM-Signal zu bilden: Ein Zähler erzeugt im Modus2 Impulse, die der PWM-Frequenz entsprechen. Diese Impulse triggern den zweiten Zähler, der im Modus1 während seiner Ablaufzeit den Low-Zustand, für die restliche Zeit bis zum nächsten Triggerimpuls den High-Zustand des PWM-Signals ausgibt. Ggf muss an der Polarität des Triggerpulses gedreht werden.
G. O. schrieb: > Trotzdem scheint es mir möglich, mit den beiden übrigen Zählern nach > folgendem Prinzip ein PWM-Signal zu bilden: Möglich sein muss es, denn die Maschine, die der TO zu reanimieren (und nicht durch einen Neukauf mit Arduino zu substituieren) gedenkt tut ja im funktionierenden Zustand genau dieses. > Ein Zähler erzeugt im Modus2 Impulse, die der PWM-Frequenz entsprechen. > Diese Impulse triggern den zweiten Zähler, der im Modus1 während seiner > Ablaufzeit den Low-Zustand, für die restliche Zeit bis zum nächsten > Triggerimpuls den High-Zustand des PWM-Signals ausgibt. Ggf muss an der > Polarität des Triggerpulses gedreht werden. So wird es umgesetzt sein. Nach diesem Prinzip funktioniert auch die PWM-Funktion aktueller Mikrocontroller. Ein Mastertimer gibt den Takt vor, und die Slaves zählen dann die Pulsbreite aus.
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.