Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

импулс 38Khz 0,2 секунди
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=3227
Страница 1 от 1

Автор:  mash [ Сря Ное 08, 2006 1:01 pm ]
Заглавие:  импулс 38Khz 0,2 секунди

Здравейте !
опитвам се да напиша подпрограма за импулс с продължителност 0.2 секунди модулиран с честота 38Khz.
До тук успях да модулирам импулса с 38Khz ,но не мога да го накарам да трае 0.2 секунди.
Ето и подпрограмата :

Wait movlw D'148'; при делител 1:8
movwf Counter
clrf TMR0
again bcf INTCON,T0IF
loop btfss INTCON,T0IF
goto loop
decfsz Counter,f
goto again
return

main
check btfsc PORTB,1
goto check
call flash



flash bsf PORTB,5
call Wait
bcf PORTB,5
goto main

Автор:  Predator_MF [ Сря Ное 08, 2006 1:17 pm ]
Заглавие: 

Добави си една променлива примерно tmr_status, в която ще пишеш 0 при пускане на импулса и 1 когато таймера ти отброи тия 0.2s. Във функцията, с която човръкаш 38-те KHz проверяваш дали тая променлива е 0 и изпълняваш само при това условие....примерно

Автор:  evc [ Сря Ное 08, 2006 2:12 pm ]
Заглавие: 

Препълваш стека! От подпрограма се излиза с "return", а не с "goto", както си направил в подпрограмата "flash"! Какъв е процесора? Някои имат вградени USART или PWM модули и ако не ги ползваш, защо да не генерираш 38кHz с някой от тях?
Освен това в 0,2 секунди има точно 7600 периода на 38кНz. За да отмериш времето, можеш просто да ги изброиш.

Автор:  VSU [ Сря Ное 08, 2006 2:36 pm ]
Заглавие: 

Направи си PWM модула да генерира 38кХц формулата за сметките на периода (1/freq) ги има в даташийта и го командвай него като записваш 0 или половината от периода в CCP регистъра за времето което ти е нужно 0.2 сек при тебе

нещо от сорта

CCP = 50; <--това е стойнос която ти прави 1/2 от периода за да е 50% ЗАПЪЛВАНЕ
wait(200ms);
CCP = 0;
напиши си го на ASM

Автор:  mash [ Сря Ное 08, 2006 6:52 pm ]
Заглавие: 

Пика е 16F84.
забравих да поясня :)

Автор:  VSU [ Сря Ное 08, 2006 9:20 pm ]
Заглавие: 

еееее та тая 84 е два пъти по съпа от 627/8 а там си има PWM абе какви хора сте бе :) върти цикли тогава

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/