flyman 0 17 ноября, 2010 Опубликовано 17 ноября, 2010 · Жалоба При попытке запусть проект 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); Надеюсь, разработчики учтут исправят. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 17 ноября, 2010 Опубликовано 17 ноября, 2010 · Жалоба Я бы не назвал это ошибкой порта для AVR и gcc, и даже ошибкой примера — пример сделан под atmega168 про что, впрочем, только вскользь упомянуто в комментариях и строке MCU= в makefile. После Ваших исправлений компиляция не пойдёт на меге168 или там меге1284 и кто-то другой назовёт это ошибкой :-) Но что-нибудь придумаю, придётся просмотреть распределение битов по регистрам у разных контроллеров и понаделать #ifdef __AVR_atmega32__ и т.п.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flyman 0 17 ноября, 2010 Опубликовано 17 ноября, 2010 (изменено) · Жалоба Я бы не назвал это ошибкой порта для 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); Изменено 17 ноября, 2010 пользователем flyman Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 117 18 ноября, 2010 Опубликовано 18 ноября, 2010 · Жалоба Но что-нибудь придумаю, придётся просмотреть распределение битов по регистрам у разных контроллеров и понаделать #ifdef __AVR_atmega32__ и т.п..Думаю не стоит засорять пример - достаточно написать, что он под 168. А если человек будет не в состоянии изменить названия регистров/битов под свой кристалл - значит ему рановато знакомиться с ОС. Не ошибка порта, а компилятор находит ошибки.Вы изменили тип процессора в makefile, после чего компилятор начал ругаться. Фактически вы вскрыли прибор и нарушили гарантию ;) До вашего вмешательства все собиралось без ошибок. "А если туда гранату бросить?" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
flyman 0 18 ноября, 2010 Опубликовано 18 ноября, 2010 · Жалоба Думаю не стоит засорять пример - достаточно написать, что он под 168. А если человек будет не в состоянии изменить названия регистров/битов под свой кристалл - значит ему рановато знакомиться с ОС. Вы изменили тип процессора в makefile, после чего компилятор начал ругаться. Фактически вы вскрыли прибор и нарушили гарантию ;) До вашего вмешательства все собиралось без ошибок. "А если туда гранату бросить?" я полагаю, хто разрабтчики заинтересованы в популяризации своего продукта, чем больше кристалов поддерживается, тем лучше, чем больше ющеров могут начать работу с с этой ОСРВ. Наверное, лучше сделать прмечения в документации, что примеры только для Атмега168, а для того, могут работать и на Атмеге32, или другой какой, если сдеать то-то и то-то. Если для работі с ОСВР ограничивать интелектуальный уровень, то она будет лишь для избранных. Но мое дело предложить. Принимать решение держателям кода операционки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 31 18 ноября, 2010 Опубликовано 18 ноября, 2010 · Жалоба я полагаю, хто разрабтчики заинтересованы в популяризации своего продукта, Разработчики - это люди, которые используют её сами и помогают на добровольных началах всем остальным желающим использовать. Никакой коммерческой выгоды от популяризации продукта не предполагалось и не предполагается. чем больше кристалов поддерживается, тем лучше, чем больше ющеров могут начать работу с с этой ОСРВ. Т.е. вы предлагаете выложить несколько десятков (сколько там микроконтроллеров Атмел наплодил) почти идентичных примеров, отличающихся только названиями регистров управления периферией (что к коду ОС никак не относится)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spf 0 27 ноября, 2010 Опубликовано 27 ноября, 2010 · Жалоба Т.е. вы предлагаете выложить несколько десятков (сколько там микроконтроллеров Атмел наплодил) почти идентичных примеров, отличающихся только названиями регистров управления периферией (что к коду ОС никак не относится)? Не обязательно это делать в рамках OS. Если кто-то надумает такое сотворить, то и пусть, открыть новый проект не трудно - scmRTOS-samples-AVR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться