Перейти к содержанию
    

scmRTOS port Atmega32 bugs

При попытке запусть проект 1-EventFlag для Atmeg32 в main.cpp

AVR GCC ругался тремя ошибками на регистры таймеров.

 

  TCCR1B = (1 << WGM12) | (1 << CS10);    // CTC mode, clk/1
    OCR1A  = 40000U;
    TIMSK1 = (1 << OCIE1A);    // Timer1 OC interrupt enable

    // Start System Timer
    TCCR0B = (1 << CS01) | (1 << CS00);    // clk/64
    TIMSK0 |= (1 << TOIE0);

 

После изменения таким образом ошибки устранены.

 

TCCR1B = (1 << WGM12) | (1 << CS10);    // CTC mode, clk/1
    OCR1A  = 40000U;
    TIMSK = (1 << OCIE1A);    // Timer1 OC interrupt enable

    // Start System Timer
    TCCR0 = (1 << CS01) | (1 << CS00);    // clk/64
    TIMSK |= (1 << TOIE0);

Надеюсь, разработчики учтут исправят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы не назвал это ошибкой порта для AVR и gcc, и даже ошибкой примера — пример сделан под atmega168 про что, впрочем, только вскользь упомянуто в комментариях и строке MCU= в makefile.

После Ваших исправлений компиляция не пойдёт на меге168 или там меге1284 и кто-то другой назовёт это ошибкой :-)

 

Но что-нибудь придумаю, придётся просмотреть распределение битов по регистрам у разных контроллеров и понаделать #ifdef __AVR_atmega32__ и т.п..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы не назвал это ошибкой порта для AVR и gcc, и даже ошибкой примера — пример сделан под atmega168 про что, впрочем, только вскользь упомянуто в комментариях и строке MCU= в makefile.

После Ваших исправлений компиляция не пойдёт на меге168 или там меге1284 и кто-то другой назовёт это ошибкой :-)

 

Но что-нибудь придумаю, придётся просмотреть распределение битов по регистрам у разных контроллеров и понаделать #ifdef __AVR_atmega32__ и т.п..

Не ошибка порта, а компилятор находит ошибки.

Имена и количество периферийных регистров меняются от Атмеги к Атмеге.

Думаю, напрашивается что-то похожее на:

#if defined (__AVR_ATmega32__)
        #define TIMSK1 TIMSK
        #define TIMSK0 TIMSK
                #define TCCR0B TCCR0 
#endif

И надо будет внимамтельно посмотреть на

TIMSK = (1 << OCIE1A);

и

TIMSK |= (1 << TOIE0);

Изменено пользователем flyman

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но что-нибудь придумаю, придётся просмотреть распределение битов по регистрам у разных контроллеров и понаделать #ifdef __AVR_atmega32__ и т.п..
Думаю не стоит засорять пример - достаточно написать, что он под 168. А если человек будет не в состоянии изменить названия регистров/битов под свой кристалл - значит ему рановато знакомиться с ОС.

 

 

Не ошибка порта, а компилятор находит ошибки.
Вы изменили тип процессора в makefile, после чего компилятор начал ругаться. Фактически вы вскрыли прибор и нарушили гарантию ;) До вашего вмешательства все собиралось без ошибок. "А если туда гранату бросить?"

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думаю не стоит засорять пример - достаточно написать, что он под 168. А если человек будет не в состоянии изменить названия регистров/битов под свой кристалл - значит ему рановато знакомиться с ОС.

 

 

Вы изменили тип процессора в makefile, после чего компилятор начал ругаться. Фактически вы вскрыли прибор и нарушили гарантию ;) До вашего вмешательства все собиралось без ошибок. "А если туда гранату бросить?"

я полагаю, хто разрабтчики заинтересованы в популяризации своего продукта, чем больше кристалов поддерживается, тем лучше, чем больше ющеров могут начать работу с с этой ОСРВ.

Наверное, лучше сделать прмечения в документации, что примеры только для Атмега168, а для того, могут работать и на Атмеге32, или другой какой, если сдеать то-то и то-то.

Если для работі с ОСВР ограничивать интелектуальный уровень, то она будет лишь для избранных.

Но мое дело предложить.

Принимать решение держателям кода операционки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я полагаю, хто разрабтчики заинтересованы в популяризации своего продукта,

Разработчики - это люди, которые используют её сами и помогают на добровольных началах всем остальным желающим использовать. Никакой коммерческой выгоды от популяризации продукта не предполагалось и не предполагается.

 

чем больше кристалов поддерживается, тем лучше, чем больше ющеров могут начать работу с с этой ОСРВ.

Т.е. вы предлагаете выложить несколько десятков (сколько там микроконтроллеров Атмел наплодил) почти идентичных примеров, отличающихся только названиями регистров управления периферией (что к коду ОС никак не относится)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. вы предлагаете выложить несколько десятков (сколько там микроконтроллеров Атмел наплодил) почти идентичных примеров, отличающихся только названиями регистров управления периферией (что к коду ОС никак не относится)?

Не обязательно это делать в рамках OS.

Если кто-то надумает такое сотворить, то и пусть, открыть новый проект не трудно - scmRTOS-samples-AVR.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...