aboutsummaryrefslogtreecommitdiffstats
path: root/README.rst
blob: a05ec8930739e2b92ff7e047cff9ed485243f8bd (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
123
124
125
126
127
128
129
130
131
132
133
134
135
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 via serial bootloader after build
=======================================================

Run the following commands to flash the firmware via serial bootloader to the target microcontroller.

This only works, if there's already a previous version of SimplePWM running on the chip. If the chip is blank, refer to ISP flashing below.

.. code:: sh

	cd firmware
	./flash-usb.sh /dev/ttyUSB0


Flashing the firmware via ISP adapter after build
=================================================

Run the following commands to flash the firmware via ISP (In System Programmer hardware adapter) 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-2021 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