Hallo
Ich stelle Euch ein Programm vor, welches zum Dimmen von LED mittels
zweier Taster oder eines Potentiometers von 47 Kiloohm dient. Dazu
schließt man einen N-Kanal (Logik-Level) Leistungs-Mosfet über 47 Ohm an
PB1 an.
Der Tiny 15 kann durch einen Tiny 25 ersetzt werden, eventuell müssen
dann einige Registernamen vor dem Assemblieren des Programmes geändert
werden.
Ich habe es ausführlich kommentiert.
Hinweis: Ich bin nicht DER Assemblerprogrammierer d.h. es kann sicher
auch anders gelöst werden, aber es funktioniert. ;-)
MfG Paul
Gebt bei Gelegenheit mal Rückmeldung, was ihr damit/daraus gemacht habt.
Denn:
Nichts ist schlimmer,
als ein defekter Dimmer.
Der geht manchmal,
doch nicht immer
und dann brennt das Zimmer!
:-)
MfG Paul
Mein erster Kommentar dazu: Du solltest Dir eine andere Formatierung
angewöhnen. Man kann die Symbole von den Befehlen schwer unterscheiden.
Ein Vorschlag von mir:
1
.include "tn15def.inc"
2
.def temp =r16
3
.def pwm =r17
4
.cseg
5
.org $0000
6
;-------------------------
7
start:
8
ldi temp,0x62
9
ldi pwm,0x00 ; Setze erstmal "pwm" auf 0
10
out TCCR1,temp ; Lade Timerregister, damit PWM stattfindet
11
ldi temp,0x00
12
out OCR1A,temp ; Setze einen Anfangswert in OCR1A
13
;-------------------------
14
Init_ad_wandler:
15
ldi temp,0b00100010 ;8Bit Auflösung,AREF intern, linksbündig, AD Wandler an PB3
16
out admux,temp
17
ldi temp,0b11100011 ;ADC einschalten, freilaufend, Takt=1/4 CPU Takt
18
out adcsr,temp
19
;-------------------------
Schön finde ich, daß Du Symbole nicht nur als Sprungadresse verwendest,
sondern auch für Dokumentation. Man findet sofort die Initialisierung
der Ausgänge.
Ansonsten hättest Du den Potentiometerbetrieb elegant auch mit Hilfe von
Interrupts lösen können. Den Mikrocontroller hättest Du dann schön
schlafen gelegt, während AD-Wandler und Timer für Dich arbeiten.
Funktioniert hat es bei mir Einwandfrei, eine schöne Basis, wenn man
schnell einen PWM-Dimmer benötigt. Ich habe den FET übrigends durch
einen LED-Treiber mit Enable-Eingang ersetzt: TLE4242.
mfg, Stefan.
Ja, da hast Du recht; Deine Art der Formatierung ist übersichtlicher.
Das werde ich mir annehmen. Es freut mich, daß Du den Code nützlich
fandest, weil es mir auch Ansp0rn ist, weiter mit Assembler zu arbeiten.
Normalerweise bin ich Bascom - Fan, aber hier "mußte" ich anders ran,
weil
Bascom bei MC's ohne SRAM keine Variablen anlegen kann. :-(
Schöne Feiertage noch
Paul
Naja, so klein ist der gar nicht. Ist mit jedem ordentlichen
Elektroniklötkolben zu löten. Schwieriger als DIL-Bauteile ist das gar
nicht. Ein Nachteil: das Ding ist ein Linearregler, produziert
entsprechend eine hohe Abwärme.
Dein Ausflug in die Assembler-Welt kann gar nicht schaden. Allerdings
gehört auch der Tiny15 zu den aussterbenden AVRs und wird ersetzt durch
den Tiny25 bzw. Tiny45 und Tiny85. Die sind dann auch wieder mit Bascom
leicht zu programmieren, da sie SRAM besitzen.
mfg, Stefan.
Ich weiß, daß die neueren Typen SRAM haben, weil ich in letzter Zeit wie
ein "armer Irrer" Datenblätter gelesen und mit Übersetzungssoftware das
Wichtigste in's Deutsche gebracht habe. Die Tiny 15 besaß ich noch und
sie haben mich so geärgert (Fusebits waren bei den neuen Chips anders
als im Datenblatt gesetzt Grumpf), daß ich sie unbedingt in Gang
bringen wollte.
Ich werde mir mal ein paar TLE4242 bestellen, das scheint ja damit gut
zu gehen. Die Frage ist bei mir immer: Woher weiß man, was es
überhaupt für Schaltkreise gibt, die einem das Leben leichter machen
können?
MfG Paul
Hallo Leute.
Ich muss jetzt zu diesen Tread auch ein paar Zeilen kritzeln.
Da ich mich erst seit kurzen mit der Thematik AVR abgebe (bin eigentlich
aus der Nachbarwelt 8051) habe ich diesen extrem coolen Code gefunden.
Da ich wie gesagt aus der 8051 Ecke komme, ist das schon einen gewisse
Umstellung auf AVR'S. Wobei ich schon der öffteren mal einen Syntax
error habe. Ziemlich seltsam ist die Handhabung der FUSE-Bits jetzt habe
ich schon einige tiny13+V die mal bekanntschaft mit einen HV-Progger
machen wollen :)
Ich benutze den Code eignetlich um der Programmierung bzw die
Registereinstellungen ein wenig auf die Spur zu kommen. Learning while
doing... Damit der Code auch seinen Zweck erfüllt, treibt er zur Zeit
eine 1Watt Luxor mit Strombegrenrung an einen 7.2V Akku.
Ronnie