Forum: Mikrocontroller und Digitale Elektronik 82C54 als PWM-Generator


von 82C54 (Gast)


Lesenswert?

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

von Hp M. (nachtmix)


Lesenswert?

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
von Peter D. (peda)


Lesenswert?

Ich würde auch den 82C54 auslöten und die PWM direkt den AVR machen 
lassen.

von spess53 (Gast)


Lesenswert?

Hi

>Wenn du einen modernen Prozessor wie den Arduino verwendest,...

Seit wann ist denn ein Arduino ein Prozessor?

MfG Spess

von Einer K. (Gast)


Lesenswert?

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.

von Holm T. (Gast)


Lesenswert?

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

von 82C54 (Gast)


Lesenswert?

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.

von 82C54 (Gast)


Lesenswert?

@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?

von hauspapa (Gast)


Lesenswert?

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.

von 82C54 (Gast)


Lesenswert?

:) 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.

von G. O. (aminox86)


Lesenswert?

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.

von Soul E. (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.