Skip to content

Commit e254d29

Browse files
committed
LEDs for D13, TX, and RX are more in line with Uno-like behavior during sketch uploading.
D13 flashes on reboot, TX and RX flash with USB data transfer.
1 parent c149be2 commit e254d29

File tree

4 files changed

+101
-89
lines changed

4 files changed

+101
-89
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
:1078000011241FBECFEFDAE0DEBFCDBFD0C04101F3
1+
:1078000011241FBECFEFDAE0DEBFCDBFBAC0410109
22
:1078100042144505560455026403740300001E9586
33
:1078200087020110030000C18081C106C0FF0A0069
44
:107830000CA10185037508150026FF00954009017C
@@ -13,87 +13,86 @@
1313
:1078C000040100020A000000070502024000000750
1414
:1078D00005830240000009040200010300000009C2
1515
:1078E0002101010001221E00070584034000400021
16-
:1078F00020918A0130918B012F5F3F4F30938B0194
17-
:1079000020938A01832F9927982F87FD9095990FAF
18-
:10791000921710F447980895479A089581E080934C
19-
:10792000E0001092E200EE27FF27099408950F93DC
20-
:107930001F93CF93DF93982FEB01042F10E088E77C
21-
:107940006030780730F411E083E0FB01809357004A
22-
:10795000E895892F68E071E0402FD8D0112311F10C
23-
:1079600007B600FCFDCF402F4695FE01A8E0B1E030
24-
:1079700020E031E009C08D919D910C0130935700BA
25-
:10798000E895112432962F5F2417A8F385E0FE01B5
26-
:1079900080935700E89507B600FCFDCF81E1809306
27-
:1079A0005700E895DF91CF911F910F9108953F9A6D
28-
:1079B000209A6E9A90E8909361001092610081E89D
29-
:1079C00085BF95BF8AD084E18093880180E1809350
30-
:1079D0008901E0E0F0E0859194918F5F9F4F19F06D
31-
:1079E00081E080938D01EE24FF24DD24D394D5D152
32-
:1079F000082F8EE098E7FC0124913196029644917D
33-
:107A0000201711F02223B9F710928F0110928E01E6
34-
:107A100082E068E071E07AD0013479F46091080185
35-
:107A20006058633028F0683111F064E001C063E011
36-
:107A3000C62FD0E0CF5DD7480EC0063571F48091D7
37-
:107A40000801803311F011E022C080910A01C82F93
38-
:107A5000D0E0C25ED74811E022C0053721F413E020
39-
:107A6000CEE1D8E71CC0053539F4E0900801F0906C
40-
:107A70000901EE0CFF1C0AC0043631F482E0B701A4
41-
:107A80004091090154DF02C0043721F010E0C5E243
42-
:107A9000D8E705C010910901E701E10EF11C7DD185
43-
:107AA0008097B1F483E068E871E041E050E044D0B1
44-
:107AB000112329F0412F50E083E8BE013DD083E43B
45-
:107AC00069E871E041E050E037D0013509F08FCF2F
46-
:107AD000D0928D01EE24FF248ACF10928F01109254
47-
:107AE0008E0110928C0110928D0181E08093D7005D
48-
:107AF00080EA8093D80082E189BD09B400FEFDCF01
49-
:107B000080E98093D8001092E0000895FB018093F3
50-
:107B1000E9009BE60EC08091E80085FFFCCF8091D4
51-
:107B2000F10081938091E80085FD02C09093E80008
52-
:107B30004150442381F70895982FFB01282F20728C
53-
:107B400087708093E9003AE314C08091E80085FFD4
54-
:107B5000FCCF97FF02C0849101C080813196211132
55-
:107B600080E08093F1008091E80085FD02C03093B1
56-
:107B7000E800415050408FEF4F3F580731F796FFD4
57-
:107B800003C08AE38093E8000895809191018132D7
58-
:107B900079F420E030E003C080818093F100F901A6
59-
:107BA000E050FF4F2F5F3F4F28303105A9F71EC02F
60-
:107BB0008032B1F48091E80082FFFCCF20E030E019
61-
:107BC00003C08091F1008083F901E050FF4F2F5FE7
62-
:107BD0003F4F28303105A9F78BEF8093E80006C0AE
63-
:107BE000823221F4809192018093070181E008950F
64-
:107BF00020919301223231F1213081F4809196015C
65-
:107C000090919701089711F4209398018091980121
66-
:107C1000882309F03AC0E9E7F8E739C0223021F4B7
67-
:107C200084E6EBE8F8E711C0233069F58091920112
68-
:107C3000882319F4E9E4F8E72AC0813021F5EDE45E
69-
:107C4000F8E725C081E0EBE2F8E790919601282F54
70-
:107C5000981708F4292F90E03EEF8091E800857096
71-
:107C6000E1F38091E80082FD0EC09F5F84918093D4
72-
:107C7000F100892F8F7311F43093E8003196921739
73-
:107C800060F381E0089580E00895E7E6F8E78491E5
74-
:107C9000DCCF1092E9008091E80083FF5FC0E0E94B
75-
:107CA000F1E003C08091F100819381E0E839F807A9
76-
:107CB000C9F782EF8093E8008091900187FF05C0AB
77-
:107CC0008091E80080FFFCCF03C08EEF8093E80036
78-
:107CD00080919101853051F48091E80080FFFCCFC4
79-
:107CE0008091920180688093E30031C08930E1F493
80-
:107CF0008091920180938C01E7E2F8E791E031E016
81-
:107D000026E39093E9003093EB0084918093EC009C
82-
:107D10002093ED009F5F3196953099F78EE7809321
83-
:107D2000EA001092EA0013C0883029F480918C0197
84-
:107D30008093F1000CC0882319F41092F10007C061
85-
:107D4000863011F455DF01C020DF882321F08EEF4B
86-
:107D50008093E800089581E28093EB00089580917C
87-
:107D6000E1001092E100282F83FF0CC01092E9007F
88-
:107D700081E08093EB001092EC0082E38093ED00B1
89-
:107D800010928C0122FF08C080918D01882321F47C
90-
:107D900010928F0110928E0108951F9312E079DFE7
91-
:107DA000DEDF1093E9008091E80085FF0DC090911F
92-
:107DB000F1008091E80085FD03C08BE68093E80028
93-
:107DC000892F90E01F91089584E6000000000000D4
94-
:107DD00000008150D1F780918E0190918F01019721
95-
:107DE00090938F0180938E0180918E0190918F01ED
96-
:0A7DF000892B09F493DD7CDDD2CF6E
97-
:087DFA0000E1000000000000A0
16+
:1078F00081E08093E0001092E200EE27FF270994D8
17+
:1079000008950F931F93CF93DF93982FEB01042FCC
18+
:1079100010E088E76030780730F411E083E0FB0185
19+
:1079200080935700E895892F68E071E0402FDBD005
20+
:10793000112311F107B600FCFDCF402F4695FE0143
21+
:10794000A8E0B1E020E031E009C08D919D910C01EB
22+
:1079500030935700E895112432962F5F2417A8F32F
23+
:1079600085E0FE0180935700E89507B600FCFDCF47
24+
:1079700081E180935700E895DF91CF911F910F919E
25+
:107980000895769A289A47983F9A209A6E9A90E896
26+
:10799000909361001092610081E885BF95BF8AD005
27+
:1079A00084E18093880180E180938901E0E0F0E048
28+
:1079B000859194918F5F9F4F19F081E080938B01A7
29+
:1079C000EE24FF24DD24D394DDD1082F8EE098E748
30+
:1079D000FC012491319602964491201711F0222344
31+
:1079E000B9F710928D0110928C0182E068E071E08D
32+
:1079F0007AD0013479F4609108016058633028F03E
33+
:107A0000683111F064E001C063E0C62FD0E0CF5DC3
34+
:107A1000D7480EC0063571F480910801803311F00B
35+
:107A200011E022C080910A01C82FD0E0C25ED74881
36+
:107A300011E022C0053721F413E0CEE1D8E71CC0E5
37+
:107A4000053539F4E0900801F0900901EE0CFF1CB7
38+
:107A50000AC0043631F482E0B7014091090151DFD8
39+
:107A600002C0043721F010E0C5E2D8E705C010914C
40+
:107A70000901E701E10EF11C85D18097B1F483E0A3
41+
:107A800068E871E041E050E045D0112329F0412F32
42+
:107A900050E083E8BE013ED083E469E871E041E054
43+
:107AA00050E038D0013509F08FCFD0928B01EE2411
44+
:107AB000FF248ACF10928D0110928C0110928A01BE
45+
:107AC00010928B0181E08093D70080EA8093D800E8
46+
:107AD00082E189BD09B400FEFDCF80E98093D80022
47+
:107AE0001092E0000895FB018093E9009BE60FC02F
48+
:107AF0008091E80085FFFCCF28988091F100819368
49+
:107B00008091E80085FD02C09093E8004150442335
50+
:107B100079F70895982FFB01282F207287708093A2
51+
:107B2000E9003AE315C08091E80085FFFCCF97FF9C
52+
:107B300002C0849101C080813196211180E0769845
53+
:107B40008093F1008091E80085FD02C03093E80049
54+
:107B5000415050408FEF4F3F580729F796FF03C021
55+
:107B60008AE38093E800089580918F01813281F447
56+
:107B7000769820E030E003C080818093F100F90125
57+
:107B8000E050FF4F2F5F3F4F28303105A9F71FC04E
58+
:107B90008032B9F48091E80082FFFCCF289820E081
59+
:107BA00030E003C08091F1008083F901E050FF4F85
60+
:107BB0002F5F3F4F28303105A9F78BEF8093E80006
61+
:107BC00006C0823221F4809190018093070181E008
62+
:107BD000089520919101223231F1213081F4809178
63+
:107BE000940190919501089711F42093960180914A
64+
:107BF0009601882309F03BC0E9E7F8E73AC0223054
65+
:107C000021F484E6EBE8F8E711C0233071F58091A8
66+
:107C10009001882319F4E9E4F8E72BC0813029F5B5
67+
:107C2000EDE4F8E726C081E0EBE2F8E790919401FB
68+
:107C3000282F981708F4292F90E03EEF8091E80054
69+
:107C40008570E1F38091E80082FD0FC09F5F849111
70+
:107C500076988093F100892F8F7311F43093E800A8
71+
:107C60003196921758F381E0089580E00895E7E691
72+
:107C7000F8E78491DBCF1092E9008091E80083FF60
73+
:107C800062C02898EEE8F1E003C08091F100819392
74+
:107C900081E0E639F807C9F782EF8093E800809128
75+
:107CA0008E0187FF05C08091E80080FFFCCF03C0F4
76+
:107CB0008EEF8093E80080918F01853051F48091A0
77+
:107CC000E80080FFFCCF8091900180688093E30002
78+
:107CD00033C08930E1F48091900180938A01E7E21A
79+
:107CE000F8E791E031E026E39093E9003093EB0070
80+
:107CF00084918093EC002093ED009F5F3196953046
81+
:107D000099F78EE78093EA001092EA0015C0883058
82+
:107D100031F480918A0176988093F1000DC0882318
83+
:107D200021F476981092F10007C0863011F451DFEB
84+
:107D300001C01ADF882321F08EEF8093E8000895B8
85+
:107D400081E28093EB0008958091E1001092E100C0
86+
:107D5000282F83FF0CC01092E90081E08093EB0094
87+
:107D60001092EC0082E38093ED0010928A0122FFD2
88+
:107D700008C080918B01882321F410928D0110920C
89+
:107D80008C0108951F9312E076DFDEDF1093E90087
90+
:107D90008091E80085FF0EC028989091F1008091B5
91+
:107DA000E80085FD03C08BE68093E800892F90E012
92+
:107DB0001F91089584E6000000000000000081503B
93+
:107DC000D1F7289A769A80918C0190918D01019734
94+
:107DD00090938D0180938C0180918C0190918D0105
95+
:0C7DE000892B91F6769A289A83DDCECF8D
96+
:087DEC0000E1000000000000AE
9897
:040000030000780081
9998
:00000001FF

