25.11.2012, 21:27
|
|
Прописка
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 231
Сказал спасибо: 26
Сказали Спасибо 54 раз(а) в 19 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от Eddy71
|
Я когда-то делал вот так:
|
ОК! Попробую, я кажется за сегодня почти добил свою прогу.
|
|
|
|
06.12.2012, 15:31
|
|
Прописка
Регистрация: 14.02.2010
Адрес: СССР
Сообщений: 286
Сказал спасибо: 141
Сказали Спасибо 51 раз(а) в 43 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Доброго времени суток.
Столкнулся с чЁткой непоняткой: после выключения аппаратного CCP1(PWM) - нога, которую PWM дергал остается в неопределенном положении. Т.е. вообще-то, в определенном - если в момент setup_ccp1(CCP_OFF);
был высокий уровень - таковой и остается.
output_low(pin_a2); - не помогает.
12f1822
Код:
|
void main()
{
setup_timer_2(T2_DIV_BY_4,39,1); //5.0 us overflow, 5.0 us interrupt //200kHz*50%
setup_ccp1(CCP_PWM);
set_pwm1_duty((int16)90);
setup_comparator(NC_NC);
setup_oscillator(OSC_8MHZ|OSC_PLL_ON,0);
while(TRUE)
{
delay_us(64);
setup_ccp1(CCP_OFF);
output_low(pin_a2);
delay_us(64);
setup_ccp1(CCP_PWM);
}
} |
Кто сталкивалcя, как ПРАВИЛЬНО побороть? ouput_float не предлагать. Должен быть штатный способ...
|
|
|
|
06.12.2012, 15:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,700
Сказал спасибо: 5,497
Сказали Спасибо 25,124 раз(а) в 5,642 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Предлагаю:
a) убедиться, что нога ШИМа действительно А2
б) попробовать директиву #USE FIXED_IO в начале программы
в) вспомнить о директиве set_tris_a
г) если ничего не помогло глянуть листинг компиляции
|
|
|
|
06.12.2012, 18:15
|
|
Прописка
Регистрация: 14.02.2010
Адрес: СССР
Сообщений: 286
Сказал спасибо: 141
Сказали Спасибо 51 раз(а) в 43 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
а) да. Генерация идёт - тестирую в протеусе
б) Эффект тот-же
в) Нет необходимости - смотрел отладку, между и во время setup_ccp1(CCP_OFF); output_low(pin_a2);
трис установлен на выход
г) чего глянуть? Это чтоль:
Код:
|
Executing: "C:\Program files\Picc\CCSC.exe" +FM "1822.PWM.c" I+="C:\Program Files\PICC\devices;C:\Program Files\PICC\devices" +DF +LN +T +A +M +Z +Y=9 +EA
Memory usage: ROM=4% RAM=4% - 16%
0 Errors, 0 Warnings.
Build Successful. |
вот еще кусок кода:
Код:
|
14: setup_ccp1(CCP_OFF);
039 30F0 MOVLW 0xf0
03A 0025 MOVLB 0x5
03B 0593 ANDWF 0x13, F
15: output_low(pin_a2);
03C 0021 MOVLB 0x1
03D 110C BCF PORTA, 0x2
03E 0022 MOVLB 0x2
03F 110C BCF PORTA, 0x2 |
Дело в том, что мне не удалось найти в даташите определение конечного состояния выхода ССР при его выключении. И как бэ неважно. Но смущает сочетание правильно установленного триса и отсутствие реакции на установку на пине нуля. Вообще, такое поведение ноги с PWM скорее правило - уже встречался. Но как его выключить?!
Вот отладка в картинках - 4 шага. Может, я чего-то не замечаю?
|
|
|
|
06.12.2012, 18:31
|
|
Частый гость
Регистрация: 01.03.2008
Сообщений: 37
Сказал спасибо: 3
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Добавьте перед выключением модуля
я бы сделал так
Код:
|
void main()
{
setup_timer_2(T2_DIV_BY_4,39,1); //5.0 us overflow, 5.0 us interrupt //200kHz*50%
setup_ccp1(CCP_PWM);
set_pwm1_duty((int16)90);
setup_comparator(NC_NC);
setup_oscillator(OSC_8MHZ|OSC_PLL_ON,0);
while(TRUE)
{
delay_us(64);
set_pwm1_duty(0)
delay_us(64);
set_pwm1_duty((int16)90);
}
} |
зачем включать выключать сам модуль ?
|
|
|
|
06.12.2012, 18:46
|
|
Прописка
Регистрация: 14.02.2010
Адрес: СССР
Сообщений: 286
Сказал спасибо: 141
Сказали Спасибо 51 раз(а) в 43 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
ММММ.... Вариант конечно.. Но как-то не так. Костыль, по большом счету. Надо понять логику этого шайтан-девайса, иначе это уже не написание программы, а брут-форс какой-то...
Конкретно в этом устройстве кроме шима нога ничем не занята, но случаи бывают разные.
Похоже, заморочка в выходном каскаде ноги, но где трабл - пока не понял. Полезу еще еррату почитаю...
|
|
|
|
06.12.2012, 19:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,700
Сказал спасибо: 5,497
Сказали Спасибо 25,124 раз(а) в 5,642 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Листинг в асме мне нравится. Наверно протеус недопонимает что-то. Конечно, не в таком месте, но уже нарывался на разность моделируемого и реального устройств. Я б в железе попробовал. Может и нет бага на самом деле?
|
|
|
|
06.12.2012, 19:57
|
|
Прописка
Регистрация: 14.02.2010
Адрес: СССР
Сообщений: 286
Сказал спасибо: 141
Сказали Спасибо 51 раз(а) в 43 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
хм...Насколько я помню - в железе тоже самое было. С него моё удивление и началось. Но вроде на 1936,или на 1824, не помню.. Попробую на 1822.
|
|
|
|
06.12.2012, 23:21
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.02.2008
Адрес: Ukraine, рядом с Полтавой
Сообщений: 9,700
Сказал спасибо: 5,497
Сказали Спасибо 25,124 раз(а) в 5,642 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Вспомнил. У меня чудеса были с моделированием модуля захвата (ССР) на 16ф887. Я сперва грешил на то, что чип слишком ранней ревизии (думал баг в силиконе), затем привезли без буковок, нормальный - те же чудеса. Потом понял, что чип работает верно, а протеус на 1 то ли больше то ли меньше считал (уже не помню).
|
|
|
|
07.12.2012, 11:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 11.06.2006
Адрес: 51° 46′ 0″ N, 55° 6′ 0″ E
Сообщений: 1,975
Сказал спасибо: 370
Сказали Спасибо 1,725 раз(а) в 706 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от Eddy71
|
Вспомнил. У меня чудеса были .........
|
Я в свое время также наглотался "ЧУДЕС" от Протеуса и теперь к нему не подхожу.
Сколько времени и нервов потрачено на попытках разобраться в том, почему "на столе" макет работает по другому, чем в ПРотеусе!!!
Макетки, отладчики и другое "железо" - мое ИМХО.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:22.
|
|