| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Timer0, Timer2 && Delay_ms = problems http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=9262 |
Страница 1 от 1 |
| Автор: | spas92 [ Чет Авг 11, 2011 12:38 pm ] | |||||||||
| Заглавие: | Timer0, Timer2 && Delay_ms = problems | |||||||||
Здравейте, сноши се опитах да си напиша една програмка която трябваше, ползвайки тимер2, да изработва един ШИМ с приблизителна честота от 2KHz но излезе проблем... Идеята ми бе таймера да изработва ШИМ-а а от main-a да променям запълването но нещо не ми се получава идеята ;Д ето това е кода
до колкото разбрах delay_ms() i delay_us() не са свързани с никой таймер, и затова реших да си напиша моя u_delay(), която ползва таймер0 какъв е проблема тук трябва да изработва(поне такава е идеята) ШИМ с 50% запълване за 1сек. после 1 секунда 0% и толкова но като го пусна на осцилоскопа си седи постоянно 50% О_о |
||||||||||
| Автор: | kiiid [ Чет Авг 11, 2011 1:06 pm ] |
| Заглавие: | Re: Timer0, Timer2 && Delay_ms = problems |
Очевидно ползваш CCS. Функциите delay_us() и delay_ms() ползват XTAL_FREQ дефиницията за да си изчислят дължината на цикъла. В твоя код тая дефиниция липсва и съответно функцията излиза без да прави нищо. Затова получаваш само изхода от ШИМ-а без прекъсване. Пробвай да сложиш в началото #define XTAL_FREQ 4000000 (от кода ти допускам че на толкова ти бачка животното, ако не промени на съответната цифра в херци) Освен това delay_ms(1000) може да генерира твърде голям цикъл. По-добре го замени с нещо като for (t=0; t<100; t++) delay_ms(10); |
|
| Автор: | spas92 [ Чет Авг 11, 2011 6:04 pm ] |
| Заглавие: | Re: Timer0, Timer2 && Delay_ms = problems |
мерси зависва на delay_ms();.... аз затова исках да си напиша функция която да ползва таймер u_delay(), но пак същият ефект ,,,, |
|
| Автор: | spas92 [ Чет Авг 11, 2011 7:21 pm ] |
| Заглавие: | Re: Timer0, Timer2 && Delay_ms = problems |
подкарах моята функция като добавих enable_interrupts(INT_RTCC) но изскочи пък сега друго,.... тази моя функция не работи точно ... и то до такава степен че го забелязвам с просто око на осцилоскопа (т.е. много е грешката) не знам да не би двата таймера да се бъркат един друг п.п. а до колко може да окаже влияние това, че ползвам вградения RC осцилатор |
|
| Автор: | bobyper [ Чет Авг 11, 2011 10:19 pm ] | |||||||||
| Заглавие: | Re: Timer0, Timer2 && Delay_ms = problems | |||||||||
Това u_delay(1000) не е правилно като във функцията ти променливата е дефинирана като 8 битова
За да предадеш числото 1000, трябва да се дефинира като int16 |
||||||||||
| Автор: | ike [ Чет Авг 11, 2011 10:50 pm ] |
| Заглавие: | Re: Timer0, Timer2 && Delay_ms = problems |
В С, int може да е колкото си искаш бита, стига да са повече или равни на 16. |
|
| Автор: | spas92 [ Пет Авг 12, 2011 12:37 am ] |
| Заглавие: | Re: Timer0, Timer2 && Delay_ms = problems |
да това го забелязах и го оправих но не е там проблема ....... |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|