AT89C2051 und PWM

OP #317671
Lesenswert?

Hallo,

ich habe mal das Internet unsicher gemacht aber nicht zu diesem Thema
gefunden deswegen wende ich mich an euch.
Hat jemand schon mal mit dem AT89C2051 eine PWM programmiert?
Kann derjenige oder diejenige mir dieses Programm zur verfüngung
stellen?

danke
mfg
Michael
#317672
Lesenswert?

Hallo Michael,

Ich gehe mal davon aus, daß Du in Assembler programmierst.
Du brauchst beide Timer im Mode 2 (Register TL0 ist dann ein
8-Bit-Zähler, der bei Überlauf mit dem Wert vom TH0 Register
nachgeladen wird). Bei Timer0 bleibt TH0, d.h. der Timer0 verursacht
alle 256µs einen Interrupt (bei 12 Mhz). Im Timer0 Interrupt wird dann
ein Ausgangspin  0 gesetzt und Timer1 gestartet. TH1 kann mit einem
bestimmten Wert geladen werden (z.b. 128) und zählt dann von 128 bis
256 und verursacht einen Timer1 Interrupt. In diesem Interrupt wird
dann der Ausgangspin wieder hochgesetzt und Timer1 gestoppt. Das würde
eine Pulsweite von 50% ergeben.
Durch verschiedene Werte für TH1 kann die Pulsweite verändert werden.

Gruß Jack
Gast #317674
Lesenswert?

Was meinst du mit nicht programmieren können? HAst do kein
Programmiergerät ? Warum baust du dir denn keines? Gibts ganz einfache
im Netz.

Zum Oszillator. Häng einfach den Ausgang des Oszillators an XTAL1. Wenn
du einen Quarz verwendest muss halt dieser an XTAL1 und an XTAL2
angehängt werden und jeweils ein Kondensator (ca 33pF) gegen Masse
schalten.
OP #317679
Lesenswert?

Hallo,

helfen lasse ich mir gerne.

Also ich möchte damit mehere LED's ansteuern aber es MUSS so lautet
die Aufgaben stellung PWM sein. Also es steht ein 8 bit siganl zur
verfügung welches ein oder aus ist und das 8 mal. Also sozusagen 8
Schalter. Diese leifern ein +5V signal wenn sie an sind. Wenn sie aus
sind liefern sie natürlich nichts.
An den PWM ausgang des µC kommen dann zwei 1000µF elkos zur Glättung.
Danach kommt dann die LED. Ich weiß das das ganze teuer wird. Es sollen
dadurch 35 LED's angesteuert werden.
Ach ja falls ihr eine anderen µC als den AT89C2051 nehmen würdet der
eventuell mehr als einen PWM Ausgang hat bin ich seher froh wenn ich er
mir sagen tätet.

So ich dachte mir das dann so:
Die 8 schalter kommen an 8 Eingänge des µC.
Der µC liest dies 8 Eingänge und macht daraus das PWM signal.
Die Kondensatoren gläten dieses dann noch ein Bisschen und dann geht es
weiter zur LED.
Das wäre es dann auch.
Ich vermute das das ganze später noch erweitert wird. Das dann stat der
LED ein erstärker hinkommt und dann eine Motor oder Ähnlich antreibt.

mfg
Michael
#317684
Lesenswert?

Ich kann Dir nur ein Beispiel in Bascom-AVR (Basic-Compiler für AVRs)
geben, und das wird Dir wenig nützen,weil Du die Entwicklungsumgebung
nicht kennst/hast. Es hilft nichts, wenn Du den Micro (z.B.ATmega 16)
programmieren willst, mußt Du Dich vorher im Datenblatt schlau machen,
und Dich dann entscheiden ob  Du in Assembler oder in Basic
programmieren willst. Wenn Du schnell was machen willst, würde ich
Dir Bascom-AVR empfehlen, das gibts umsonst.
Gast #317685
Lesenswert?

Steht bei deinen Anforderungen nicht mit welchem Controllertypen du das
machen sollst?

Mit einem AT89C2051 ist das sicherlich zu schaffen... dürfte auch nicht
wirklich schwer sein. Hardware PWM brauchst du dafür halt nicht...
vorausgesetzt du musst nichts anderes mehr machen.

Am Ausgang vom µC solltest du sowieso dann einen Transistor
verwenden... denn 35Leds mag ein µC nicht gerne ;-)

