Hallo
Ich hab schon alles ab gegoogelt und mit den beiträgen hier komm ich
teilweiße nicht klar.
Ich noch totaler anfänger.
Hab hier einen M16 mit 8 mhz
und drei leds an Portb.0 - b.2
hab schon etliches versucht mit timern usw. aber bekomme nichts hin.
ich will so einen schönen farbübergang bekommen
nur ich weiß nicht ganz wie man das anstellt
eins hab ich schon geschafft das die leds blinken
und nach einander aus und an gehen
hab hier auch ein paar bücher nur mit denen
hab erst den anfang geschafft und jetzt das mit den leds
da komm ich einfach nicht weiter
hoffe ihr könnt mir das erklären das ich des dann auch versteh
danke schon mal
Ist zwar für ATMEL vieleich kannst du was damit anfangen. Sieht viel
Code aus, liegt aber darann, weil ich noch versucht hatte die Seriele
Schnitstelle zu simuliren, zweks Einstellung der Farwerte
Falls du mit M16 einen Atmel ATmega16 meinst, müsste dir das o.g.
PWM-Tutorial helfen. Für RGB brauchst du jedoch 3 PWM-Kanäle, müsstest
also Timer 1 und Timer 2 für PWM nutzen bzw einen Software-PWM
aufbauen.
O.K. ...HanneS...
Du has ja recht. Ich war wieder schlampig. Aber wenn man die Anlage
öffnet, dann kann man an der inc - Datai erkennen, was ich meine. War
halt müde. Sorry ;-)
@Christof:
Das war eigentlich als Scherz (mit ernstem Hintergrund) gedacht.
Denn den Mega16 sollte man nicht M16 nennen, da es einen
16-Bit-Mikrocontroller mit diesem Namen gibt. Und da ich einmal dabei
war, ist mir eingefallen, dass ATMEL nicht nur AVRs herstellt, sondern
auch 8051er, ARMs und etliches mehr. Nimms also bitte nicht
persönlich...
Bit- & Bytebruch...
...HanneS...
Also als M16 meinte ich den Atmega 16
Ja nach den ganzen links hab ich aber
immer noch nicht ganz verstanden wie man
so ein Software PWM aufbaut.
Also entweder stell ich mich zu blöd
an oder ich brings irgend wie nicht hin
Ist ganz simpel.
Was macht den eine PWM?
Eine PWM ist zunaechst mal ein periodisches Signal.
D.h. alle x Zeiteinheiten beginnt ein neuer Zyklus und das
Signal geht auf High. Nach einer bestimmten Zeitdauer,
die kleiner als die Periodendauer ist, nennen wir sie mal y,
geht das Signal wieder auf low. Und das wars dann auch schon.
Indem du y variierst, kannst du bestimmen, wieviele % der Zeit
von x das Signal auf high ist und wieviele % es auf low ist.
<---y----->
+---------+ +---------+
| | | |
| | | |
-----+ +---------+ +-------
<---------- x ------>
Du realisierst dir das zb. mit einem Timer. Den stellst
du zb. so ein, dass die Zeitdauer x mit, sagen wir mal 1000
Timer Overflows erreicht wird. d.h. du hast innerhalb des
Timer Overflows einen Zaehler mitlaufen, der bei jedem Overflow
um 1 erhoeht wird. Ist er bei 1000 angelangt (der 1000.-te
Overflow ist gerade duerchgekommen), dann setzt du den Zaehler
wieder auf 0.
Damit hast du den Basistakt, der die Zeitdauer x mittels 1000
Timer Overflows festlegt. Jedes mal wenn der Zaehler auf 0
zurückgesetzt wird, schaltest du den Ausgang auf High. Und wenn
der Zaehler einen bestimmten Wert, eben y, erreicht hat, schaltest
du den Ausgang wieder auf Low. Durch Variation von y kannst du
jetzt in diesem Zeittakt den Ausgang nur ganz kurz einschalten
oder auch länger.
Hätt ich gewusst, dass Karl-Heinz antwortet, hätt ich mir meinen Beitrag
sparen können... ;-)
(Und hätte ich Enten gekauft, dann wären die Hühner nicht ersoffen...)
> kannst du bestimmen, wieviele % der Zeit...
Hmmm... Prozente (auf Basis 100) sind was für Menschen. Auf dem AVR
verwende ich gerne "binäre Prozente", also auf Basis 256 oder 128...
Duck & weg...
...Bit- & Bytebruch...
...HanneS...
Achja, einige weitere Beispiele mit Software-PWM findest du auf
www.hanneslux.de/avr/ unter Modellbau in den verschiedenen
Fahrtregler-Projekten.
schön und gut
dein code würde ja
funktionieren wenn ich wüsste wie ich im
avr studio 4
irgend wie will des net
hab die meiste zeit oder hauptsächlich
nur mit dem bascom also basic angefangen
und mit dem assembler hab ich noch gar nix gemacht
sorry
- AVR-Studio von ATMEL downloaden,
- AVR-Studio installieren,
- AVR-Studio aufrufen,
- neues Projekt (im eigenen Ordner) anlegen (Simulator, ATMega8535),
- den Quelltext in das Editorfenster des Projekts kopieren,
- mit F7 speichern und assemblieren,
- im Output-Fenster (unten links) die Meldungen überprüfen,
- wenn fehlerfrei, dann:
- mit Control-F7 Simulator starten,
- mit F11 im Einzelschrittmode das Programm simulieren und versuchen
zu verstehen.
- Im anderen Fenster Datenblatt des ATMega8535 aufrufen und bei
Unklarheiten darin nachschlagen.
...