12.03.2016, 16:55
|
#1761
|
Частый гость
Регистрация: 25.08.2006
Сообщений: 18
Сказал спасибо: 24
Сказали Спасибо 5 раз(а) в 3 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Таймер WDT использовать побывал, проблему не решил.
#include ‹18F458.h›
#device ADC=10
#device ICD=TRUE
#fuses HS,WDT,NOPROTECT,BROWNOUT
#use delay(crystal=20000000,restart_wdt)
Последний раз редактировалось katalianin; 12.03.2016 в 23:12.
Причина: Сейчас устойчиво работает, но первое включение по моему подвис
|
|
|
|
13.03.2016, 00:47
|
#1762
|
Частый гость
Регистрация: 25.08.2006
Сообщений: 18
Сказал спасибо: 24
Сказали Спасибо 5 раз(а) в 3 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Работать может и пол часа потом всё равно виснет....
|
|
|
|
13.03.2016, 14:41
|
#1763
|
Вид на жительство
Регистрация: 12.12.2012
Сообщений: 368
Сказал спасибо: 31
Сказали Спасибо 204 раз(а) в 112 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Навскидку.
-Один раз поставил 2.2к с MCLR не захотело стартовать даже с WDT.
Проверьте.
- На критические места чтения чего либо или ожидания уровня низкого(высокого) запускайте таймер с назначеным временем для выхода из аварийного цикла.
-Заведите светодиод При входе в одну из процедур зажигается, при выходе гаснет.У меня программа останавливалась(Месяц!!! искал) cделал с бипером.
Считай Морзянкой сообщала где повисла. И вот в один из дней остановилась обойдя все ловушки. Я был очень удивлён так как это казалось невозможным в той ветви алгоритма. 0.1мкф на входе и как рукой сняло.
-Пользуюсь этим способом всегда. В модеме (два поста назад) произвожу чтение и запускаю аварийный таймер, иначе вис раз в 15-30 минут.
|
|
|
|
14.03.2016, 01:22
|
#1764
|
Частый гость
Регистрация: 11.10.2015
Сообщений: 40
Сказал спасибо: 12
Сказали Спасибо 169 раз(а) в 27 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
katalianin, игрался с таким датчиком, прикольная штука, делал измерение периода на Timer1 в режиме Gate по высокому уровню, на CCP были мысли, но с таймером показалось проще, выход датчика был подключен на T1G и INT0_H2L, в результате при возникновении прерывания по фронту в таймере лежал результат намеренного, странно что в 18F458 нету этого режима. Проблем с таким вариантом не было. Завтра пробну на CCP, если интересно, могу скинуть результат.
|
|
|
|
14.03.2016, 21:55
|
#1765
|
Частый гость
Регистрация: 25.08.2006
Сообщений: 18
Сказал спасибо: 24
Сказали Спасибо 5 раз(а) в 3 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Я с примером где Timer1 тоже поигрался
while(input(echo)!=1); Зацикливание получается
set_timer1(0);
Камень древний валялся 18F458 из-за дип корпуса на нём сделал. я тоже задумываюсь на pic16f88 сделать надо их поискать. С ними я таких проблем и не помню чтоб были. Пример с INT0_H2L это интересный ход мысли, выложи посмотреть реализацию.
|
|
|
|
18.03.2016, 20:13
|
#1766
|
Частый гость
Регистрация: 11.10.2015
Сообщений: 40
Сказал спасибо: 12
Сказали Спасибо 169 раз(а) в 27 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
таки дошли рученки шаловливые до дальномера этого.
Времени особо не было заниматься им, так что поэтому получилось так долго.
В проекте лежит схема, протеусная модель, исходник.
По поводу внешнего прерывания, был не прав, сделано без его использования, видимо что то перепутал, оно там вообще не нужно.
Прога полностью сделана на прерываниях, то есть нигде ничего не вешается, никто ни кого не ждет и не виснет. Вопросы в студию.
https://cloud.mail.ru/public/6iuA/wZ2JEBmHy
|
|
|
Сказали "Спасибо" wolfeldt
|
|
|
19.03.2016, 12:19
|
#1767
|
Вид на жительство
Регистрация: 12.12.2012
Сообщений: 368
Сказал спасибо: 31
Сказали Спасибо 204 раз(а) в 112 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от sedojkot
|
Обработка прерывания не закончилась, но опять вызывается то же прерывание. Сократите время обработки прерывания, уберите из него всё, что можно убрать в основной цикл. Оставьте только необходимое. Вместо вызова функции в прерывании просто переключите флаг, а обработку флага - в основной цикл.
|
Уважаемый, sedojkot!
Ещё раз спасибо. Проблему решил элементарно.
Изготовил несколько дубликатов одной и той же функции с разными именами. Одни для прерываний , другие для main.
И ведь сбои то были, очень редко, но были.
Косяк , не додумал .
|
|
|
|
19.03.2016, 12:31
|
#1768
|
Частый гость
Регистрация: 11.10.2015
Сообщений: 40
Сказал спасибо: 12
Сказали Спасибо 169 раз(а) в 27 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Ты можешь не дубликаты делать, а создать одну функцию и объявить ее как инлайн, а сам компилятор ее раз дублирует во все места где она вызывалась
|
|
|
|
19.03.2016, 22:58
|
#1769
|
Частый гость
Регистрация: 25.08.2006
Сообщений: 18
Сказал спасибо: 24
Сказали Спасибо 5 раз(а) в 3 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Я сегодня статью нашёл на ардуино форуме в датчиках там сама проблема, некоторые виснут сами по себе ссылаются что в самом датчике прошивка плохая у меня один из тех липовых датчиков с алиэкспреса...
http://arduino.ru/forum/apparatnye-v...lokho-rabotaet
|
|
|
|
19.03.2016, 23:37
|
#1770
|
Частый гость
Регистрация: 11.10.2015
Сообщений: 40
Сказал спасибо: 12
Сказали Спасибо 169 раз(а) в 27 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Посмотри мой вариант реализации, там не зависнет, даже если датчика не будет вообще.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:08.
|
|