Skip to content

Commit 4ccda06

Browse files
committed
fix style
1 parent 946617e commit 4ccda06

File tree

8 files changed

+346
-205
lines changed

8 files changed

+346
-205
lines changed

.vscode/arduino.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"board": "arduino:avr:mega",
3+
"configuration": "cpu=atmega2560",
4+
"sketch": "examples/test_timer/test_timer.ino"
5+
}

.vscode/c_cpp_properties.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"configurations": [
3+
{
4+
"name": "Linux",
5+
"includePath": [
6+
"/home/sansil/Documents/arduino-1.8.5/hardware/arduino/avr/**",
7+
"${workspaceFolder}/**"
8+
],
9+
"defines": [],
10+
"compilerPath": "/usr/bin/clang",
11+
"cStandard": "c11",
12+
"cppStandard": "c++17",
13+
"intelliSenseMode": "clang-x64",
14+
"forcedInclude": [
15+
"/home/sansil/Documents/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h"
16+
]
17+
}
18+
],
19+
"version": 4
20+
}

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1-
# SoftwareTimer
2-
Software Timer library for Arduino
1+
## SoftwareTimer
2+
3+
### Software Timers library for Arduino
4+
5+
Create software timers from one hardware timer.

examples/test_timer/test_timer.ino

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,61 @@
11
#include "softwareTimer.h"
22

3+
//events to fire
34
char ev0 = 0;
4-
char ev2 =0;
5-
char ev3 =0;
5+
char ev2 = 0;
6+
char ev3 = 0;
67

