Не компилируется программа под atmega8

Skaf
Offline
Зарегистрирован: 20.12.2015

Добрый день.

Делаю устройство на atmega8. 

Для этого создал в arduino 1.6.7 в файле boards.txt свой раздел с описанием своей системы, а именно



a8noboot_8MHz.mcu=atmega8
a8noboot_8MHz.name=ATmega8 (no boot 8 MHz int)

a8noboot_8MHz.upload.maximum_size=7168
a8noboot_8MHz.upload.maximum_data_size=1024
a8noboot_8MHz.upload.tool=avrdude

a8noboot_8MHz.bootloader.low_fuses=0xa4
a8noboot_8MHz.bootloader.high_fuses=0xdc

a8noboot_8MHz.build.board=MyBoard
a8noboot_8MHz.build.mcu=atmega8
a8noboot_8MHz.build.f_cpu=8000000L
a8noboot_8MHz.build.core=arduino
a8noboot_8MHz.build.variant=standard

Тактирование от внутреннего генератора на 8 мгц.

 

Программа включает в себя FreeRTOS. При компиляции выпадает ошибка 

C:\Users\rcdimon2\Documents\Arduino\libraries\FreeRTOS_AVR\src\utility\port.c: In function 'prvSetupTimerInterrupt':

C:\Users\rcdimon2\Documents\Arduino\libraries\FreeRTOS_AVR\src\utility\port.c:529:3: error: 'OCR0A' undeclared (first use in this function)

   OCR0A = 1;

   ^

C:\Users\rcdimon2\Documents\Arduino\libraries\FreeRTOS_AVR\src\utility\port.c:529:3: note: each undeclared identifier is reported only once for each function it appears in

C:\Users\rcdimon2\Documents\Arduino\libraries\FreeRTOS_AVR\src\utility\port.c:530:3: error: 'TIMSK0' undeclared (first use in this function)

   TIMSK0  |= (1 << OCIE0A);

   ^

C:\Users\rcdimon2\Documents\Arduino\libraries\FreeRTOS_AVR\src\utility\port.c:530:20: error: 'OCIE0A' undeclared (first use in this function)

   TIMSK0  |= (1 << OCIE0A);

                    ^

exit status 1
Ошибка компиляции.

В atmega8 нет таких регистров действительно.

 

Если я выберу в качестве платформы не свою, а Arduino NG (тоже на atmega8) то программа успешно компилируется. Из чего я делаю вывод, что проблема в описании моей платформы, но я никак не могу понять где она...

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Skaf, в хорошо поставленном вопросе содержится 90% ответа. Думаю это ваш случай :) Вы уже сделали вывод что таких регистров нет, так в чём смысл дальше впихивать во вневпихуемое? И кстати NG был на двух мк 168 и 8, так что вполне может скомпилиться для 168.

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

Skaf пишет:

Из чего я делаю вывод, что проблема в описании моей платформы, но я никак не могу понять где она...

нет - проблема в описании Arduino NG or older

##############################################################

atmegang.name=Arduino NG or older

atmegang.upload.tool=avrdude
atmegang.upload.protocol=arduino
atmegang.upload.speed=19200

atmegang.bootloader.tool=avrdude
atmegang.bootloader.unlock_bits=0x3F
atmegang.bootloader.lock_bits=0x0F

atmegang.build.mcu=atmegang
atmegang.build.f_cpu=16000000L
atmegang.build.board=AVR_NG
atmegang.build.core=arduino
atmegang.build.variant=standard

## Arduino NG or older w/ ATmega168
## --------------------------------
atmegang.menu.cpu.atmega168=ATmega168

atmegang.menu.cpu.atmega168.upload.maximum_size=14336
atmegang.menu.cpu.atmega168.upload.maximum_data_size=1024

atmegang.menu.cpu.atmega168.bootloader.low_fuses=0xff
atmegang.menu.cpu.atmega168.bootloader.high_fuses=0xdd
atmegang.menu.cpu.atmega168.bootloader.extended_fuses=0x00
atmegang.menu.cpu.atmega168.bootloader.file=atmega/ATmegaBOOT_168_ng.hex

atmegang.menu.cpu.atmega168.build.mcu=atmega168

## Arduino NG or older w/ ATmega8
## ------------------------------
atmegang.menu.cpu.atmega8=ATmega8

atmegang.menu.cpu.atmega8.upload.maximum_size=7168
atmegang.menu.cpu.atmega8.upload.maximum_data_size=1024

atmegang.menu.cpu.atmega8.bootloader.low_fuses=0xdf
atmegang.menu.cpu.atmega8.bootloader.high_fuses=0xca
atmegang.menu.cpu.atmega8.bootloader.file=atmega8/ATmegaBOOT-prod-firmware-2009-11-07.hex

atmegang.menu.cpu.atmega8.build.mcu=atmega8

##############################################################

 

Skaf
Offline
Зарегистрирован: 20.12.2015

Да действительно. Под NG с atmega8 не компилируется тоже. Действительно дело в том, что под мегу8 этот код не расчитан и дело именно в самом коде FreeRTOS, а не настроек среды. Прошу прощения за беспокойство.