|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 6:13 am
|
Страница 1 от 1
|
[ 7 мнения ] |
|
Timer0, Timer2 && Delay_ms = problems
| Автор |
Съобщение |
|
spas92
Ранг: Минаващ
Регистриран на: Пон Дек 08, 2008 11:37 pm Мнения: 59
|
 Timer0, Timer2 && Delay_ms = problems
Здравейте, сноши се опитах да си напиша една програмка която трябваше, ползвайки тимер2, да изработва един ШИМ с приблизителна честота от 2KHz но излезе проблем... Идеята ми бе таймера да изработва ШИМ-а а от main-a да променям запълването но нещо не ми се получава идеята ;Д ето това е кода до колкото разбрах delay_ms() i delay_us() не са свързани с никой таймер, и затова реших да си напиша моя u_delay(), която ползва таймер0 какъв е проблема тук трябва да изработва(поне такава е идеята) ШИМ с 50% запълване за 1сек. после 1 секунда 0% и толкова но като го пусна на осцилоскопа си седи постоянно 50% О_о
|
| Чет Авг 11, 2011 12:38 pm |
|
 |
|
kiiid
Ранг: Почетен член
Регистриран на: Съб Сеп 24, 2005 2:00 pm Мнения: 787
|
 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);
|
| Чет Авг 11, 2011 1:06 pm |
|
 |
|
spas92
Ранг: Минаващ
Регистриран на: Пон Дек 08, 2008 11:37 pm Мнения: 59
|
 Re: Timer0, Timer2 && Delay_ms = problems
мерси  но пак същия резултат зависва на delay_ms();.... аз затова исках да си напиша функция която да ползва таймер u_delay(), но пак същият ефект ,,,,
|
| Чет Авг 11, 2011 6:04 pm |
|
 |
|
spas92
Ранг: Минаващ
Регистриран на: Пон Дек 08, 2008 11:37 pm Мнения: 59
|
 Re: Timer0, Timer2 && Delay_ms = problems
подкарах моята функция като добавих enable_interrupts(INT_RTCC) но изскочи пък сега друго,.... тази моя функция не работи точно ... и то до такава степен че го забелязвам с просто око на осцилоскопа (т.е. много е грешката) не знам да не би двата таймера да се бъркат един друг  а как г/д мога да преценя за колко микро сек. се изпълнява даден код? става въпрос за този при таймер2 да не би заради него да се забавя таймер0  п.п. а до колко може да окаже влияние това, че ползвам вградения RC осцилатор 
|
| Чет Авг 11, 2011 7:21 pm |
|
 |
|
bobyper
Ранг: Ориентиран
Регистриран на: Вто Яну 31, 2006 11:11 pm Мнения: 295 Местоположение: София
|
 Re: Timer0, Timer2 && Delay_ms = problems
Това u_delay(1000) не е правилно като във функцията ти променливата е дефинирана като 8 битова За да предадеш числото 1000, трябва да се дефинира като int16
|
| Чет Авг 11, 2011 10:19 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: Timer0, Timer2 && Delay_ms = problems
В С, int може да е колкото си искаш бита, стига да са повече или равни на 16.
_________________ Warriors of the Night, ASSEMBLER!!!
Последна промяна ike на Пет Авг 12, 2011 1:23 pm, променена общо 1 път
|
| Чет Авг 11, 2011 10:50 pm |
|
 |
|
spas92
Ранг: Минаващ
Регистриран на: Пон Дек 08, 2008 11:37 pm Мнения: 59
|
 Re: Timer0, Timer2 && Delay_ms = problems
да това го забелязах и го оправих но не е там проблема .......
|
| Пет Авг 12, 2011 12:37 am |
|
|
|
Страница 1 от 1
|
[ 7 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|