Why does Arduino has both USB and ICSP?

Both of them are used to program the microcontroller. But why include both?

(deleted)

instard:
Both of them are used to program the microcontroller. But why include both?

ICSP is the hardware way of programming, nad it can reflash bootloader when it is corrupt.

instard:
Both of them are used to program the microcontroller. But why include both?

Because that is precisely what makes it useful to people. :roll_eyes:

USB permits direct interface to modern (contemporary) computers.

ICSP allows it to be programmed without a bootloader, which makes it boot virtually immediately (tenth of a second) and allows that last skerrick of code space to be utilised.

USB can be used when your computer can work with it. ICSP can be used to:

load in a new bootloader

example: turning a Duemilanove into an "UNO"

load a sketch without a bootloader at all

example: programming an ATTiny85

when the bootloader sucks, you can program the card anyways

example: program an ATMega32u4 card when the bootloader refuses to cooperate