| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Проблем: програмата ми се стартира отново и отново http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=5554 |
Страница 1 от 1 |
| Автор: | dan [ Чет Мар 06, 2008 7:48 pm ] | |||||||||
| Заглавие: | Проблем: програмата ми се стартира отново и отново | |||||||||
Здравейте! Проблема ми е следния: искам да направя плавно тръгване на постояннотоков двигател, като за целта използвам pwm модула на pic16f684. Постепенно увеличавам коефициента на запълване на импулса, достигам пълна мощност, но не мога да накарам изхода да стане '1', а започва да се инкрементира отново.Проблема обаче възниква още при инициализацията на ПВМ модула. ето и кода:
Ще съм много благодарен за всяка помощ. |
||||||||||
| Автор: | ji4ka [ Пет Мар 07, 2008 2:58 am ] |
| Заглавие: | |
Нямаш край на MAIN. Тури едно goto $-1 преди END. Това END е директива на асемблера (компилатора.). |
|
| Автор: | dan [ Пет Мар 07, 2008 11:41 am ] |
| Заглавие: | |
@ji4ka: Благодаря за отговора. А защо да не напиша goto $ ? С goto $-1 ще се изпълнява последната инструкция постоянно, нали? |
|
| Автор: | ji4ka [ Пет Мар 07, 2008 9:59 pm ] |
| Заглавие: | |
Няма значение - важно е да зацикли програмата на място защото иначе програмния брояч си нараства и като стигне края на паметта започва отначало. |
|
| Автор: | Ки4о [ Пет Мар 07, 2008 10:32 pm ] |
| Заглавие: | |
Като не искаш да ти се изпълнява последната инструкция,т.е да влезеш в празен цикъл: B0 BCF PORTC,5 NOP NOP goto $-1 END |
|
| Автор: | stanleyhacker [ Пон Мар 10, 2008 11:53 am ] |
| Заглавие: | |
goto $-1 не изпълнява последната инструкция, а пак отива на него. |
|
| Автор: | Ugeen [ Пон Мар 10, 2008 11:02 pm ] |
| Заглавие: | |
Не знам как ти работи програмата без goto,а освен това таймера по принцип си работи така,брои,препълва и пак почва от начало,освен ако ти не вземеш мерки да направиш изхода си независим от него когато е стигнал края.Според мен не си си построил програмата правилно,Трябвало е да иползваш прекъсване от таймера което ти установява изхода в 1 след като PWM а е стигнал края.Провери си да не ти е включен WDT,тогава наистина ще ти се ресетва постоянно програмата. |
|
| Автор: | Cekins [ Вто Мар 11, 2008 5:10 pm ] |
| Заглавие: | |
Най елегантното решение според мен би било : GIE=0 (ако въобще се ползват прекъсвания) SLEEP |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|