реклама на сайте
подробности

 
 
> scmRTOS port Atmega32 bugs, Ошибки в примерах scmRTOS для AVR GCC под ATmega32
flyman
сообщение Nov 17 2010, 21:49
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 5-11-07
Пользователь №: 32 066



При попытке запусть проект 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);

Надеюсь, разработчики учтут исправят.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ReAl
сообщение Nov 17 2010, 22:07
Сообщение #2


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Я бы не назвал это ошибкой порта для AVR и gcc, и даже ошибкой примера — пример сделан под atmega168 про что, впрочем, только вскользь упомянуто в комментариях и строке MCU= в makefile.
После Ваших исправлений компиляция не пойдёт на меге168 или там меге1284 и кто-то другой назовёт это ошибкой :-)

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


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 18 2010, 00:44
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (ReAl @ Nov 18 2010, 00:07) *
Но что-нибудь придумаю, придётся просмотреть распределение битов по регистрам у разных контроллеров и понаделать #ifdef __AVR_atmega32__ и т.п..
Думаю не стоит засорять пример - достаточно написать, что он под 168. А если человек будет не в состоянии изменить названия регистров/битов под свой кристалл - значит ему рановато знакомиться с ОС.


QUOTE (flyman @ Nov 18 2010, 00:53) *
Не ошибка порта, а компилятор находит ошибки.
Вы изменили тип процессора в makefile, после чего компилятор начал ругаться. Фактически вы вскрыли прибор и нарушили гарантию wink.gif До вашего вмешательства все собиралось без ошибок. "А если туда гранату бросить?"


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 06:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01406 секунд с 7
ELECTRONIX ©2004-2016