hardware/arduino/bootloaders/diskloader/src/DiskLoader.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ int main(void) __attribute__ ((naked));
119119
// STK500v1 main loop, very similar to optiboot in protocol and implementation
120120
int main()
121121
{
122+
TXLED0;
123+
RXLED0;
124+
LED0;
122125
BOARD_INIT();
123126
USBInit();
124127

@@ -236,6 +239,7 @@ void LEDPulse()
236239

237240
void Reboot()
238241
{
242+
/* TODO - ZE - this should probably be a WDT reset instead, right? */
239243
UDCON = 1; // Detatch USB
240244
UDIEN = 0;
241245
asm volatile ( // Reset vector to run firmware

hardware/arduino/bootloaders/diskloader/src/Platform.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ typedef unsigned long u32;
3333
#define BOARD_INIT() DDRC |= (1<<7); DDRB |= (1<<0); DDRE |= (1<<6); CPU_PRESCALE(0); DISABLE_JTAG();
3434
#define LED0 PORTC &= ~(1<<7)
3535
#define LED1 PORTC |= (1<<7)
36-
#define TXLED0 PORTE &= ~(1<<6)
37-
#define TXLED1 PORTE |= (1<<6)
38-
#define RXLED0 PORTB &= ~(1<<0)
39-
#define RXLED1 PORTB |= (1<<0)
36+
#define TXLED0 PORTE |= (1<<6)
37+
#define TXLED1 PORTE &= ~(1<<6)
38+
#define RXLED0 PORTB |= (1<<0)
39+
#define RXLED1 PORTB &= ~(1<<0)
4040

4141
#define TRANSFER_PGM 0x80
4242
#define TRANSFER_RELEASE 0x40

hardware/arduino/bootloaders/diskloader/src/USBCore.cpp

+11-2
Original file line numberDiff line numberDiff line change
@@ -86,23 +86,27 @@ static inline void ClearOUT(void)
8686
static
8787
void Send(volatile const u8* data, u8 count)
8888
{
89+
TXLED1; // light the TX LED
8990
while (count--)
9091
UEDATX = *data++;
9192
}
9293

9394
void Recv(volatile u8* data, u8 count)
9495
{
96+
RXLED1; // light the RX LED
9597
while (count--)
9698
*data++ = UEDATX;
9799
}
98100

99101
static inline u8 Recv8()
100102
{
103+
RXLED1; // light the RX LED
101104
return UEDATX;
102105
}
103106

104107
static inline void Send8(u8 d)
105108
{
109+
TXLED1; // light the TX LED
106110
UEDATX = d;
107111
}
108112

@@ -506,12 +510,17 @@ int USBGetChar()
506510
u8 temp = 0;
507511
for (temp=100; temp; temp--)
508512
asm volatile("nop\n\t" "nop\n\t" "nop\n\t" "nop\n\t"::);
513+
RXLED0; // we turn the RX and TX LEDs on in the relevant Send or Recv instruction
514+
TXLED0; // we turn them off here after some time has passed to ensure a minimum on time.
509515
}
510516

511-
if (!--_timeout)
517+
if (!--_timeout) {
518+
TXLED0; // switch off the RX and TX LEDs before starting the user sketch
519+
RXLED0;
512520
Reboot(); // USB not connected, run firmware
521+
}
513522

514-
LEDPulse();
523+
// LEDPulse();
515524
}
516525
return -1;
517526
}

0 commit comments

Comments
 (0)