Без описания |
Поиск в теме | Версия для печати |
anar |
Отправлено: 15 Сентября, 2012 - 09:16:11
|

Главнокомандующий

Сообщений всего: 441
Дата рег-ции: Июнь 2011
|
Artem пишет:И ещё вот эта строка:
Portb = 0 это я так понимаю что это мы обнуляем порт В
Waitms 1 задержка
Portb.0 = 1 а вот это установить 1 выходе 0 порта В вот только я не понял эти строки аналогичны вот этим:
Reset PORTB
Waitms 1
Set PORTB.0
или нет?
Да.
- Если не будет этой части кода, то старые значения смешаются с новыми, одним словом будет каша.Дело в том, что после каждого измерения зажигается диод, так вот после 2 -3 измерений уже ничего не будет понятно.Поэтому я и добавил эту часть кода.
Artem пишет:Да, с кодом я уже понял, но вот можно ли подключить светодиоды к другим вывода, а то почти все выводы порта В заняты в программировании, я думаю можно.
Да можно.(Отредактировано автором: 15 Сентября, 2012 - 09:25:08) |
|
|
Artem |
Отправлено: 17 Сентября, 2012 - 16:52:57
|
Главнокомандующий

Сообщений всего: 347
Дата рег-ции: Май 2012
|
спасибо вам anar за ответ, к сожалению пока не опробовал код, ну тут возник другой вопрос я решил сделать ик бампер на мк и хочу что бы модуляция производилась микроконтроллером вот код:
$regfile = "m8def.dat"
$crystal = 1000000
Config Timer1 = Pwm , Pwm = 9 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 8
Config Portb = Output
Config Portd = Input
Config Portc = Output
Set Portc.1
Waitms 500
Reset Portc.1' эти строки не имеют смысла, они нужны просто для того что бы светодиод мигнув пару раз показал работает ли микроконтроллер или нет, к стати это пригодилось
Waitms 500
Set Portc.1
Waitms 500
Reset Portc.1
Do
Pwm1a = 1500' опытном путём было выяснено что именно это значение нужно для того что бы ТСОП понимал микроконтроллер
Loop
End
Схему включения ТСОПа я взял вот от сюда: http://myrobot.ru/wiki/index.php...rojects.MyLINKER
но модулятор сделал на мк просто подключив светодиод, пытаясь сделать ик бампер я расположил ТСОП и ик светодиод рядом друг с другом и проверил реагирует ли система на препятствия, оказалось всё работает чему я очень удивился. Дальность была небольшая 13-15 см но есть ещё проблема: я подключил к тсопу на первое время обычный светодиод что бы он загорался когда перед бампером есть препятствие, так вот когда расстояние до препятствия рано 14-15 см светодиод на тсопе начинает мигать, я подумал это помехи и попытался изменить значение pwm1a но ничего не вышло, я не понимаю в чем проблема, может быть вы знаете как с этим справиться?
Заранее спасибо  |
|
|
anar |
Отправлено: 17 Сентября, 2012 - 17:54:46
|

Главнокомандующий

Сообщений всего: 441
Дата рег-ции: Июнь 2011
|
Artem пишет:Pwm1a = 1500'
Ого , Вы присвоили Pwm значение 9(внизу):
Artem пишет:Config Timer1 = Pwm , Pwm = 9 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 8
а это означает, что максимальное значение шим равно 2^9 то есть 512.
Код, который вы представили в начале темы я думаю вы взяли отсюда http://robozone.su/mrc28/19-modu...ve-tsop2136.html но он у вас немного изменен сделайте все, как указано в статье.А я пока попытаюсь понять, как работает этот код(Отредактировано автором: 17 Сентября, 2012 - 18:05:36) |
|
|
Artem |
Отправлено: 17 Сентября, 2012 - 18:05:03
|
Главнокомандующий

Сообщений всего: 347
Дата рег-ции: Май 2012
|
anar пишет: Вы присвоили Pwm значение 9:
ой, ошибся надо было присвоить 10, хотя даже в этом случае значение 1500 будет больше
Абсолютно верно код взят именно отсюда, но я уже загружал его в мк, он не работает, и ведь вы же сами сказали что этот код только подсчитывает импульсы на входе таймера или я вас не так понял:
anar пишет:Ваш таймер сконфигурирован, как счетчик, то есть он считает импульсы.Если надо формировать импульсы через равные промежутки времени таймер надо сконфигурировать, так, чтобы он на выходе формировал шим сигнал.
я сделал так как вы сказали, сформировал на выходе таймера шим или что нужно было сделать не так
(Добавление)
Я попробовал ещё раз загрузить тот код, но бузуспешно  |
|
|
anar |
Отправлено: 17 Сентября, 2012 - 18:14:46
|

Главнокомандующий

Сообщений всего: 441
Дата рег-ции: Июнь 2011
|
Artem пишет:Абсолютно верно код взят именно отсюда, но я уже загружал его в мк, он не работает, и ведь вы же сами сказали что этот код только подсчитывает импульсы на входе таймера или я вас не так понял:
Дело в том, что я не могу понять, как этот код работает, но раз автор говорит, что он работает значит так и есть.
Artem пишет: но я уже загружал его в мк, он не работает
Вот код, который привели вы:
CODE:
$regfile = "m8def.dat"
$crystal = 1000000
Config Timer1 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle
Compare1a = 222
Config Portb.1 = Output
Start Timer1
Do
Loop
End
А вот код, который опубликован на сайте:
CODE:
$regfile = "m8def.dat" 'используем Mega8
$crystal = 16000000 'частота кварцевого резонатора 16mHz
'Генерация частоты 36kHz
'Настраиваем Timer1
Config Timer1 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle
' Расчитываем Compare1a
' тактовая частота (kHz) / частота TSOPa (kHz) / 2 = Compare
' 16000 / 36 / 2 = 222
Compare1a = 222
'PortB.1 - выход сигнала
'PinC.0 - считываем состояние TSOPa
'Portd.0 - сигнальный светодиод
Config Pinb.1 = Output
Config Portd.0 = Output
Config Pinc.0 = Input
Start Timer1
Do
If Pinc.0 = 0 Then
Portd.0 = 1
Else
Portd.0 = 0
End If
Loop
End
У вас тактовая частота 1 мгц, а на сайте 16.
(Добавление)
Короче сделайте все так,как написано там.
(Добавление)
Вот хороший форум с большим количеством знатоков bascom:http://radiokot.ru/forum/viewtop...8&start=2880 .(Отредактировано автором: 17 Сентября, 2012 - 18:23:54) |
|
|
|
Поиск в теме | Версия для печати |
Страниц (3): « 1 [2] 3 » |
« Обо всем » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
  |
|
|
|