现在,我想回头来理解马克茨失败的原因。 我先通过<代码>avr-gcc和avrdude
的文件,认为我已将这个问题缩小到我写给的记忆区。 样本C项目Im与以下项目合作:
int main(void)
{
// set the data direction for the pin connected to
// onboard LED
DDRB |= _BV(DDB5);
PORTB |= _BV(PORTB5);
// no-op loop
while (1) ;;
// keep compiler happy
return 0;
}
该方案是有意简单的;它只是转而列入《伦敦发展权利宣言》,并保留。 此时此刻,用以下文字进行点火:
AVRFLAGS = -F -v -p m328p -c arduino -P /dev/ttyACM0 -U flash:w:blink.hex
default: blink.elf
avr-objcopy -O ihex blink.elf blink.hex
blink.o:
avr-gcc -g -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o blink.o blink.c
blink.elf: blink.o
avr-gcc -o blink.elf blink.o
flash:
sudo avrdude ${AVRFLAGS} blink.hex
clean:
rm -rf *.o *.hex *.elf
ISR (TIMER1_COMPA_vect)
{
PORTB ^= _BV(PORTB5);
}
一切的爆发和尝试都会打破。 我曾试图这样做,同时没有《时间表/承诺1》的制定法(为示范目的而在此加以修改),而且不认为这影响到闪电的成功。 我利用了这一准确的ISR——和时间/目标1的准确相同的固定代码——在其他仅进行罚款的方案中,提供了使用Arduino IDE 内在工具的闪电;否则,它接收数据的Arduino Uno blinks, 然后,在LED上开始闪电并保持闪光。 每当任何方案都很少爆发时,这种突发事件就呈现出完全相同的模式。 I ve edited with -j .text -j .data
, .eeprom
, and other options, but to no effect.
我只想知道为什么失败了。