|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 1:37 am
|
Страница 1 от 1
|
[ 6 мнения ] |
|
| Автор |
Съобщение |
|
mash
Ранг: Новодошъл
Регистриран на: Пет Окт 27, 2006 6:23 pm Мнения: 162 Местоположение: Севлиево
|
 импулс 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
|
| Сря Ное 08, 2006 1:01 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Добави си една променлива примерно tmr_status, в която ще пишеш 0 при пускане на импулса и 1 когато таймера ти отброи тия 0.2s. Във функцията, с която човръкаш 38-те KHz проверяваш дали тая променлива е 0 и изпълняваш само при това условие....примерно
|
| Сря Ное 08, 2006 1:17 pm |
|
 |
|
evc
Ранг: Напреднал
Регистриран на: Пет Окт 21, 2005 8:45 am Мнения: 499
|
Препълваш стека! От подпрограма се излиза с "return", а не с "goto", както си направил в подпрограмата "flash"! Какъв е процесора? Някои имат вградени USART или PWM модули и ако не ги ползваш, защо да не генерираш 38кHz с някой от тях?
Освен това в 0,2 секунди има точно 7600 периода на 38кНz. За да отмериш времето, можеш просто да ги изброиш.
_________________ Простотията е Божи дар, но човек не бива да парадира с подаръците си!
|
| Сря Ное 08, 2006 2:12 pm |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
Направи си PWM модула да генерира 38кХц формулата за сметките на периода (1/freq) ги има в даташийта и го командвай него като записваш 0 или половината от периода в CCP регистъра за времето което ти е нужно 0.2 сек при тебе
нещо от сорта
CCP = 50; <--това е стойнос която ти прави 1/2 от периода за да е 50% ЗАПЪЛВАНЕ
wait(200ms);
CCP = 0;
напиши си го на ASM
|
| Сря Ное 08, 2006 2:36 pm |
|
 |
|
mash
Ранг: Новодошъл
Регистриран на: Пет Окт 27, 2006 6:23 pm Мнения: 162 Местоположение: Севлиево
|
Пика е 16F84.
забравих да поясня 
|
| Сря Ное 08, 2006 6:52 pm |
|
 |
|
VSU
Ранг: Напреднал
Регистриран на: Нед Авг 14, 2005 1:08 pm Мнения: 433 Местоположение: Казанлък
|
еееее та тая 84 е два пъти по съпа от 627/8 а там си има PWM абе какви хора сте бе  върти цикли тогава
|
| Сря Ное 08, 2006 9:20 pm |
|
|
|
Страница 1 от 1
|
[ 6 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|