Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 06.11.2010, 20:07  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Вопросы от NikMih_1

Сообщение от NikMih_1 Посмотреть сообщение
Вот ведь незадача. Моя коротенькая программка состоит фактически из двух обработчиков прерываний. Функция main.c должна же быть. Как мне её в таком случае оформить?
Код:
int main( void ){
  for(;;);
  return 0;
}
Однако лучше все действия максимально производить ВНЕ обработчиков. Не грузить стеки, не путаться в приоритетах.
Реклама:

Последний раз редактировалось ut1wpr; 06.11.2010 в 20:10.
ut1wpr вне форума  
Сказали "Спасибо" ut1wpr
NikMih_1 (06.11.2010)
Непрочитано 06.11.2010, 20:11  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Вопросы от NikMih_1

Сообщение от NikMih_1 Посмотреть сообщение
Вот ведь незадача. Моя коротенькая программка состоит фактически из двух обработчиков прерываний. Функция main.c должна же быть. Как мне её в таком случае оформить?
main.c это не функция это файл. И он не обязательно должен называться main. Должна быть функция int main(void){}.
realid вне форума  
Сказали "Спасибо" realid
NikMih_1 (06.11.2010)
Непрочитано 07.11.2010, 12:00  
NikMih_1
Гражданин KAZUS.RU
 
Аватар для NikMih_1
 
Регистрация: 25.02.2008
Сообщений: 997
Сказал спасибо: 223
Сказали Спасибо 72 раз(а) в 58 сообщении(ях)
NikMih_1 на пути к лучшему
По умолчанию Re: Вопросы от NikMih_1

Сообщение от realid Посмотреть сообщение
Должна быть функция int main(void){}.
Поскольку все операции программы в данном случае делают обработчики прерываний, могу ли я для формального выполнения этого требования написать в функции
int main(void){} в фигурных скобках бесконечный цикл while(1), фактически для ожидания прерываний ?
__________________
ДА, НО НЕТ!
NikMih_1 вне форума  
Непрочитано 07.11.2010, 12:15  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Вопросы от NikMih_1

Можете, но перед while(1) у вас должна быть инициализация и настройка портов и периферии.
st_1 вне форума  
Непрочитано 07.11.2010, 12:26  
NikMih_1
Гражданин KAZUS.RU
 
Аватар для NikMih_1
 
Регистрация: 25.02.2008
Сообщений: 997
Сказал спасибо: 223
Сказали Спасибо 72 раз(а) в 58 сообщении(ях)
NikMih_1 на пути к лучшему
По умолчанию Re: Вопросы от NikMih_1

Сообщение от st_1 Посмотреть сообщение
Можете, но перед while(1) у вас должна быть инициализация и настройка портов и периферии.
Я это делаю в самом начале, ещё до обработчиков прерываний. Это правильно?
__________________
ДА, НО НЕТ!
NikMih_1 вне форума  
Непрочитано 07.11.2010, 12:31  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Вопросы от NikMih_1

Сообщение от NikMih_1 Посмотреть сообщение
Я это делаю в самом начале, ещё до обработчиков прерываний. Это правильно?
Не понял? Как до обработчиков?
Приведите код. Инициализация аппаратных модулей, портов, прерываний должна быть или в main() или в функции вызываемой из main().
realid вне форума  
Сказали "Спасибо" realid
NikMih_1 (07.11.2010)
Непрочитано 07.11.2010, 12:35  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Вопросы от NikMih_1

Сообщение от NikMih_1 Посмотреть сообщение
Я это делаю в самом начале, ещё до обработчиков прерываний. Это правильно?
Правильно будет посмотреть чужие исходники, примеры к компилятору, заглянуть и почитать

http://www.pic24.ru/doku.php/osa/art...without_errors

http://www.pic24.ru/doku.php/osa/art...e_for_chainiks

http://www.pic24.ru/doku.php/osa/articles/modules
st_1 вне форума  
Непрочитано 07.11.2010, 12:37  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Вопросы от NikMih_1

Сообщение от NikMih_1 Посмотреть сообщение
Я это делаю в самом начале, ещё до обработчиков прерываний. Это правильно?
В программе на Си порядок выполнения программы и порядок следования в исходнике не имеют ничего общего. После старта управление передается функции main и если она у Вас будет пустой, то ничего делаться не будет. Если Вы описали настройку периферии отдельной функцией, то как минимум перед while(1) должен быть вызов этой функции. Ну и разрешение прерываний, если это необходимо, а при пустом цикле while(1) это очевидно так и есть.
kison вне форума  
Непрочитано 07.11.2010, 16:11  
NikMih_1
Гражданин KAZUS.RU
 
Аватар для NikMih_1
 
Регистрация: 25.02.2008
Сообщений: 997
Сказал спасибо: 223
Сказали Спасибо 72 раз(а) в 58 сообщении(ях)
NikMih_1 на пути к лучшему
По умолчанию Re: Вопросы от NikMih_1

Сообщение от realid Посмотреть сообщение
Не понял? Как до обработчиков?
Приведите код. Инициализация аппаратных модулей, портов, прерываний должна быть или в main() или в функции вызываемой из main().
А зачем приводить, если Вы мне уже всё объяснили? Лучше гляньте скриншоты, всё ещё каша в голове с частотами после делителей. С таймерами всё ясно, они считают циклы Tcy, а что считают prescalers? Fosc или Fosc/2=Tcy
Вложения:
Тип файла: doc Деление частоты.doc (519.0 Кб, 48 просмотров)
__________________
ДА, НО НЕТ!
NikMih_1 вне форума  
Непрочитано 07.11.2010, 16:25  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Вопросы от NikMih_1

Сообщение от NikMih_1 Посмотреть сообщение
А зачем приводить, если Вы мне уже всё объяснили? Лучше гляньте скриншоты, всё ещё каша в голове с частотами после делителей. С таймерами всё ясно, они считают циклы Tcy, а что считают prescalers? Fosc или Fosc/2=Tcy
Fosc/2=Tcy, если от системного тактового генератора.
realid вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по PROTEUS-у Advanced_LAMER Proteus 372 19.09.2021 01:20
Вопросы ENC28J60 CERGEI1982 Микроконтроллеры, АЦП, память и т.д 123 02.04.2018 22:30
Wiznet W7100. Общие вопросы R_N Микроконтроллеры, АЦП, память и т.д 7 06.06.2012 00:33
Вопросы по AVR-LIBС rear Микроконтроллеры, АЦП, память и т.д 5 08.10.2010 19:38
Вопросы об управлении MOSFET'ами в стабах Vadeg Электроника - это просто 14 19.12.2009 23:21


Часовой пояс GMT +4, время: 03:09.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot