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
Ach so, der TLE4242 ist ja ein feines Ding, nur eben so klein, daß alte Männer ihn nicht mehr erkennen können. Grins 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
Wo bekommt man den TLE4242? Ich finde das Teil weder bei Reichelt, C oder Kessler :-( oder ich habe noch Nachwirkungen von Silvester...
Ich habe auch noch keinen Lieferanten gefunden. Im Moment habe ich Logik- Level- Power-Mosfet dran hängen. 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
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.