Skip to content

Commit e5f34e5

Browse files
committed
Merge branch 'ide-1.5.x-timer-variant' of github.com:matthijskooijman/Arduino into matthijskooijman-ide-1.5.x-timer-variant
2 parents 00087c1 + 4014dd6 commit e5f34e5

File tree

6 files changed

+44
-22
lines changed

6 files changed

+44
-22
lines changed

app/src/processing/app/debug/Compiler.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,8 @@ private void compileFilesInFolder(File buildFolder, File srcFolder, List<File> i
693693

694694
// 3. compile the core, outputting .o files to <buildPath> and then
695695
// collecting them into the core.a library file.
696+
// Also compiles the variant (if it supplies actual source files),
697+
// which are included in the link directly (not through core.a)
696698
void compileCore()
697699
throws RunnerException {
698700

@@ -705,13 +707,9 @@ void compileCore()
705707
if (variantFolder != null)
706708
includeFolders.add(variantFolder);
707709

708-
List<File> objectFiles = compileFiles(buildFolder, coreFolder, true,
709-
includeFolders);
710-
if (variantFolder != null)
711-
objectFiles.addAll(compileFiles(buildFolder, variantFolder, true,
712-
includeFolders));
713-
714-
for (File file : objectFiles) {
710+
List<File> coreObjectFiles = compileFiles(buildFolder, coreFolder, true,
711+
includeFolders);
712+
for (File file : coreObjectFiles) {
715713

716714
PreferencesMap dict = new PreferencesMap(prefs);
717715
dict.put("ide_version", "" + Base.REVISION);
@@ -727,6 +725,10 @@ void compileCore()
727725
}
728726
execAsynchronously(cmdArray);
729727
}
728+
729+
if (variantFolder != null)
730+
objectFiles.addAll(compileFiles(buildFolder, variantFolder, true,
731+
includeFolders));
730732
}
731733

732734
// 4. link it all together into the .elf file

app/src/processing/app/debug/TargetPlatform.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public TargetPlatform(String _name, File _folder, TargetPackage parent)
7171
if (!boardsFile.exists() || !boardsFile.canRead())
7272
throw new TargetPlatformException(
7373
format(_("Could not find boards.txt in {0}. Is it pre-1.5?"),
74-
boardsFile.getAbsolutePath()));
74+
folder.getAbsolutePath()));
7575

7676
// Load boards
7777
try {

hardware/arduino/avr/cores/arduino/Arduino.h

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ typedef uint8_t boolean;
118118
typedef uint8_t byte;
119119

120120
void init(void);
121+
void initVariant(void);
121122

122123
void pinMode(uint8_t, uint8_t);
123124
void digitalWrite(uint8_t, uint8_t);
@@ -194,20 +195,21 @@ extern const uint8_t PROGMEM digital_pin_to_timer_PGM[];
194195
#define TIMER0B 2
195196
#define TIMER1A 3
196197
#define TIMER1B 4
197-
#define TIMER2 5
198-
#define TIMER2A 6
199-
#define TIMER2B 7
200-
201-
#define TIMER3A 8
202-
#define TIMER3B 9
203-
#define TIMER3C 10
204-
#define TIMER4A 11
205-
#define TIMER4B 12
206-
#define TIMER4C 13
207-
#define TIMER4D 14
208-
#define TIMER5A 15
209-
#define TIMER5B 16
210-
#define TIMER5C 17
198+
#define TIMER1C 5
199+
#define TIMER2 6
200+
#define TIMER2A 7
201+
#define TIMER2B 8
202+
203+
#define TIMER3A 9
204+
#define TIMER3B 10
205+
#define TIMER3C 11
206+
#define TIMER4A 12
207+
#define TIMER4B 13
208+
#define TIMER4C 14
209+
#define TIMER4D 15
210+
#define TIMER5A 16
211+
#define TIMER5B 17
212+
#define TIMER5C 18
211213

212214
#ifdef __cplusplus
213215
} // extern "C"

hardware/arduino/avr/cores/arduino/main.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,17 @@
1919

2020
#include <Arduino.h>
2121

22+
// Weak empty variant initialization function.
23+
// May be redefined by variant files.
24+
void initVariant() __attribute__((weak));
25+
void initVariant() { }
26+
2227
int main(void)
2328
{
2429
init();
2530

31+
initVariant();
32+
2633
#if defined(USBCON)
2734
USBDevice.attach();
2835
#endif

hardware/arduino/avr/cores/arduino/wiring_analog.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,14 @@ void analogWrite(uint8_t pin, int val)
160160
break;
161161
#endif
162162

163+
#if defined(TCCR1A) && defined(COM1C1)
164+
case TIMER1C:
165+
// connect pwm to pin on timer 1, channel B
166+
sbi(TCCR1A, COM1C1);
167+
OCR1C = val; // set pwm duty
168+
break;
169+
#endif
170+
163171
#if defined(TCCR2) && defined(COM21)
164172
case TIMER2:
165173
// connect pwm to pin on timer 2

hardware/arduino/avr/cores/arduino/wiring_digital.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ static void turnOffPWM(uint8_t timer)
8484
#if defined(TCCR1A) && defined(COM1B1)
8585
case TIMER1B: cbi(TCCR1A, COM1B1); break;
8686
#endif
87+
#if defined(TCCR1A) && defined(COM1C1)
88+
case TIMER1C: cbi(TCCR1A, COM1C1); break;
89+
#endif
8790

8891
#if defined(TCCR2) && defined(COM21)
8992
case TIMER2: cbi(TCCR2, COM21); break;

0 commit comments

Comments
 (0)