Skip to content

Commit 849de89

Browse files
author
atar-axis
committed
fixed wrong timer issue
1 parent ae9f92f commit 849de89

3 files changed

Lines changed: 88 additions & 71 deletions

File tree

tc1-u4/Objects/u4

13.3 KB
Binary file not shown.

tc1-u4/Objects/u4.hex

Lines changed: 68 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,58 @@
1-
:0C0DD600040841200000040C4120000033
2-
:03005300020DE3B8
3-
:010DE30032DD
4-
:03000B00020DC91A
5-
:0D0DC900C0E00515E51570020514D0E032FC
6-
:03001B00020B1FB6
7-
:100B1F00C0E0C0F0C083C082C0D075D000C000C09C
8-
:0D0B2F0001C002C003C004C005C006C0071D
9-
:100B3C00A2B4E4FE33FF7C007D0A120AFFAC06ADC2
10-
:100B4C0007EC120A7C7BCD7ACC79CC783D1208F874
11-
:100B5C00C004C005C006C0077466FFFEFD7C3FAB39
12-
:100B6C000BAA0AA909A8081208F8D003D002D001D0
13-
:100B7C00D0001208078F0B8E0A8D098C08A2B3E4E3
14-
:100B8C00FE33FF7C007D0A120AFFAC06AD07EC12A7
15-
:100B9C000A7C7BCD7ACC79CC783D1208F8C004C0A5
16-
:100BAC0005C006C0077466FFFEFD7C3FAB0FAA0EA6
17-
:100BBC00A90DA80C1208F8D003D002D001D0001255
18-
:100BCC0008078F0F8E0E8D0D8C0CE4FFFE7DA07C24
19-
:100BDC0040AB0BAA0AA909A8081209FE600A400832
20-
:100BEC00751A00751B018006751A00751B00E4FF51
21-
:100BFC00FE7DA07C40AB0FAA0EA90DA80C1209FE1D
22-
:100C0C00600A4008751C00751D018006751C007576
23-
:100C1C001D00E51B65137004E51A6512600E851A3C
24-
:100C2C0012851B137518007519018006751800754F
25-
:100C3C001900E51D65177004E51C65166006851C1A
26-
:040C4C0016851D17D5
27-
:100C5000D007D006D005D004D003D002D001D000F8
28-
:0B0C6000D0D0D082D083D0F0D0E032A2
29-
:100D560043B22053B1DF43B20453B1FBE4F510F5BF
30-
:100D660011F514F515F518F519F512751301F516A3
31-
:100D7600F517C2B2C2B5D2B4D2B3438F105389F0BD
32-
:100D8600538E7F758CFC758A1853890F538EBF75E9
33-
:0E0D96008DFE758B0CD2A9D2ABD28CD28E22E0
34-
:100DA400E4FDFCC3ED9FEC9E501AE4FAFB00000046
35-
:100DB40000000BBB00010ABA02F3BB58F00DBD00E2
36-
:040DC400010C80DFBF
37-
:010DC8002208
38-
:100CF700120D56D2AFE510704FE51114601D146048
39-
:100D07003124027043758702C2B27F017E00120D43
40-
:100D1700A4D2B575100075110180DAE512451324C8
41-
:100D2700FF92B2E5176401451670CAF510751102F6
42-
:100D370080C3E512451324FF92B2E517451670B537
43-
:0F0D4700C2B5F510F51180ADE4F510F51180A6D9
1+
:0C0E800004104120000004144120000078
2+
:03005300020E8D0D
3+
:010E8D003232
4+
:03000B00020E32B0
5+
:100E3200C0E0C0D075D000C004C005C006C007AF76
6+
:100E42001FAE1EAD1DAC1CEF2401F51FE43EF51EC6
7+
:100E5200E43DF51DE43CF51CD007D006D005D004D6
8+
:050E6200D0D0D0E03209
9+
:03006300020B305D
10+
:0D0B3000C0E0C0F0C083C082C0D075D00806
11+
:100B3D00A2B4E4FE33FF7C007D0A120AFFAC0EADB9
12+
:100B4D000FEC120A7C7BCD7ACC79CC783D1208F86B
13+
:100B5D00C00CC00DC00EC00F7466FFFEFD7C3FAB18
14+
:100B6D0013AA12A911A8101208F8D00BD00AD00997
15+
:100B7D00D0081208078F138E128D118C10A2B3E4BA
16+
:100B8D00FE33FF7C007D0A120AFFAC0EAD0FEC1296
17+
:100B9D000A7C7BCD7ACC79CC783D1208F8C00CC09C
18+
:100BAD000DC00EC00F7466FFFEFD7C3FAB17AA167D
19+
:100BBD00A915A8141208F8D00BD00AD009D0081224
20+
:100BCD0008078F178E168D158C14E4FFFE7DA07C03
21+
:100BDD0040AB13AA12A911A8101209FE600A400811
22+
:100BED007528007529018006752800752900E4FF18
23+
:100BFD00FE7DA07C40AB17AA16A915A8141209FEFC
24+
:100C0D00600A4008752A00752B018006752A00754B
25+
:100C1D002B00E529651B7004E528651A600E8528F3
26+
:100C2D001A85291B75260075270180067526007506
27+
:100C3D002700E52B65217004E52A65206006852ACD
28+
:040C4D0020852B21B2
29+
:0B0C5100D0D0D082D083D0F0D0E032B1
30+
:100D720043B22053B1DF43B20453B1FBE4F51FF594
31+
:100D82001EF51DF51CF518F519AF1FAE1EAD1DACF5
32+
:100D92001C8F258E248D238C22F526F527F51A75B6
33+
:100DA2001B01F520F521C2B2C2B5D2B4D2B3438F32
34+
:100DB200105389F0538E7F758CFC758A18438E040C
35+
:100DC20075D7A075D615D2A943AF04D28C438E1025
36+
:010DD20022FE
37+
:080DD3008F2F8E2E8D2D8C2C2C
38+
:100DDB00AF1FAE1EAD1DAC1C8F338E328D318C30E0
39+
:100DEB00AF2FAE2EAD2DAC2CAB33AA32A931A83020
40+
:100DFB00C3120B1F4015E533952FFFE532952EFEE1
41+
:100E0B00E531952DFDE530952CFC22AF2FAE2EADA7
42+
:100E1B002DAC2C120B11EF2533FFEE3532FEED35D9
43+
:060E2B0031FDEC3530FC46
44+
:010E3100229E
45+
:100E6700AB07AA06AF1FAE1EAD1DAC1C8F258E2487
46+
:090E77008D238C228A188B1922AC
47+
:100CE800120D72D2AFE5187078E51914601414600B
48+
:100CF8002614605624037069758702007F017E0000
49+
:100D0800805AE527452660DDE51B451A70D7D2B520
50+
:100D1800C2B27F02FE8045E51A451B24FF92B2E568
51+
:100D2800216401452070067F03FE120E67AF25AED1
52+
:100D380024AD23AC22120DD3E47BE87A03F9F8C37F
53+
:100D4800120B1F50A0E4FFFE8012E51A451B24FF7A
54+
:100D580092B2E5214520708DC2B5FFFE120E678064
55+
:0A0D680084E4FFFE120E67020CED9A
4456
:10080000020AEAE86480F8E933E83360110460F032
4557
:10081000ED33EC337009E8FCE9FDEAFEEBFF22045E
4658
:1008200060DED3EB9FEA9EE99DE8C2E78CF0C2F759
@@ -92,18 +104,20 @@
92104
:100ADC000BEB6014A2D5EB13FCED92E7FD2274FF37
93105
:100AEC00FCFDFEFF22E480F8A2D574FF13FC7D8090
94106
:030AFC00E480EFA4
95-
:03000000020C6B84
96-
:0C0C6B00787FE4F6D8FD75811D020CB204
107+
:03000000020C5C93
108+
:0C0C5C00787FE4F6D8FD758133020CA30C
97109
:100AFF00EF8DF0A4A8F0CF8CF0A428CE8DF0A42E0B
98110
:020B0F00FE22C4
99111
:0E0B1100C3E49FFFE49EFEE49DFDE49CFC22F5
100-
:100C7700020CF7E493A3F8E493A34003F68001F290
101-
:100C870008DFF48029E493A3F85407240CC8C3337E
102-
:100C9700C4540F4420C8834004F456800146F6DF4D
103-
:100CA700E4800B0102040810204080900DD6E47EFA
104-
:100CB700019360BCA3FF543F30E509541FFEE49342
105-
:100CC700A360010ECF54C025E060A840B8E493A309
106-
:100CD700FAE493A3F8E493A3C8C582C8CAC583CA34
107-
:100CE700F0A3C8C582C8CAC583CADFE9DEE780BEEC
108-
:010DE2000010
112+
:100B1F00EB9FF5F0EA9E42F0E99D42F0E89C45F02C
113+
:010B2F0022A3
114+
:100C6800020CE8E493A3F8E493A34003F68001F2AE
115+
:100C780008DFF48029E493A3F85407240CC8C3338D
116+
:100C8800C4540F4420C8834004F456800146F6DF5C
117+
:100C9800E4800B0102040810204080900E80E47E5E
118+
:100CA800019360BCA3FF543F30E509541FFEE49351
119+
:100CB800A360010ECF54C025E060A840B8E493A318
120+
:100CC800FAE493A3F8E493A3C8C582C8CAC583CA43
121+
:100CD800F0A3C8C582C8CAC583CADFE9DEE780BEFB
122+
:010E8C000065
109123
:00000001FF

tc1-u4/main.c

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,11 @@ void timer0_ISR(void) interrupt 1
5858
*/
5959
}
6060

61-
void timer1_ISR(void) interrupt 3
61+
void timer2_ISR(void) interrupt 12 using 1
6262
{
6363
// TODO: Way too long for an ISR...
6464

65+
6566
static float avg_button = 10;
6667
static float avg_avr_online = 10;
6768

@@ -87,6 +88,7 @@ void timer1_ISR(void) interrupt 3
8788
if (new_avr_online_state != avr_online_state) {
8889
avr_online_state = new_avr_online_state;
8990
}
91+
9092
}
9193

9294
void setup()
@@ -122,16 +124,16 @@ void setup()
122124
SET_BIT(INT_CLKO, 4); // Interrupt on falling edge of INT2/P34 (Button)
123125

124126
// Timer 0
125-
TMOD &= 0xF0; // Mode 0, 16Bit, Auto Reload
126-
CLR_BIT(AUXR, 7); // 12T Mode
127+
TMOD &= 0xF0; // T/C10 Mode 0, 16Bit, Auto Reload
128+
CLR_BIT(AUXR, 7); // Timer 0 in 12T Mode
127129
TH0 = (65536 - 1000) / 256; // Reload values after overflow, High value
128130
TL0 = (65536 - 1000) % 256; // Low value
131+
132+
// Timer 2
133+
AUXR |= 0x04; //Timer clock is 1T mode
134+
T2L = 0xA0; //Initial timer value
135+
T2H = 0x15; //Initial timer value
129136

