summaryrefslogtreecommitdiffstats
path: root/README.rst
blob: f9dfcbc6e8ea31e415eeb859577e13b21682cbd3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
Simple PWM controller
=====================

`https://bues.ch/cgit/simplepwm.git/ <https://bues.ch/cgit/simplepwm.git/>`_

Simplepwm is a small PWM brightness controller for LED lamps.


Microcontroller
===============

Simplepwm supports the following microcontrollers. Not all features are supported on all microcontrollers. See the table for details.

============================  ===========  ============  =========  =========  =========  =========
..                            ATMega-328P  ATMega-88(P)  ATTiny-85  ATTiny-45  ATTiny-25  ATTiny-13
============================  ===========  ============  =========  =========  =========  =========
Number of analog pot. inputs       3            3            1          1          1          1
Number of PWM outputs              3            3            1          1          1          1
Power saving                       x                         x          x
Battery voltage monitoring         x                         x          x
HSL color model                    x            x
Remote control via UART            x            x
Settings in EEPROM                 x            x
Debugging via UART                 x            x
Firmware update via UART           x            x
============================  ===========  ============  =========  =========  =========  =========


Hardware schematics
===================

Schematics for ATMega based setups: `schematics-atmega/simplepwm-atmega.pdf <schematics-atmega/simplepwm-atmega.pdf>`_

Schematics for ATTiny based setups: `schematics-attiny/simplepwm-attiny.pdf <schematics-attiny/simplepwm-attiny.pdf>`_


Prebuilt firmware images
========================

The release archives of simplepwm contain prebuilt `.hex` files for all supported microcontrollers in the `hex` directory. These hex files can be flashed directly to the microcontroller with a any tool of your choice (e.g. Atmel Studio or avrdude).

The corresponding fuse settings can be found in the file `fuses.txt` in the same directory.


Building the firmware
=====================

The firmware build needs the following tool chain:

* Unix-like operating system
* GNU make
* AVR GCC
* AVR Binutils
* avrdude

Run the following commands to build the firmware:

.. code:: sh

	cd firmware
	make DEV=t85

Please specify the target microcontroller using the DEV variable as shown above.

Valid values are:

===============  ===========
Microcontroller  make option
===============  ===========
ATTiny 13        `DEV=t13`
ATTiny 25        `DEV=t25`
ATTiny 45        `DEV=t45`
ATTiny 85        `DEV=t85`
ATMega 88        `DEV=m88`
ATMega 88P       `DEV=m88p`
ATMega 328P      `DEV=m328p`
===============  ===========

Additional build options that can be passed to `make`:

===============  ======  ==============  ================================================================
make option      values  default         description
===============  ======  ==============  ================================================================
CONF_PWMLIM      1-100   100             Limit the maximum PWM duty cycle to this percentage.
CONF_PWMINVERT   0-1     0               Invert the PWM output signal(s).
CONF_LOWSPFACT   float   1.0             Correction factor for lower range PWM setpoint.
CONF_ADCINVERT   0-1     0               Invert the ADC input signal(s).
CONF_ADCHSL      0-1     depends on DEV  Interpret the ADC input signals as HSL setpoints instead of RGB.
FEAT_HIGHRES     0-1     depends on DEV  Higher resolution in very low PWM setpoint range.
FEAT_BATTERY     0-1     depends on DEV  Battery voltage monitoring
FEAT_POWERSAVE   0-1     depends on DEV  Power saving / deep sleep
FEAT_REMOTE      0-1     depends on DEV  Remote control via UART
FEAT_EEPROM      0-1     depends on DEV  Store settings to EEPROM
FEAT_BOOT        0-1     depends on DEV  Enable bootloader and firmware updating via UART.
===============  ======  ==============  ================================================================


Flashing the firmware after build
=================================

Run the following commands to flash the firmware to the target microcontroller:

.. code:: sh

	cd firmware
	make DEV=t85 print_fuses
	make DEV=t85 write_fuses
	make DEV=t85 write_mem

Or alternatively use any other of the available AVR flashing tools to program the .hex file and fuses.


License
=======

Copyright (c) 2018-2020 Michael Buesch <m@bues.ch>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
bues.ch cgit interface