You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1085 lines
67 KiB

1 .file "SoftPWM.cpp"
2 __SP_H__ = 0x3e
3 __SP_L__ = 0x3d
4 __SREG__ = 0x3f
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
9 .text
10 .Ltext0:
134 .global __vector_11
136 __vector_11:
137 .stabd 46,0,0
1:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** /*
2:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @author Brett Hagman <bhagman@wiring.org.co>
3:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @contribution Paul Stoffregen (paul at pjrc dot com)
4:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @url http://wiring.org.co/
5:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @url http://roguerobotics.com/
6:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
7:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @description
8:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | A Software PWM Library
9:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || |
10:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | Written by Brett Hagman
11:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | http://www.roguerobotics.com/
12:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | bhagman@roguerobotics.com, bhagman@wiring.org.co
13:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || |
14:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | A Wiring (and Arduino) Library, for Atmel AVR8 bit series microcontrollers,
15:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | to produce PWM signals on any arbitrary pin.
16:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || |
17:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | It was originally designed for controlling the brightness of LEDs, but
18:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | could be adapted to control servos and other low frequency PWM controlled
19:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | devices as well.
20:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || |
21:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | It uses a single hardware timer (Timer 2) on the Atmel microcontroller to
22:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | generate up to 20 PWM channels (your mileage may vary).
23:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || |
24:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || #
25:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
26:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @license Please see the accompanying LICENSE.txt file for this project.
27:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
28:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @notes
29:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || | Minor modification by Paul Stoffregen to support different timers.
30:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || |
31:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || #
32:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
33:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @name Software PWM Library
34:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @type Library
35:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @target Atmel AVR 8 Bit
36:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
37:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** || @version 1.0.1
38:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ||
39:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** */
40:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
41:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include <avr/io.h>
42:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include <avr/interrupt.h>
43:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include "SoftPWM.h"
44:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include "SoftPWM_timer.h"
45:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
46:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #if defined(WIRING)
47:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include <wiring_private.h>
48:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #elif ARDUINO >= 100
49:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include <Arduino.h>
50:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #else
51:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
52:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #include <Arduino.h>
53:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
54:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #endif
55:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
56:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #if F_CPU
57:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #define SOFTPWM_FREQ 60UL
58:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #define SOFTPWM_OCR (F_CPU/(8UL*256UL*SOFTPWM_FREQ))
59:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #else
60:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // 130 == 60 Hz (on 16 MHz part)
61:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #define SOFTPWM_OCR 130
62:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #endif
63:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
64:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** volatile uint8_t _isr_softcount = 0xff;
65:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t _softpwm_defaultPolarity = SOFTPWM_NORMAL;
66:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
67:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** typedef struct {
68:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // hardware I/O port and pin for this channel
69:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** int8_t pin;
70:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t polarity;
71:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** volatile uint8_t *outport;
72:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t pinmask;
73:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t pwmvalue;
74:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t checkval;
75:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t fadeuprate;
76:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t fadedownrate;
77:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** } softPWMChannel;
78:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
79:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** softPWMChannel _softpwm_channels[SOFTPWM_MAXCHANNELS];
80:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
81:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
82:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // Here is the meat and gravy
83:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #ifdef WIRING
84:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWM_Timer_Interrupt(void)
85:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #else
86:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** ISR(TIMER1_COMPA_vect)
87:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** #endif
88:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
139 .LM0:
140 .LFBB1:
141 0000 1F92 push r1
142 0002 0F92 push r0
143 0004 0FB6 in r0,__SREG__
144 0006 0F92 push r0
145 0008 1124 clr __zero_reg__
146 000a 2F93 push r18
147 000c 3F93 push r19
148 000e 4F93 push r20
149 0010 6F93 push r22
150 0012 7F93 push r23
151 0014 8F93 push r24
152 0016 9F93 push r25
153 0018 AF93 push r26
154 001a BF93 push r27
155 001c EF93 push r30
156 001e FF93 push r31
157 /* prologue: Signal */
158 /* frame size = 0 */
159 /* stack size = 14 */
160 .L__stack_usage = 14
89:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
90:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t i;
91:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** int16_t newvalue;
92:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** int16_t direction;
93:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
94:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (++_isr_softcount == 0)
162 .LM1:
163 0020 8091 0000 lds r24,_isr_softcount
164 0024 8F5F subi r24,lo8(-(1))
165 0026 8093 0000 sts _isr_softcount,r24
166 002a 8823 tst r24
167 002c 01F0 breq .L2
168 .L13:
169 002e E0E0 ldi r30,lo8(_softpwm_channels)
170 0030 F0E0 ldi r31,hi8(_softpwm_channels)
171 0032 00C0 rjmp .L3
172 .L2:
173 0034 E0E0 ldi r30,lo8(_softpwm_channels)
174 0036 F0E0 ldi r31,hi8(_softpwm_channels)
175 .L14:
95:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
96:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // set all channels high - let's start again
97:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // and accept new checkvals
98:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
99:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (_softpwm_channels[i].fadeuprate > 0 || _softpwm_channels[i].fadedownrate > 0) {
177 .LM2:
178 0038 4781 ldd r20,Z+7
179 003a 2581 ldd r18,Z+5
180 003c 4111 cpse r20,__zero_reg__
181 003e 00C0 rjmp .L4
183 .LM3:
184 0040 8085 ldd r24,Z+8
185 0042 8823 tst r24
186 0044 01F0 breq .L5
187 .L4:
100:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // we want to fade to the new value
101:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** direction = _softpwm_channels[i].pwmvalue - _softpwm_channels[i].checkval;
189 .LM4:
190 0046 30E0 ldi r19,0
191 0048 8681 ldd r24,Z+6
192 004a 90E0 ldi r25,0
193 004c B901 movw r22,r18
194 004e 681B sub r22,r24
195 0050 790B sbc r23,r25
102:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
103:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // we will default to jumping to the new value
104:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** newvalue = _softpwm_channels[i].pwmvalue;
105:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
106:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (direction > 0 && _softpwm_channels[i].fadeuprate > 0) {
197 .LM5:
198 0052 1616 cp __zero_reg__,r22
199 0054 1706 cpc __zero_reg__,r23
200 0056 04F4 brge .L6
202 .LM6:
203 0058 4423 tst r20
204 005a 01F0 breq .L5
107:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** newvalue = _softpwm_channels[i].checkval + _softpwm_channels[i].fadeuprate;
206 .LM7:
207 005c 840F add r24,r20
208 005e 911D adc r25,__zero_reg__
209 0060 8217 cp r24,r18
210 0062 9307 cpc r25,r19
211 0064 04F4 brge .L5
212 0066 00C0 rjmp .L32
213 .L6:
108:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (newvalue > _softpwm_channels[i].pwmvalue)
109:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** newvalue = _softpwm_channels[i].pwmvalue;
110:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** } else if (direction < 0 && _softpwm_channels[i].fadedownrate > 0) {
215 .LM8:
216 0068 672B or r22,r23
217 006a 01F0 breq .L5
219 .LM9:
220 006c 4085 ldd r20,Z+8
221 006e 4423 tst r20
222 0070 01F0 breq .L5
111:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** newvalue = _softpwm_channels[i].checkval - _softpwm_channels[i].fadedownrate;
224 .LM10:
225 0072 841B sub r24,r20
226 0074 9109 sbc r25,__zero_reg__
227 0076 2817 cp r18,r24
228 0078 3907 cpc r19,r25
229 007a 04F4 brge .L5
230 .L32:
231 007c 9C01 movw r18,r24
232 .L5:
112:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (newvalue < _softpwm_channels[i].pwmvalue)
113:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** newvalue = _softpwm_channels[i].pwmvalue;
114:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
115:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
116:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].checkval = newvalue;
117:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** } else // just set the channel to the new value
118:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].checkval = _softpwm_channels[i].pwmvalue;
234 .LM11:
235 007e 2683 std Z+6,r18
119:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
120:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // now set the pin high (if not 0)
121:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (_softpwm_channels[i].checkval > 0) // don't set if checkval == 0
237 .LM12:
238 0080 8681 ldd r24,Z+6
239 0082 8823 tst r24
240 0084 01F0 breq .L11
122:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
123:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (_softpwm_channels[i].polarity == SOFTPWM_NORMAL)
242 .LM13:
243 0086 9181 ldd r25,Z+1
244 0088 A281 ldd r26,Z+2
245 008a B381 ldd r27,Z+3
246 008c 8481 ldd r24,Z+4
247 008e 9111 cpse r25,__zero_reg__
248 0090 00C0 rjmp .L12
124:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** *_softpwm_channels[i].outport |= _softpwm_channels[i].pinmask;
250 .LM14:
251 0092 9C91 ld r25,X
252 0094 892B or r24,r25
253 0096 00C0 rjmp .L33
254 .L12:
125:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** else
126:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** *_softpwm_channels[i].outport &= ~(_softpwm_channels[i].pinmask);
256 .LM15:
257 0098 9C91 ld r25,X
258 009a 8095 com r24
259 009c 8923 and r24,r25
260 .L33:
261 009e 8C93 st X,r24
262 .L11:
263 00a0 3996 adiw r30,9
98:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (_softpwm_channels[i].fadeuprate > 0 || _softpwm_channels[i].fadedownrate > 0) {
265 .LM16:
266 00a2 80E0 ldi r24,hi8(_softpwm_channels+180)
267 00a4 E030 cpi r30,lo8(_softpwm_channels+180)
268 00a6 F807 cpc r31,r24
269 00a8 01F4 brne .L14
270 00aa 00C0 rjmp .L13
271 .L3:
127:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
128:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
129:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
130:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
131:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
132:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** for (i = 0; i < SOFTPWM_MAXCHANNELS; i++)
133:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
134:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (_softpwm_channels[i].pin >= 0) // if it's a valid pin
273 .LM17:
274 00ac 8081 ld r24,Z
275 00ae 87FD sbrc r24,7
276 00b0 00C0 rjmp .L15
135:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
136:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (_softpwm_channels[i].checkval == _isr_softcount) // if we have hit the width
278 .LM18:
279 00b2 8091 0000 lds r24,_isr_softcount
280 00b6 9681 ldd r25,Z+6
281 00b8 9813 cpse r25,r24
282 00ba 00C0 rjmp .L15
137:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
138:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // turn off the channel
139:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (_softpwm_channels[i].polarity == SOFTPWM_NORMAL)
284 .LM19:
285 00bc 9181 ldd r25,Z+1
286 00be A281 ldd r26,Z+2
287 00c0 B381 ldd r27,Z+3
288 00c2 8481 ldd r24,Z+4
289 00c4 9111 cpse r25,__zero_reg__
290 00c6 00C0 rjmp .L16
140:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** *_softpwm_channels[i].outport &= ~(_softpwm_channels[i].pinmask);
292 .LM20:
293 00c8 9C91 ld r25,X
294 00ca 8095 com r24
295 00cc 8923 and r24,r25
296 00ce 00C0 rjmp .L34
297 .L16:
141:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** else
142:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** *_softpwm_channels[i].outport |= _softpwm_channels[i].pinmask;
299 .LM21:
300 00d0 9C91 ld r25,X
301 00d2 892B or r24,r25
302 .L34:
303 00d4 8C93 st X,r24
304 .L15:
305 00d6 3996 adiw r30,9
132:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
307 .LM22:
308 00d8 80E0 ldi r24,hi8(_softpwm_channels+180)
309 00da E030 cpi r30,lo8(_softpwm_channels+180)
310 00dc F807 cpc r31,r24
311 00de 01F4 brne .L3
312 /* epilogue start */
143:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
144:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
145:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
146:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
314 .LM23:
315 00e0 FF91 pop r31
316 00e2 EF91 pop r30
317 00e4 BF91 pop r27
318 00e6 AF91 pop r26
319 00e8 9F91 pop r25
320 00ea 8F91 pop r24
321 00ec 7F91 pop r23
322 00ee 6F91 pop r22
323 00f0 4F91 pop r20
324 00f2 3F91 pop r19
325 00f4 2F91 pop r18
326 00f6 0F90 pop r0
327 00f8 0FBE out __SREG__,r0
328 00fa 0F90 pop r0
329 00fc 1F90 pop r1
330 00fe 1895 reti
335 .Lscope1:
337 .stabd 78,0,0
340 .global _Z12SoftPWMBeginh
342 _Z12SoftPWMBeginh:
343 .stabd 46,0,0
147:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
148:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
149:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMBegin(uint8_t defaultPolarity) {
345 .LM24:
346 .LFBB2:
347 /* prologue: function */
348 /* frame size = 0 */
349 /* stack size = 0 */
350 .L__stack_usage = 0
150:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // We can tweak the number of PWM period by changing the prescalar
151:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // and the OCR - we'll default to ck/8 (CS21 set) and OCR=128.
152:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // This gives 1024 cycles between interrupts. And the ISR consumes ~200 cycles, so
153:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // we are looking at about 20 - 30% of CPU time spent in the ISR.
154:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // At these settings on a 16 MHz part, we will get a PWM period of
155:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // approximately 60Hz (~16ms).
156:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
157:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t i;
158:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
159:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //#ifdef WIRING
160:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // Timer2.setMode(0b010); // CTC
161:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // Timer2.setClockSource(CLOCK_PRESCALE_8);
162:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // Timer2.setOCR(CHANNEL_A, SOFTPWM_OCR);
163:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // Timer2.attachInterrupt(INTERRUPT_COMPARE_MATCH_A, SoftPWM_Timer_Interrupt);
164:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //#else
165:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // SOFTPWM_TIMER_INIT(SOFTPWM_OCR);
166:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //#endif
167:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
168:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** cli(); //Disable interrupts while setting registers
352 .LM25:
353 /* #APP */
354 ; 168 "/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp" 1
355 0100 F894 cli
356 ; 0 "" 2
169:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** TCCR1A = 0; // Make sure it is zero
358 .LM26:
359 /* #NOAPP */
360 0102 1092 8000 sts 128,__zero_reg__
170:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** TCCR1B = 0; // Make sure it is zero
362 .LM27:
363 0106 1092 8100 sts 129,__zero_reg__
171:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //TCCR1B = (1 << WGM21); // Configure for CTC mode (Set it; don't OR stuff into it)
172:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** //TCCR1B |= (1 << CS21); // Prescaler @ 1024
173:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** TIMSK1 = (1 << OCIE1A); // Enable interrupt
365 .LM28:
366 010a 92E0 ldi r25,lo8(2)
367 010c 9093 6F00 sts 111,r25
174:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** OCR1A = SOFTPWM_OCR; // compare value = 1 sec (16MHz AVR)
369 .LM29:
370 0110 22E8 ldi r18,lo8(-126)
371 0112 30E0 ldi r19,0
372 0114 3093 8900 sts 136+1,r19
373 0118 2093 8800 sts 136,r18
175:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
176:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** TCCR1B = (1 << CS21); /* start timer (ck/8 prescalar) */ \
375 .LM30:
376 011c 9093 8100 sts 129,r25
177:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** TCCR1A = (1 << WGM21); /* CTC mode */ \
378 .LM31:
379 0120 9093 8000 sts 128,r25
178:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
179:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** sei();
381 .LM32:
382 /* #APP */
383 ; 179 "/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp" 1
384 0124 7894 sei
385 ; 0 "" 2
386 /* #NOAPP */
387 0126 E0E0 ldi r30,lo8(_softpwm_channels)
388 0128 F0E0 ldi r31,hi8(_softpwm_channels)
180:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
181:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
182:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
183:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].pin = -1;
390 .LM33:
391 012a 9FEF ldi r25,lo8(-1)
392 .L37:
394 .LM34:
395 012c 9083 st Z,r25
184:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].polarity = SOFTPWM_NORMAL;
397 .LM35:
398 012e 1182 std Z+1,__zero_reg__
185:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].outport = 0;
400 .LM36:
401 0130 1382 std Z+3,__zero_reg__
402 0132 1282 std Z+2,__zero_reg__
186:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].fadeuprate = 0;
404 .LM37:
405 0134 1782 std Z+7,__zero_reg__
187:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].fadedownrate = 0;
407 .LM38:
408 0136 1086 std Z+8,__zero_reg__
409 0138 3996 adiw r30,9
182:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].pin = -1;
411 .LM39:
412 013a 20E0 ldi r18,hi8(_softpwm_channels+180)
413 013c E030 cpi r30,lo8(_softpwm_channels+180)
414 013e F207 cpc r31,r18
415 0140 01F4 brne .L37
188:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
189:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
190:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_defaultPolarity = defaultPolarity;
417 .LM40:
418 0142 8093 0000 sts _softpwm_defaultPolarity,r24
419 0146 0895 ret
421 .Lscope2:
423 .stabd 78,0,0
427 .global _Z18SoftPWMSetPolarityah
429 _Z18SoftPWMSetPolarityah:
430 .stabd 46,0,0
191:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
192:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
193:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
194:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMSetPolarity(int8_t pin, uint8_t polarity) {
432 .LM41:
433 .LFBB3:
434 /* prologue: function */
435 /* frame size = 0 */
436 /* stack size = 0 */
437 .L__stack_usage = 0
195:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t i;
196:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
197:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (polarity != SOFTPWM_NORMAL)
198:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** polarity = SOFTPWM_INVERTED;
439 .LM42:
440 0148 21E0 ldi r18,lo8(1)
441 014a 6111 cpse r22,__zero_reg__
442 014c 00C0 rjmp .L40
443 014e 20E0 ldi r18,0
444 .L40:
445 0150 E0E0 ldi r30,lo8(_softpwm_channels)
446 0152 F0E0 ldi r31,hi8(_softpwm_channels)
447 0154 94E1 ldi r25,lo8(20)
448 .L44:
199:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
200:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
201:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if ((pin < 0 && _softpwm_channels[i].pin >= 0) || // ALL pins
450 .LM43:
451 0156 3081 ld r19,Z
452 0158 87FF sbrs r24,7
453 015a 00C0 rjmp .L41
455 .LM44:
456 015c 37FF sbrs r19,7
457 015e 00C0 rjmp .L42
458 0160 00C0 rjmp .L43
459 .L41:
202:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** (pin >= 0 && _softpwm_channels[i].pin == pin)) // individual pin
461 .LM45:
462 0162 8313 cpse r24,r19
463 0164 00C0 rjmp .L43
464 .L42:
203:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
204:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].polarity = polarity;
466 .LM46:
467 0166 2183 std Z+1,r18
468 .L43:
469 0168 9150 subi r25,lo8(-(-1))
470 016a 3996 adiw r30,9
200:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if ((pin < 0 && _softpwm_channels[i].pin >= 0) || // ALL pins
472 .LM47:
473 016c 9111 cpse r25,__zero_reg__
474 016e 00C0 rjmp .L44
475 /* epilogue start */
205:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
206:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
207:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
477 .LM48:
478 0170 0895 ret
480 .Lscope3:
482 .stabd 78,0,0
487 .global _Z10SoftPWMSetahh
489 _Z10SoftPWMSetahh:
490 .stabd 46,0,0
208:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
209:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
210:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMSetPercent(int8_t pin, uint8_t percent, uint8_t hardset) {
211:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** SoftPWMSet(pin, ((uint16_t) percent * 255) / 100, hardset);
212:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
213:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
214:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
215:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMSet(int8_t pin, uint8_t value, uint8_t hardset) {
492 .LM49:
493 .LFBB4:
494 0172 CF93 push r28
495 /* prologue: function */
496 /* frame size = 0 */
497 /* stack size = 1 */
498 .L__stack_usage = 1
216:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** int8_t firstfree = -1; // first free index
217:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t i;
218:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
219:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (hardset) {
500 .LM50:
501 0174 4423 tst r20
502 0176 01F0 breq .L47
220:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** SOFTPWM_TIMER_SET(0);
504 .LM51:
505 0178 1092 8500 sts 132+1,__zero_reg__
506 017c 1092 8400 sts 132,__zero_reg__
221:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _isr_softcount = 0xff;
508 .LM52:
509 0180 9FEF ldi r25,lo8(-1)
510 0182 9093 0000 sts _isr_softcount,r25
511 .L47:
512 0186 E0E0 ldi r30,lo8(_softpwm_channels)
513 0188 F0E0 ldi r31,hi8(_softpwm_channels)
215:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** int8_t firstfree = -1; // first free index
515 .LM53:
516 018a 90E0 ldi r25,0
517 018c AFEF ldi r26,lo8(-1)
518 .L55:
222:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
223:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
224:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // If the pin isn't already set, add it
225:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
226:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if ((pin < 0 && _softpwm_channels[i].pin >= 0) || // ALL pins
520 .LM54:
521 018e 2081 ld r18,Z
522 0190 87FF sbrs r24,7
523 0192 00C0 rjmp .L48
525 .LM55:
526 0194 27FF sbrs r18,7
527 0196 00C0 rjmp .L49
528 0198 00C0 rjmp .L72
529 .L48:
227:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** (pin >= 0 && _softpwm_channels[i].pin == pin)) // individual pin
531 .LM56:
532 019a 8217 cp r24,r18
533 019c 01F0 breq .L49
534 .L53:
228:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
229:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // set the pin (and exit, if individual pin)
230:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].pwmvalue = value;
231:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
232:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (pin >= 0) // we've set the individual pin
233:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** return;
234:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
235:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
236:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // get the first free pin if available
237:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (firstfree < 0 && _softpwm_channels[i].pin < 0)
536 .LM57:
537 019e AF3F cpi r26,lo8(-1)
538 01a0 01F4 brne .L52
539 01a2 00C0 rjmp .L73
540 .L49:
230:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
542 .LM58:
543 01a4 6583 std Z+5,r22
232:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** return;
545 .LM59:
546 01a6 87FD sbrc r24,7
547 01a8 00C0 rjmp .L53
548 01aa 00C0 rjmp .L46
549 .L73:
551 .LM60:
552 01ac 2081 ld r18,Z
553 01ae 27FD sbrc r18,7
554 .L59:
238:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** firstfree = i;
556 .LM61:
557 01b0 A92F mov r26,r25
558 .L52:
225:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if ((pin < 0 && _softpwm_channels[i].pin >= 0) || // ALL pins
560 .LM62:
561 01b2 9F5F subi r25,lo8(-(1))
562 01b4 3996 adiw r30,9
563 01b6 9431 cpi r25,lo8(20)
564 01b8 01F4 brne .L55
565 .LBB2:
239:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
240:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
241:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (pin >= 0 && firstfree >= 0) {
567 .LM63:
568 01ba 87FD sbrc r24,7
569 01bc 00C0 rjmp .L46
571 .LM64:
572 01be AF3F cpi r26,lo8(-1)
573 01c0 01F4 brne .+2
574 01c2 00C0 rjmp .L46
575 01c4 C82F mov r28,r24
576 .LBB3:
242:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // we have a free pin we can use
243:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[firstfree].pin = pin;
578 .LM65:
579 01c6 89E0 ldi r24,lo8(9)
580 01c8 A802 muls r26,r24
581 01ca D001 movw r26,r0
582 01cc 1124 clr __zero_reg__
583 01ce A050 subi r26,lo8(-(_softpwm_channels))
584 01d0 B040 sbci r27,hi8(-(_softpwm_channels))
585 01d2 CC93 st X,r28
244:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[firstfree].polarity = _softpwm_defaultPolarity;
587 .LM66:
588 01d4 2091 0000 lds r18,_softpwm_defaultPolarity
589 01d8 1196 adiw r26,1
590 01da 2C93 st X,r18
591 01dc 1197 sbiw r26,1
592 .LBB4:
593 .LBB5:
245:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[firstfree].outport = portOutputRegister(digitalPinToPort(pin));
595 .LM67:
596 01de 8C2F mov r24,r28
597 01e0 0C2E mov __tmp_reg__,r28
598 01e2 000C lsl r0
599 01e4 990B sbc r25,r25
600 01e6 FC01 movw r30,r24
601 01e8 E050 subi r30,lo8(-(digital_pin_to_port_PGM))
602 01ea F040 sbci r31,hi8(-(digital_pin_to_port_PGM))
603 /* #APP */
604 ; 245 "/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp" 1
605 01ec E491 lpm r30, Z
606
607 ; 0 "" 2
608 /* #NOAPP */
609 .LBE5:
610 01ee F0E0 ldi r31,0
611 01f0 EE0F lsl r30
612 01f2 FF1F rol r31
613 01f4 E050 subi r30,lo8(-(port_to_output_PGM))
614 01f6 F040 sbci r31,hi8(-(port_to_output_PGM))
615 /* #APP */
616 ; 245 "/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp" 1
617 01f8 4591 lpm r20, Z+
618 01fa 5491 lpm r21, Z
619
620 ; 0 "" 2
621 /* #NOAPP */
622 .LBE4:
623 01fc 1396 adiw r26,2+1
624 01fe 5C93 st X,r21
625 0200 4E93 st -X,r20
626 0202 1297 sbiw r26,2
627 .LBB6:
246:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[firstfree].pinmask = digitalPinToBitMask(pin);
629 .LM68:
630 0204 FC01 movw r30,r24
631 0206 E050 subi r30,lo8(-(digital_pin_to_bit_mask_PGM))
632 0208 F040 sbci r31,hi8(-(digital_pin_to_bit_mask_PGM))
633 /* #APP */
634 ; 246 "/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp" 1
635 020a E491 lpm r30, Z
636
637 ; 0 "" 2
638 /* #NOAPP */
639 020c 1496 adiw r26,4
640 020e EC93 st X,r30
641 0210 1497 sbiw r26,4
642 .LBE6:
247:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[firstfree].pwmvalue = value;
644 .LM69:
645 0212 1596 adiw r26,5
646 0214 6C93 st X,r22
248:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // _softpwm_channels[firstfree].checkval = 0;
249:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
250:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // now prepare the pin for output
251:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // turn it off to start (no glitch)
252:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (_softpwm_defaultPolarity == SOFTPWM_NORMAL)
648 .LM70:
649 0216 2111 cpse r18,__zero_reg__
650 0218 00C0 rjmp .L57
253:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** digitalWrite(pin, LOW);
652 .LM71:
653 021a 60E0 ldi r22,0
654 021c 00C0 rjmp .L71
655 .L57:
254:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** else
255:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** digitalWrite(pin, HIGH);
657 .LM72:
658 021e 61E0 ldi r22,lo8(1)
659 .L71:
660 0220 8C2F mov r24,r28
661 0222 0E94 0000 call digitalWrite
256:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** pinMode(pin, OUTPUT);
663 .LM73:
664 0226 61E0 ldi r22,lo8(1)
665 0228 8C2F mov r24,r28
666 /* epilogue start */
667 .LBE3:
668 .LBE2:
257:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
258:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
670 .LM74:
671 022a CF91 pop r28
672 .LBB8:
673 .LBB7:
256:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** pinMode(pin, OUTPUT);
675 .LM75:
676 022c 0C94 0000 jmp pinMode
677 .L72:
678 .LBE7:
679 .LBE8:
237:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** firstfree = i;
681 .LM76:
682 0230 AF3F cpi r26,lo8(-1)
683 0232 01F0 breq .+2
684 0234 00C0 rjmp .L52
685 0236 00C0 rjmp .L59
686 .L46:
687 /* epilogue start */
689 .LM77:
690 0238 CF91 pop r28
691 023a 0895 ret
700 .Lscope4:
702 .stabd 78,0,0
707 .global _Z17SoftPWMSetPercentahh
709 _Z17SoftPWMSetPercentahh:
710 .stabd 46,0,0
210:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** SoftPWMSet(pin, ((uint16_t) percent * 255) / 100, hardset);
712 .LM78:
713 .LFBB5:
714 /* prologue: function */
715 /* frame size = 0 */
716 /* stack size = 0 */
717 .L__stack_usage = 0
718 023c 282F mov r18,r24
211:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
720 .LM79:
721 023e 3FEF ldi r19,lo8(-1)
722 0240 639F mul r22,r19
723 0242 C001 movw r24,r0
724 0244 1124 clr __zero_reg__
725 0246 64E6 ldi r22,lo8(100)
726 0248 70E0 ldi r23,0
727 024a 0E94 0000 call __udivmodhi4
728 024e 822F mov r24,r18
729 0250 0C94 0000 jmp _Z10SoftPWMSetahh
731 .Lscope5:
733 .stabd 78,0,0
736 .global _Z10SoftPWMEnda
738 _Z10SoftPWMEnda:
739 .stabd 46,0,0
259:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
260:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMEnd(int8_t pin) {
741 .LM80:
742 .LFBB6:
743 0254 FF92 push r15
744 0256 0F93 push r16
745 0258 1F93 push r17
746 025a CF93 push r28
747 025c DF93 push r29
748 /* prologue: function */
749 /* frame size = 0 */
750 /* stack size = 5 */
751 .L__stack_usage = 5
752 025e 082F mov r16,r24
753 0260 C0E0 ldi r28,lo8(_softpwm_channels)
754 0262 D0E0 ldi r29,hi8(_softpwm_channels)
756 .LM81:
757 0264 14E1 ldi r17,lo8(20)
261:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t i;
262:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
263:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
264:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if ((pin < 0 && _softpwm_channels[i].pin >= 0) || // ALL pins
265:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** (pin >= 0 && _softpwm_channels[i].pin == pin)) // individual pin
266:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
267:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // now disable the pin (put it into INPUT mode)
268:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** digitalWrite(_softpwm_channels[i].pin, 1);
269:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** pinMode(_softpwm_channels[i].pin, INPUT);
270:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
271:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** // remove the pin
272:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].pin = -1;
759 .LM82:
760 0266 FF24 clr r15
761 0268 FA94 dec r15
762 .L79:
264:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** (pin >= 0 && _softpwm_channels[i].pin == pin)) // individual pin
764 .LM83:
765 026a 8881 ld r24,Y
766 026c 07FF sbrs r16,7
767 026e 00C0 rjmp .L76
264:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** (pin >= 0 && _softpwm_channels[i].pin == pin)) // individual pin
769 .LM84:
770 0270 87FF sbrs r24,7
771 0272 00C0 rjmp .L77
772 0274 00C0 rjmp .L78
773 .L76:
265:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
775 .LM85:
776 0276 0813 cpse r16,r24
777 0278 00C0 rjmp .L78
778 .L77:
268:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** pinMode(_softpwm_channels[i].pin, INPUT);
780 .LM86:
781 027a 61E0 ldi r22,lo8(1)
782 027c 8881 ld r24,Y
783 027e 0E94 0000 call digitalWrite
269:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
785 .LM87:
786 0282 60E0 ldi r22,0
787 0284 8881 ld r24,Y
788 0286 0E94 0000 call pinMode
790 .LM88:
791 028a F882 st Y,r15
792 .L78:
793 028c 1150 subi r17,lo8(-(-1))
794 028e 2996 adiw r28,9
263:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if ((pin < 0 && _softpwm_channels[i].pin >= 0) || // ALL pins
796 .LM89:
797 0290 1111 cpse r17,__zero_reg__
798 0292 00C0 rjmp .L79
799 /* epilogue start */
273:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
274:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
275:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
801 .LM90:
802 0294 DF91 pop r29
803 0296 CF91 pop r28
804 0298 1F91 pop r17
805 029a 0F91 pop r16
806 029c FF90 pop r15
807 029e 0895 ret
809 .Lscope6:
811 .stabd 78,0,0
816 .global _Z18SoftPWMSetFadeTimeajj
818 _Z18SoftPWMSetFadeTimeajj:
819 .stabd 46,0,0
276:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
277:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
278:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** void SoftPWMSetFadeTime(int8_t pin, uint16_t fadeUpTime, uint16_t fadeDownTime) {
821 .LM91:
822 .LFBB7:
823 02a0 2F92 push r2
824 02a2 3F92 push r3
825 02a4 4F92 push r4
826 02a6 5F92 push r5
827 02a8 6F92 push r6
828 02aa 7F92 push r7
829 02ac 8F92 push r8
830 02ae 9F92 push r9
831 02b0 AF92 push r10
832 02b2 BF92 push r11
833 02b4 CF92 push r12
834 02b6 DF92 push r13
835 02b8 EF92 push r14
836 02ba FF92 push r15
837 02bc 0F93 push r16
838 02be 1F93 push r17
839 02c0 CF93 push r28
840 02c2 DF93 push r29
841 02c4 00D0 rcall .
842 02c6 00D0 rcall .
843 02c8 CDB7 in r28,__SP_L__
844 02ca DEB7 in r29,__SP_H__
845 /* prologue: function */
846 /* frame size = 4 */
847 /* stack size = 22 */
848 .L__stack_usage = 22
849 02cc 382E mov r3,r24
850 02ce 7A83 std Y+2,r23
851 02d0 6983 std Y+1,r22
852 02d2 8A01 movw r16,r20
853 02d4 80E0 ldi r24,lo8(_softpwm_channels)
854 02d6 90E0 ldi r25,hi8(_softpwm_channels)
855 02d8 9C83 std Y+4,r25
856 02da 8B83 std Y+3,r24
858 .LM92:
859 02dc 84E1 ldi r24,lo8(20)
860 02de 282E mov r2,r24
279:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** int16_t fadeAmount;
280:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** uint8_t i;
281:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
282:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** for (i = 0; i < SOFTPWM_MAXCHANNELS; i++) {
283:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if ((pin < 0 && _softpwm_channels[i].pin >= 0) || // ALL pins
284:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** (pin >= 0 && _softpwm_channels[i].pin == pin)) // individual pin
285:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
286:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
287:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** fadeAmount = 0;
288:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (fadeUpTime > 0)
289:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** fadeAmount = 255UL * (SOFTPWM_OCR * 256UL / (F_CPU / 8000UL)) / fadeUpTime;
290:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
291:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].fadeuprate = fadeAmount;
292:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
293:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** fadeAmount = 0;
294:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (fadeDownTime > 0)
295:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** fadeAmount = 255UL * (SOFTPWM_OCR * 256UL / (F_CPU / 8000UL)) / fadeDownTime;
862 .LM93:
863 02e0 4A01 movw r8,r20
864 02e2 A12C mov r10,__zero_reg__
865 02e4 B12C mov r11,__zero_reg__
866 02e6 90EF ldi r25,lo8(-16)
867 02e8 C92E mov r12,r25
868 02ea 9FE0 ldi r25,lo8(15)
869 02ec D92E mov r13,r25
870 02ee E12C mov r14,__zero_reg__
871 02f0 F12C mov r15,__zero_reg__
289:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
873 .LM94:
874 02f2 2B01 movw r4,r22
875 02f4 612C mov r6,__zero_reg__
876 02f6 712C mov r7,__zero_reg__
877 .L85:
283:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** (pin >= 0 && _softpwm_channels[i].pin == pin)) // individual pin
879 .LM95:
880 02f8 EB81 ldd r30,Y+3
881 02fa FC81 ldd r31,Y+4
882 02fc 8081 ld r24,Z
883 02fe 37FE sbrs r3,7
884 0300 00C0 rjmp .L82
283:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** (pin >= 0 && _softpwm_channels[i].pin == pin)) // individual pin
886 .LM96:
887 0302 87FF sbrs r24,7
888 0304 00C0 rjmp .L83
889 .L86:
890 0306 2A94 dec r2
891 0308 8B81 ldd r24,Y+3
892 030a 9C81 ldd r25,Y+4
893 030c 0996 adiw r24,9
894 030e 9C83 std Y+4,r25
895 0310 8B83 std Y+3,r24
282:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if ((pin < 0 && _softpwm_channels[i].pin >= 0) || // ALL pins
897 .LM97:
898 0312 2110 cpse r2,__zero_reg__
899 0314 00C0 rjmp .L85
900 0316 00C0 rjmp .L81
901 .L82:
284:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** {
903 .LM98:
904 0318 3812 cpse r3,r24
905 031a 00C0 rjmp .L86
906 .L83:
288:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** fadeAmount = 255UL * (SOFTPWM_OCR * 256UL / (F_CPU / 8000UL)) / fadeUpTime;
908 .LM99:
909 031c 8981 ldd r24,Y+1
910 031e 9A81 ldd r25,Y+2
911 0320 892B or r24,r25
912 0322 01F0 breq .L89
289:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
914 .LM100:
915 0324 C701 movw r24,r14
916 0326 B601 movw r22,r12
917 0328 A301 movw r20,r6
918 032a 9201 movw r18,r4
919 032c 0E94 0000 call __udivmodsi4
920 0330 00C0 rjmp .L87
921 .L89:
287:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (fadeUpTime > 0)
923 .LM101:
924 0332 20E0 ldi r18,0
925 .L87:
291:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
927 .LM102:
928 0334 EB81 ldd r30,Y+3
929 0336 FC81 ldd r31,Y+4
930 0338 2783 std Z+7,r18
294:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** fadeAmount = 255UL * (SOFTPWM_OCR * 256UL / (F_CPU / 8000UL)) / fadeDownTime;
932 .LM103:
933 033a 0115 cp r16,__zero_reg__
934 033c 1105 cpc r17,__zero_reg__
935 033e 01F0 breq .L90
937 .LM104:
938 0340 C701 movw r24,r14
939 0342 B601 movw r22,r12
940 0344 A501 movw r20,r10
941 0346 9401 movw r18,r8
942 0348 0E94 0000 call __udivmodsi4
943 034c 00C0 rjmp .L88
944 .L90:
293:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (fadeDownTime > 0)
946 .LM105:
947 034e 20E0 ldi r18,0
948 .L88:
296:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
297:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** _softpwm_channels[i].fadedownrate = fadeAmount;
950 .LM106:
951 0350 EB81 ldd r30,Y+3
952 0352 FC81 ldd r31,Y+4
953 0354 2087 std Z+8,r18
298:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp ****
299:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** if (pin >= 0) // we've set individual pin
955 .LM107:
956 0356 37FC sbrc r3,7
957 0358 00C0 rjmp .L86
958 .L81:
959 /* epilogue start */
300:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** break;
301:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
302:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
303:/home/mrh/Downloads/arduino-1.8.8-linux64/arduino-1.8.8//libraries/SoftPWM/SoftPWM.cpp **** }
961 .LM108:
962 035a 0F90 pop __tmp_reg__
963 035c 0F90 pop __tmp_reg__
964 035e 0F90 pop __tmp_reg__
965 0360 0F90 pop __tmp_reg__
966 0362 DF91 pop r29
967 0364 CF91 pop r28
968 0366 1F91 pop r17
969 0368 0F91 pop r16
970 036a FF90 pop r15
971 036c EF90 pop r14
972 036e DF90 pop r13
973 0370 CF90 pop r12
974 0372 BF90 pop r11
975 0374 AF90 pop r10
976 0376 9F90 pop r9
977 0378 8F90 pop r8
978 037a 7F90 pop r7
979 037c 6F90 pop r6
980 037e 5F90 pop r5
981 0380 4F90 pop r4
982 0382 3F90 pop r3
983 0384 2F90 pop r2
984 0386 0895 ret
986 .Lscope7:
988 .stabd 78,0,0
989 .global _softpwm_channels
990 .section .bss
993 _softpwm_channels:
994 0000 0000 0000 .zero 180
994 0000 0000
994 0000 0000
994 0000 0000
994 0000 0000
995 .global _softpwm_defaultPolarity
998 _softpwm_defaultPolarity:
999 00b4 00 .zero 1
1000 .global _isr_softcount
1001 .data
1004 _isr_softcount:
1005 0000 FF .byte -1
1023 .text
1025 .Letext0:
1026 .ident "GCC: (GNU) 5.4.0"
1027 .global __do_copy_data
1028 .global __do_clear_bss
DEFINED SYMBOLS
*ABS*:0000000000000000 SoftPWM.cpp
/tmp/ccq9YFga.s:2 *ABS*:000000000000003e __SP_H__
/tmp/ccq9YFga.s:3 *ABS*:000000000000003d __SP_L__
/tmp/ccq9YFga.s:4 *ABS*:000000000000003f __SREG__
/tmp/ccq9YFga.s:5 *ABS*:0000000000000000 __tmp_reg__
/tmp/ccq9YFga.s:6 *ABS*:0000000000000001 __zero_reg__
/tmp/ccq9YFga.s:136 .text:0000000000000000 __vector_11
/tmp/ccq9YFga.s:1004 .data:0000000000000000 _isr_softcount
/tmp/ccq9YFga.s:993 .bss:0000000000000000 _softpwm_channels
/tmp/ccq9YFga.s:342 .text:0000000000000100 _Z12SoftPWMBeginh
/tmp/ccq9YFga.s:998 .bss:00000000000000b4 _softpwm_defaultPolarity
/tmp/ccq9YFga.s:429 .text:0000000000000148 _Z18SoftPWMSetPolarityah
/tmp/ccq9YFga.s:489 .text:0000000000000172 _Z10SoftPWMSetahh
/tmp/ccq9YFga.s:709 .text:000000000000023c _Z17SoftPWMSetPercentahh
/tmp/ccq9YFga.s:738 .text:0000000000000254 _Z10SoftPWMEnda
/tmp/ccq9YFga.s:818 .text:00000000000002a0 _Z18SoftPWMSetFadeTimeajj
UNDEFINED SYMBOLS
digital_pin_to_port_PGM
port_to_output_PGM
digital_pin_to_bit_mask_PGM
digitalWrite
pinMode
__udivmodhi4
__udivmodsi4
__do_copy_data
__do_clear_bss