Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.11.2010, 20:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от NikMih_1
|
Вот ведь незадача. Моя коротенькая программка состоит фактически из двух обработчиков прерываний. Функция main.c должна же быть. Как мне её в таком случае оформить?
|
Код:
|
int main( void ){
for(;;);
return 0;
} |
Однако лучше все действия максимально производить ВНЕ обработчиков. Не грузить стеки, не путаться в приоритетах.
Последний раз редактировалось ut1wpr; 06.11.2010 в 20:10.
|
|
|
|
06.11.2010, 20:11
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от NikMih_1
|
Вот ведь незадача. Моя коротенькая программка состоит фактически из двух обработчиков прерываний. Функция main.c должна же быть. Как мне её в таком случае оформить?
|
main.c это не функция это файл. И он не обязательно должен называться main. Должна быть функция int main(void){}.
|
|
|
|
07.11.2010, 12:00
|
|
Гражданин KAZUS.RU
Регистрация: 25.02.2008
Сообщений: 997
Сказал спасибо: 223
Сказали Спасибо 72 раз(а) в 58 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от realid
|
Должна быть функция int main(void){}.
|
Поскольку все операции программы в данном случае делают обработчики прерываний, могу ли я для формального выполнения этого требования написать в функции
int main(void){} в фигурных скобках бесконечный цикл while(1), фактически для ожидания прерываний ?
__________________
ДА, НО НЕТ!
|
|
|
|
07.11.2010, 12:15
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Вопросы от NikMih_1
Можете, но перед while(1) у вас должна быть инициализация и настройка портов и периферии.
|
|
|
|
07.11.2010, 12:26
|
|
Гражданин KAZUS.RU
Регистрация: 25.02.2008
Сообщений: 997
Сказал спасибо: 223
Сказали Спасибо 72 раз(а) в 58 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от st_1
|
Можете, но перед while(1) у вас должна быть инициализация и настройка портов и периферии.
|
Я это делаю в самом начале, ещё до обработчиков прерываний. Это правильно?
__________________
ДА, НО НЕТ!
|
|
|
|
07.11.2010, 12:31
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от NikMih_1
|
Я это делаю в самом начале, ещё до обработчиков прерываний. Это правильно?
|
Не понял? Как до обработчиков?
Приведите код. Инициализация аппаратных модулей, портов, прерываний должна быть или в main() или в функции вызываемой из main().
|
|
|
|
07.11.2010, 12:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от NikMih_1
|
Я это делаю в самом начале, ещё до обработчиков прерываний. Это правильно?
|
В программе на Си порядок выполнения программы и порядок следования в исходнике не имеют ничего общего. После старта управление передается функции main и если она у Вас будет пустой, то ничего делаться не будет. Если Вы описали настройку периферии отдельной функцией, то как минимум перед while(1) должен быть вызов этой функции. Ну и разрешение прерываний, если это необходимо, а при пустом цикле while(1) это очевидно так и есть.
|
|
|
|
07.11.2010, 16:11
|
|
Гражданин KAZUS.RU
Регистрация: 25.02.2008
Сообщений: 997
Сказал спасибо: 223
Сказали Спасибо 72 раз(а) в 58 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от realid
|
Не понял? Как до обработчиков?
Приведите код. Инициализация аппаратных модулей, портов, прерываний должна быть или в main() или в функции вызываемой из main().
|
А зачем приводить, если Вы мне уже всё объяснили? Лучше гляньте скриншоты, всё ещё каша в голове с частотами после делителей. С таймерами всё ясно, они считают циклы Tcy, а что считают prescalers? Fosc или Fosc/2=Tcy
__________________
ДА, НО НЕТ!
|
|
|
|
07.11.2010, 16:25
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Вопросы от NikMih_1
Сообщение от NikMih_1
|
А зачем приводить, если Вы мне уже всё объяснили? Лучше гляньте скриншоты, всё ещё каша в голове с частотами после делителей. С таймерами всё ясно, они считают циклы Tcy, а что считают prescalers? Fosc или Fosc/2=Tcy
|
Fosc/2=Tcy, если от системного тактового генератора.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:09.
|
|