7-
Stimer timer0(&ev0);
8+
Stimer mTimer0(&ev0);
89
Stimer mTimer1;
910
Stimer mTimer2(&ev2);
10-
Stimer timer3(&ev3);
11+
Stimer mTimer3(&ev3);
12+
13+
void setup()
14+
{
1115

12-
void setup() {
13-
1416
Serial.begin(115200);
15-
Serial.print("tiempo 0:");
17+
Serial.print("time 0:");
1618
Serial.println(millis());
1719

18-
timer0.start(10);
20+
//time in ms
21+
mTimer0.start(10);
1922
mTimer1.start(100);
2023
mTimer2.start(1000);
21-
timer3.start(10);
24+
mTimer3.start(10000);
2225
}
2326

24-
void loop() {
27+
void loop()
28+
{
2529

26-
if(ev0){
27-
Serial.print("[TIMER 0] tiempo end: ");
30+
if (ev0)
31+
{
32+
Serial.print("[TIMER 0] time end: ");
2833
Serial.println(millis());
29-
ev0=0;
30-
timer0.start(1000);
34+
ev0 = 0;
35+
//mTimer0.start(1000);
3136
}
32-
if(ev2){
33-
Serial.print("[TIMER 2] tiempo end: ");
37+
if (ev2)
38+
{
39+
Serial.print("[TIMER 2] time end: ");
3440
Serial.println(millis());
35-
ev2=0;
36-
mTimer2.start(1000);
41+
ev2 = 0;
42+
//mTimer2.start(1000);
3743
}
38-
if(ev3){
39-
Serial.print("[TIMER 3] tiempo end: ");
44+
if (ev3)
45+
{
46+
Serial.print("[TIMER 3] time end: ");
4047
Serial.println(millis());
41-
ev3=0;
42-
timer3.start(16000);
48+
ev3 = 0;
49+
mTimer3.start(16000);
4350
}
44-
if(mTimer1.timeout_flag){
45-
Serial.print("[TIMER 1] tiempo end: ");
51+
52+
//own event
53+
if (mTimer1.timeout_flag)
54+
{
55+
Serial.print("[TIMER 1] time end: ");
4656
Serial.println(millis());
4757
mTimer1.timeout_flag = 0;
48-
mTimer1.start(100);
58+
//mTimer1.start(100);
4959
}
5060

5161
//Serial.println(debug_i);

library.properties

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
name=Software Timer
2-
version=0.0.1
1+
name=Software Timers
2+
version=0.1.1
33
author=Santiago Silva Dalla <[email protected]>
44
maintainer=Santiago Silva Dalla <[email protected]>
5-
sentence=Software timer library.
6-
paragraph=Software timer library.
7-
category=Data Storage
5+
sentence=A library to create software timers from one hardware timer.
6+
paragraph=Software timers library.
7+
category=Timing
88
url=https://github.com/sansil/SoftwareTimer
9-
architectures=*
9+
architectures=avr

src/hardwareTimer.cpp

Lines changed: 62 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,88 @@
11
#include "hardwareTimer.h"
22

3-
void start_hardware_timer(TIME unTime){
4-
/*
5-
* Seteo el timer en multiplo de 1seg.
6-
* unTime esta en ms.
3+
void start_hardware_timer(TIME unTime)
4+
{
5+
/*
6+
* Set timer on 1sec.
7+
* unTime in ms.
78
* prescaler 8 max_ms : 32 ms
89
* prescaler 64 max_ms : 262ms
910
* prescaler 256 max_ms : 1048 ms
1011
* prescaler 1024 max_ms : 4164 ms
1112
*/
1213

13-
14-
TIME ticks=0;
15-
float prescaler=1;
14+
TIME ticks = 0;
15+
float prescaler = 1;
1616
cli();
17-
18-
if ((unTime>=0) & (unTime <= 32)){
17+
if ((unTime >= 0) & (unTime <= 32))
18+
{
1919
prescaler = 8.0;
20-
}else if((unTime>=33) & (unTime <= 262)){
20+
}
21+
else if ((unTime >= 33) & (unTime <= 262))
22+
{
2123
prescaler = 64.0;
22-
}else if ((unTime>=263) & (unTime <= 1048)){
24+
}
25+
else if ((unTime >= 263) & (unTime <= 1048))
26+
{
2327
prescaler = 256.0;
24-
}else if((unTime>=1049) & (unTime <= 4164)){
28+
}
29+
else if ((unTime >= 1049) & (unTime <= 4164))
30+
{
2531
prescaler = 1024.0;
26-
}else{
27-
prescaler = 1024.0; //TODO control de error
2832
}
29-
// ticks = round((unsigned long)((float)unTime*15624)/1000); //1s 15624 ticks max value 65535
30-
//Serial.println(ticks);
31-
// disable global interrupts
32-
TCCR1A = 0; // set entire TCCR1A register to 0
33-
TCCR1B = 0; // same for TCCR1B
34-
//OCR1A = ticks;
35-
OCR1A = round((16000.0f/prescaler)*unTime - 1);
36-
// turn on CTC mode:
33+
else
34+
{
35+
prescaler = 1024.0; //TODO: control de error
36+
}
37+
38+
TCCR1A = 0; // set entire TCCR1A register to 0
39+
TCCR1B = 0; // same for TCCR1B
40+
TCNT1 = 0;
41+
42+
OCR1A = round((16000.0f / prescaler) * unTime - 1);
43+
TIFR1 = 0xFF; // reset flags
44+
// turn on CTC mode:
3745
TCCR1B |= (1 << WGM12);
38-
// Set CS10 and CS12 bits for 1024 prescaler:
39-
switch ((int)prescaler) {
40-
case 8:
41-
TCCR1B |= (1 << CS11);
42-
break;
43-
case 64:
44-
TCCR1B |= (1 << CS10);
45-
TCCR1B |= (1 << CS11);
46-
break;
47-
case 256:
48-
TCCR1B |= (1 << CS12);
49-
break;
50-
case 1024:
51-
default:
52-
TCCR1B |= (1 << CS10);
53-
TCCR1B |= (1 << CS12);
54-
break;
55-
}
56-
// enable timer compare interrupt:
46+
// Set CS10 and CS12 bits for 1024 prescaler:
47+
switch ((int)prescaler)
48+
{
49+
case 8:
50+
TCCR1B |= (1 << CS11);
51+
break;
52+
case 64:
53+
TCCR1B |= (1 << CS10);
54+
TCCR1B |= (1 << CS11);
55+
break;
56+
case 256:
57+
TCCR1B |= (1 << CS12);
58+
break;
59+
case 1024:
60+
default:
61+
TCCR1B |= (1 << CS10);
62+
TCCR1B |= (1 << CS12);
63+
break;
64+
}
65+
// enable timer compare interrupt:
5766
TIMSK1 |= (1 << OCIE1A);
58-
// enable global interrupts:
5967
sei();
6068
}
6169

62-
ISR(TIMER1_COMPA_vect) {
63-
/*
64-
* En la interrupcion hago un update con el timepo que expiro y seteo un nuevo timer con el valor de timer_next( si es que hay uno)
65-
*/
70+
ISR(TIMER1_COMPA_vect)
71+
{
72+
6673
TCCR1A = 0;
67-
TCCR1B = 0; //apago el timer sino queda ciclico por defecto
74+
TCCR1B = 0; //stop timer
6875
time_now = update_time_now();
69-
timers_update(time_now - time_timer_set); // actualizo el nuevo timer_next
70-
/* start physical timer for next shortest time if one exists */
71-
if (timer_next) {
72-
time_timer_set = time_now;
73-
start_hardware_timer(timer_next->time);
74-
76+
timers_update(time_now - time_timer_set); // update new timer_next
77+
/* start physical timer for next shortest time if one exists */
78+
if (timer_next)
79+
{
80+
time_timer_set = time_now;
81+
start_hardware_timer(timer_next->time);
7582
}
7683
}
7784

78-
TIME update_time_now(){
85+
TIME update_time_now()
86+
{
7987
return millis();
8088
}

0 commit comments

Comments
 (0)