Hier ein bischen Code für ein Moodlight mit RGB-Led. Ist zwar nicht wirklich "fertig", aber sicher ein schöner Anfang wenn man mal mit ner RGB-LED spielen will. Der Sourcecode ist hauptsächlich Copy&Paste aus diesem Forum, vorallem der RC5 Code von Peter (Beitrag "Fernbedien RC5 Empfänger") und die HSV->RGB Umrechnung von Benedikt (Beitrag "Re: HSV RGB Led Dimmer, C Code & Video & Doku") Features: * S+V Über Fernbedienung verstellbar * H-Cycle Geschwindigkeit einstellbar * Presets im EEPROM (leider noch nicht online speicherbar) * Debugausgabe über RS232 * 3-Kanal Software-PWM mit variabler Periodendauer (um die PWM im niedrigen Bereich etwas feiner abstufen zu können) * Kalibrierungskurven für die drei Farbkanäle getrennt einstellbar, mit linearer Interpolation zwischen Stützpunkten. Leider ist der Flash mit 2040 Bytes dann schon ein wenig voll, für mehr Funktionalität oder größere Kalibriertabellen müsste man dann z.B. den UART-Code rausnehmen oder kürzen. Schaltplan gibts keinen, ist aber relativ straightforward: 20MHz quarz an den Tiny, LEDs an PB0..PB2 (Über Transistoren, wenns ne größere RGB-LED ist) TSOP1736 IR-Receiver an PD6 anschliessen, dessen Versorgungsspannung sollte man besser über einen LC-Filter etwas bereinigen, die PWM "schmutzt" da etwas.
Hallo, ich brauche Hilfe. Ich habe ein Moodlioght aufgebaut mit Tiny2313 20MHZ. Mit dem Orginal hex File funktioniert auch alles. Nun muss ich die IR Codes ändern , was auch nicht das Problem ist. Neue Codes habe ich schon ermittelt. Das Problem ist nun folgendes : Wenn ich den Orginal Code mit unverändertem Makefile compilieren will, dann funktioniert das zwar ohne Fehler, aber das Hexfile will auf dem Tiny2313 nicht laufen. Ausprobiert habe ich schon die letzten 4 Winavr pakete. Was mich wundert ist, das die erzeugte Hexdatei immer größer ist und zB. moodlight.lss habe ich debug einträge: hier ein Auszug: moodlight.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000892 00000000 00000000 000000b4 2**0 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .data 00000000 00800060 00000892 00000946 2**0 CONTENTS, ALLOC, LOAD, DATA 2 .bss 0000002c 00800060 00800060 00000946 2**0 ALLOC 3 .noinit 00000000 0080008c 0080008c 0000096e 2**0 CONTENTS 4 .eeprom 00000028 00810000 00810000 00000946 2**0 CONTENTS, ALLOC, LOAD, DATA 5 .stab 00000354 00000000 00000000 00000970 2**2 CONTENTS, READONLY, DEBUGGING 6 .stabstr 00000084 00000000 00000000 00000cc4 2**0 CONTENTS, READONLY, DEBUGGING 7 .debug_aranges 00000054 00000000 00000000 00000d48 2**0 CONTENTS, READONLY, DEBUGGING 8 .debug_pubnames 00000242 00000000 00000000 00000d9c 2**0 CONTENTS, READONLY, DEBUGGING 9 .debug_info 00000a54 00000000 00000000 00000fde 2**0 CONTENTS, READONLY, DEBUGGING 10 .debug_abbrev 000003ee 00000000 00000000 00001a32 2**0 CONTENTS, READONLY, DEBUGGING 11 .debug_line 000008a2 00000000 00000000 00001e20 2**0 CONTENTS, READONLY, DEBUGGING 12 .debug_str 000002fb 00000000 00000000 000026c2 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: Im Orginal von Ernst ist das nicht drin. Bin für jeden Tip dankbar. Nur zur Info ich beschäftige mich erst seit kurzem mit atmegas. gruß mr_energy
Hmm, mit dem GCC-4.1.2 komm ich auf 2016 Bytes in .text, die Vorversion hatte noch 2040... was gibt er denn bei dir als Größe nach dem Compilieren an? Wenns wirklich nicht passen will: uart.* im Makefile rausnehmen, und alle Aufrufe von uart_write, uart_hex etc. auskommentieren. /Ernst
Hallo, was wurde denn für eine WINAVR Version benutzt oder war es eine Linux Version? Wenn ich das mit der Flash Größe richtig verstanden habe muss ich es schaffen das die Ausgabe .text nicht mehr als 2048 ist da der tiny2313 ja nur 2kb Flash hat ? Gruß mr_energy Hier sind noch mal Details aus meinem Ergebnis. avr-gcc (GCC) 3.4.5 moodlight.elf : section size addr .text 2194 0 .data 0 8388704 .bss 44 8388704 .noinit 0 8388748 .eeprom 40 8454144 avr-gcc (GCC) 4.1.1 (WinAVR 20070122) moodlight.elf : section size addr .text 2090 0 .bss 44 8388704 .eeprom 40 8454144 .stab 852 0 .stabstr 132 0 .debug_aranges 136 0 .debug_pubnames 578 0 .debug_info 3026 0 .debug_abbrev 1028 0 .debug_line 2627 0 .debug_frame 368 0 .debug_str 781 0 .debug_loc 881 0 Total 12583 avr-gcc (GCC) 4.1.2 (WinAVR 20070525) moodlight.elf : section size addr .text 2094 0 .bss 44 8388704 .eeprom 40 8454144 .stab 864 0 .stabstr 113 0 .debug_aranges 136 0 .debug_pubnames 578 0 .debug_info 3004 0 .debug_abbrev 1028 0 .debug_line 2627 0 .debug_frame 368 0 .debug_str 781 0 .debug_loc 881 0 Total 12558
Was für ein Optimization Schalter verwendest du denn? -O0 bis -O4 oder -Os? Versuche mal -Os
Sieht bei mir z.b. so aus (anderes Projekt) avr-gcc.exe -I"C:\PreampControll\..\lib" -mmcu=atmega162 -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT uart2.o -MF d
Hallo, danke für die Tips. Ich habe es nun hinbekommen. Der Otimierungslevel war immer s. Ich habe den Code für das lesen vom UART auskommentiert, meine neuen IR Codes eingefügt und den Zugriff auf die EEProm Daten geändert. Nun komme ich auf 2004 und alles funktioniert (Philips LCD TV und Lampe steuern). Die RGB Lampe(5 Watt Power LED) reagiert jetzt auf codes für einen VCR. moodlight.elf : section size addr .text 2004 0 .bss 44 8388704 .eeprom 40 8454144 .stab 864 0 .stabstr 113 0 .debug_aranges 136 0 .debug_pubnames 578 0 .debug_info 2777 0 .debug_abbrev 1013 0 .debug_line 2537 0 .debug_frame 368 0 .debug_str 786 0 .debug_loc 903 0 Total 12163 Nochmals Danke für die Tips Nun kann ich das nächste Project mit mega32, LCD,DCF77 einem oder mehreren 1Wire anschlüssen für DS18S20 Sensoren angehen. Die Krönung wäre für mich wenn ich auf eine SD Karte die Messungen speichern könnte. Gruß mr_energy
Hallo, ich versuche schon seit tagen verzweifelt den Code auf einem mega48 zum laufen zu bringen, leider ohne Erfolg. Auf einem tiny2312 funktioniert er wunderbar wenn ich den uart Code auskommentiere, da sonst zu wenig Platz ist. Da ich den uart aber verwenden möchte würde ich den Code gerne auf einem mega48 anpassen. zunächst scheint was mit den fusebits nicht zu stimmen. ich habe einen 20 mhz quarz mit 2x22pf kondensatoren angeschlossen wie im datenblatt beschrieben ist, aber ich kann die fusebits nicht richtig setzen. Bin mir auch gar nicht so sicher, ob das die richtigen Einstellungen für einen externen Quartz sind http://palmavr.sourceforge.net/cgi-bin/fc.cgi?P_PREV=ATmega48&P=ATmega48&V_LOW=FF&V_HIGH=DF&V_EXTENDED=FF&M_LOW_0x3F=0x3F&M_LOW_0x40=&M_LOW_0x80=&M_HIGH_0x07=0x07&M_HIGH_0x08=&M_HIGH_0x10=&M_HIGH_0x20=0x00&M_HIGH_0x40=&M_HIGH_0x80=&M_EXTENDED_0x01=&B_SUT1=P&B_SPIEN=P&B_SUT0=P&O_BITS=Apply+fuse+bits avrdude: safemode: lfuse reads as CF avrdude: safemode: hfuse reads as DF avrdude: safemode: efuse reads as 1 "lfuse" und "hfuse" lassen setzen aber "efuse" nicht. avrdude meldet: "..efuse changed! Was ff, and is now 1..Would you like ..to change back? [y/n]." Wenn ich y auswähle hängt avrdude. Bei Auswahl von n bleibt das "efuse" auf 1. Nun ja, den Uart Code muss ich zunächst auch hier auskommentieren da die Bezeichnungen der Register nicht passen. Falls ich dann im Hauptprogramm TIMSK durch TIMSK0 ersetze kann ich das Programm ohne Fehler kompilieren und flashen, die angeschlossenen LED's leuchten aber nur schwach in einer Farbe... :( Vielleicht kann mir wer bei diesen Problemchen helfen, bin als Anfänger echt aufgeschmissen.
Hallo, erstmal: Vielen Dank für das schöne Projekt. Ich bastel gerade an etwas ähnlichem und würde mir vor allem gerne ein bisschen was bei der IR-Auswertung abgucken. Leider bekomme ich den Code nicht auf einem ATTINY84 zum laufen. Ich habe die Ports entsprechend abgeändert, damit es auf meine Schaltung passt. Leider habe ich nur eine wild flackernde LED. Ich habe keinen externen Quarz zur Verfügung. Was muss ich beachten, wenn ich den Code auf 8Mhz intern laufen lasse? Ich habe mit den Prescalern rumgespielt, aber leider keinen großen Erfolg gehabt. Danke! Hans
Hansi Cardell schrieb: > Leider bekomme ich den Code nicht auf einem ATTINY84 zum laufen. Ich > habe die Ports entsprechend abgeändert, damit es auf meine Schaltung > passt. Leider habe ich nur eine wild flackernde LED. Hmm... Wie Flackerts denn? So als würde der RC5-Code ständig irgendwelche Tastendrücke erkennen, oder so als ob die Soft-PWM viel zu langsam wäre? (1MHz (8MHz mit Clockdiv) statt 20MHz würde die PWM schon deutlich in den Flacker-Bereich bringen) Der Tiny84 hätte genug Hardware-PWMs, evtl. lieber die nehmen.
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.