Wieviele LEds sind denn immer miteinander zusammengeschlossen? Also
deine Rechnung mit den 8 Eingängen geht, meiner Meinung nach nicht
auf.. oder meinst du zb, wenn der 1. Eingang auf 0 ist, dann leuchtet
die Led nur zu 50% und wenn der Eingang auf 1 ist, dann ganz?

Erklär das bitte nochmal genau wie du das machen würdest.

PS.: Ich würd wohl nenn PIC nehmen ... oder ganz einfach beim
AT89C2051(oder halt den AT89C4051) bleiben ;-)
OP #317686
Lesenswert?

Hallo

@jack

ich progge nur in basic

@schiaschi

es sind nicht 35 leds an eine sondern es sind dann insgesammt 35 µC
wenn einer nur ein PWM hat.
Das mit den 8 eingängen ist so:
es sind 8 bit also 255 verschiedene stellungen. Also kann die led auch
in 255 helligkeitsstufen leuchten.
so ist da gemeint

ach ja die aufgabenstellung heißt es soll mit PWM sein und so billig
wie möglich.

fmg
micheal
#317687
Lesenswert?

Wenn Du nur Basic kannst, ist der Bascom-Compiler genau das richtige.
Als Mikro nimmst Du dann den ATmega 8. Der 2051 ist zwar nur halb so
teuer, aber damit kannst Du nur einen PWM Ausgang realisieren, beim
ATmega 2, vielleicht sogar 3. Außerdem bräuchtest Du für den 2051
ein Programmiergerät, während der ATmega über die SPI-Schnittstelle
direkt aus Bascom heraus zu programmieren ist. Dazu braucht man nur
4 Verbindungen vom Parallelport des PC zum Mikro und 3 Widerstände.
Gast #317688
Lesenswert?

Also ich muss zugeben.. so ganz verstehe ich deine Aufgabe nicht ;-)..
1Led an einem µC, welches über PWM gesteuert wird. Und das ganze 35
mal?
Das ist eigentlich pure verschwendung des µC. Das ging mit einem
kleineren dann auch.

@Jack: wenn nur 1 Led gesteuert werden soll, dann bringen dir die 3PWM
Ausgänge auch nichts ;-)

Aber drotzdem... ich meine ich finde es ja nett von euch, dass ihr ihm
einen AVR aufbinden wollt, aber solch eine einfache Schaltung sollte
mit Software-PWM doch auch leicht zu realisieren sein. Dabei würde er
sicher mehr lernen als einfach nur so mal das PWM-Register zu laden
;-).

Und wenn er mit nem AT89C2051er das machen muss/soll, dann lasst ihn
doch.
Entschuldigt, dass musst mal gesagt werden. Denn soooo schlecht ist das
ding auch nicht. Also ich kann mir vorstellen, dass man durch
ordenltiches Programmieren sogar 8PWM-Ausgänge (oder vl auch mehr)
realisieren kann. Man muss halt nur etwas kreativer beim programmieren
sein.

Für den AT89C2051er gibts ausserdem auch sehr einfache Programmer über
LPT ;-) Die Bestehen halt dann aus 6 Widerständen und 2 Tranistoren
oder so ;-).. Ausserdem gibts ja die neue Generation dieses µC jetzt
auch mit ISP, wenn ich mich so recht entsinne.

PS.: 8051er sind nicht schlecht, vorallem für den Einstieg sind sie
sehr empfehlenswert.

In diesem Sinne.
OP #317691
Lesenswert?

Hallo,

es ist egal welcher µC es ist.

So es sollen halt so vile wie möglich PWM augänge sein. Also sind das
z.B für eine LED 9 I/O pins 8 für die Eingänge und 1 für PWM.
Mach also für sagen wir 3 LED's am µC 9 I/O x 3 macht dann 27 I/O
pins.

Ich habe gestern nochmal im Reicheltkatalog geschmökert und einen
ATmega 48-20 gefunden. Wie viele PWM ports hat der?

mfg
Michael

PS: schonmal jetzt vielen Dank für eure gedult und mühe.
Gast #317694
Lesenswert?

Schau dir einmal das Datenblatt dazu an... dort gibts sicher ein Kapitel
mit PWM. Und dieses musst du dir einfach durchlesen und danach mit
Bascom einfach die benötigten Register mit den richtigen Werten
setzen.

Warum benutzt du Bascom? und nicht C oder ASM?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren