Обсуждаем контроллеры компании Atmel.
Ответить

Компиляция для ATtiny4313 и ATmega8

Вт июн 05, 2018 15:15:59

Добрый день, уважаемые форумчане. Подскажите по такому вопросу. Есть девайс, управляет автоматикой гелиосистемы (4 датчика DS1820, два насоса, индикация на семисегментном индикаторе). В первой реализации был установлен микроконтроллерATtiny2313, но памяти уже не хватало. чтобы не переделывать плату, было принято решение заменить микроконтроллер на ATtiny4313. Но возникла одна проблема. Так как девайс уже установлен на объекте, все изменения нужно как-то проверить, а уже потом на месте прошивать. Но для проверки прошивки в Proteus модели ATtiny4313 нет, поэтому есть мысль сделать директивы условной компиляции, допустим в начале выбор целевого микроконтроллера и дефайны по используемым регистрам. Чтобы изменением одной строчки можно было компилировать либо под ATmega8 либо под ATtiny4313. Как добавить в Proteus больше памяти на основе ATtiny2313 не знаю. Если можно какой-то простой пример, чтобы на его основе сделать условную компиляцию.

Re: Компиляция для ATtiny4313 и ATmega8

Чт июн 07, 2018 15:34:36

Вроде немного разобрался, теперь хотелось бы немного оптимизировать

сделал такую конструкцию

#define _ATtiny4313_
//#define _ATmega8_

.....

    #ifdef _ATtiny4313_
      TCCR0B |= (1 << CS02) | (0 << CS01) | (0 << CS00); //установка предделителя в TCCR0 (делитель 256)
    #endif 

    #ifdef _ATmega8_
      TCCR0 |= (1 << CS02) | (1 << CS01) | (0 << CS00); //установка предделителя в TCCR0 (делитель 256)    
    #endif

Чувствую что немного неправильно, я в настройках компилятора (AVRStudio 4.19) указываю целевой микроконтроллер. Поэтому первые две строки нужно заменить каким-то выражением, которое подставляло правильный микроконтроллер, чтобы не править руками первые две строки

Re: Компиляция для ATtiny4313 и ATmega8

Пт июн 08, 2018 14:25:30

Вот докумекал и немного подсказали, если ком то интересно
#if defined (__AVR_ATtiny2313__)
...
#elif defined (__AVR_ATtiny4313__)
...
#elif defined (__AVR_ATmega8__)
...
#else
# warning "device type not defined"
#endif
Ответить