130-
// Timer 1
131-
TMOD &= 0x0F; // Set T/C1 Mode 0, 16Bit, Auto Reload
132-
CLR_BIT(AUXR, 6); // Timer 1 in 12T mode, not 1T mode
133-
TH1 = (65536 - 500) / 256; // High byte reload value
134-
TL1 = (65536 - 500) % 256; // Low byte reload value
135137

136138
/* NOTE on Reload Values for STC15 uC:
137139
* Any value written into TH0/TL0 are passed to the reload registers
@@ -140,10 +142,11 @@ void setup()
140142
*/
141143

142144
ET0 = 1; // Enable Timer 0 interrupts
143-
ET1 = 1; // Enable Timer 1 interrupts
145+
SET_BIT(IE2, 2); // IE2, ET2: Enable Timer 2 interrupts
144146

145147
TR0 = 1; // Start Timer 0
146-
TR1 = 1; // Start Timer 1
148+
AUXR |= 0x10; // Start Timer 2
149+
147150
}
148151

149152
unsigned long int ticks_since(unsigned long since)
@@ -156,7 +159,7 @@ unsigned long int ticks_since(unsigned long since)
156159
return (now + (1 + ULONG_MAX - since));
157160
}
158161

159-
void set_state(int new_state)
162+
void transition_to_state(int new_state)
160163
{
161164
state_start_time = system_tick;
162165
state = new_state;
@@ -173,15 +176,15 @@ void main()
173176
case SLEEP:
174177
PCON = 0x02; // Stop/PowerDown Mode
175178
_nop_(); // We need at least one NOP after waking up
176-
set_state(IDLE);
179+
transition_to_state(IDLE);
177180

178181
break;
179182

180183
case IDLE:
181184
if(button_changed && button_state == LOW){
182185
O_BOOST = HIGH; // powering the booster, avr, 5v rail
183186
O_AVR_BUTTON = LOW; // notify avr about the pressed button
184-
set_state(BOOT);
187+
transition_to_state(BOOT);
185188
}
186189

187190
break;
@@ -190,11 +193,11 @@ void main()
190193
O_AVR_BUTTON = button_state;
191194

192195
if (avr_online_state == HIGH){
193-
set_state(ONLINE);
196+
transition_to_state(ONLINE);
194197
}
195198

196199
if (ticks_since(state_start_time) > 1000){
197-
set_state(SLEEP);
200+
transition_to_state(SLEEP);
198201
}
199202

200203
break;
@@ -204,13 +207,13 @@ void main()
204207

205208
if (avr_online_state == LOW) {
206209
O_BOOST = LOW;
207-
set_state(SLEEP);
210+
transition_to_state(SLEEP);
208211
}
209212

210213
break;
211214

212215
default:
213-
set_state(SLEEP);
216+
transition_to_state(SLEEP);
214217
break;
215218
}
216219

0 commit comments

Comments
 (0)