Технический форум по робототехнике.
SkyStorm » 01 июл 2010, 16:09
Тест работы бампера. Проверь.
Куда подключены Led1 и Led2 поправь на твои данные.
- Код: Выделить всё • Развернуть
$regfile = "m16def.dat"
$crystal = 16000000
Config Pina.4 = Input : B1 Alias Porta. 4
Config Pina.5 = Input : B2 Alias Porta.5
Config Pinb.1 = Output : Led1 Alias Portb.1
Config Pinb.2 = Output : Led2 Alias Portb.2
'Constants
Const Switch_on = 1
Const Switch_off = 0
Do
Led1 = Switch_off
Led2 = Switch_off
Waitms 50
Led1 = B1
Led2 = B2
Waitms 50
Loop
Zeus » 01 июл 2010, 16:12
Бампер работает.
А как проверил, что работает?
Давай весь полный код с подпрограммами.
Skyline » 01 июл 2010, 21:15
А как проверил, что работает?
Подключил на выходы светодиоды и как только препятствие появляется светодиод гаснет, оба канала работают правильно.
Zeus » 02 июл 2010, 14:02
Ясно. Значит где-то в коде оBшибка.
Давай полный развернутый код с gosubами.
Skyline » 02 июл 2010, 16:58
Вообщем как-то так:
- Код: Выделить всё • Развернуть
$regfile = "m16def.dat"
$crystal = 16000000
Config Pina.0 = Output : M1f Alias Porta.0
Config Pina.1 = Output : M1b Alias Porta.1
Config Pina.2 = Output : M2f Alias Porta.2
Config Pina.3 = Output : M2b Alias Porta.3
Config Pina.4 = Input : B1 Alias Porta.4
Config Pina.5 = Input : B2 Alias Porta.5
Do
If B1 = 1
Then
Goto M1
M1 : If B2 = 1
Gosub Вперёд
Else
Gosub Назад_вправо
End If
Else
Goto M2
M2 : If B2 = 0
Then
Gosub Назад
Else
Gosub Назад_влево
End If
End If
Loop
Вперёд:
M1f = 1 : M1b = 0
M2f = 1 : M2b = 0
Return
Вперёд_вправо:
M1f = 1 : M1b = 0
M2f = 0 : M2b = 0
Return
Вперёд_влево:
M1f = 0 : M1b = 0
M2f = 1 : M2b = 0
Return
Назад:
M1f = 0 : M1b = 1
M2f = 0 : M2b = 1
Return
Назад_вправо:
M1f = 0 : M1b = 1
M2f = 1 : M2b = 0
Return
Назад_влево:
M1f = 0 : M1b = 0
M2f = 0 : M2b = 1
Return
Разворот_вправо:
M1f = 1 : M1b = 0
M2f = 0 : M2b = 1
Return
Разворот_влево:
M1f = 0 : M1b = 1
M2f = 1 : M2b = 0
Return
End
GHOST_J_D » 16 июл 2010, 00:07
На некоторых платах есть кнопка ресет, соеденена с линией ресет - (например 8 мега , 1 вывод), и с землей.
Когда мы нажимаем на кнопку то замыкаем "минус" с линией ресет на МК, я правильно понимаю?, если ошибаюсь поправите пожалуйста, просто назначение резистора (который тоже часто встречается)на этом контакте (ресет) я не понимаю

avr123.nm.ru » 16 июл 2010, 08:49
Если резистор на + питания ( обычно 4-10 кОм ) то это "подтяжка" - тюею создание определенного напряжения на ножке - четкой лог "1" - когда кнопка не нажата.
Я еще рекомендую резистор между кнопкой и ножкой - 200-500 Ом а подтяжку к кнопке подключать.
GHOST_J_D » 16 июл 2010, 09:55
Более мене. Выдержка из текста "короткий полюс не гарантирует генерацию ресета"
Са схеме
forum73/topic5677.htmlВход на ресете инвертированый - для это и нужен резистор?
- Вложения
-

rig » 16 июл 2010, 10:00
это значит что для срабатывания сброса нужна не единица (не инвертированный), а ноль. тоетсь инвертированный сигнал. резистор просто дает нам гарантию что на ресете всегда будет 1.
не совсем понятно что такое короткий полюс.
GHOST_J_D » 16 июл 2010, 10:13
Shorter pulses - из текста на картинке

, всем спасибо разобрался
rig » 16 июл 2010, 10:17
так это не полюс а импульс

Skyline » 24 июл 2010, 18:27
Здравствуйте! Появилась новая проблемка с BASCOM-AVR. В окне программирования нажал на "Clear buffer". Значек программирования стал красным, некоторые фьюзы слетели, в том числе фьюз установки кварца. Вроде фьюзы поставил, начал прошивать, в конце прошивки вылезло окошко "Difference at 00000". Прога в МК зашивается, но не работает. Через не которое время в проге появилось вот это:
- Код: Выделить всё • Развернуть
$prog &H00 , &H00 , &H00 , &H00 ' generated. Take care that the chip supports all fuse bytes
Щас вообще, то видит МК, то нет. Собственно как от этого можно избавиться и решить эту проблему?
avr123.nm.ru » 24 июл 2010, 19:27
Прогер похоже с ошибками читает - надо фьюзы проверить. А перед прошивкой стирание чипа делать.
Skyline » 24 июл 2010, 19:51
Так стирание чипа же автоматически происходит при перепрошивке?