roboforum.ru

Технический форум по робототехнике.

МикроКонтроллер AVR начинающим - общие вопросы

Re: МикроКонтроллер AVR начинающим - общие вопросы

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

Re: МикроКонтроллер AVR начинающим - общие вопросы

Zeus » 01 июл 2010, 16:12

Бампер работает.

А как проверил, что работает?
Давай весь полный код с подпрограммами.

Re: МикроКонтроллер AVR начинающим - общие вопросы

Skyline » 01 июл 2010, 21:15

А как проверил, что работает?

Подключил на выходы светодиоды и как только препятствие появляется светодиод гаснет, оба канала работают правильно.

Re: МикроКонтроллер AVR начинающим - общие вопросы

Zeus » 02 июл 2010, 14:02

Ясно. Значит где-то в коде оBшибка.
Давай полный развернутый код с gosubами.

Re: МикроКонтроллер AVR начинающим - общие вопросы

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

Re: МикроКонтроллер AVR начинающим - общие вопросы

GHOST_J_D » 16 июл 2010, 00:07

На некоторых платах есть кнопка ресет, соеденена с линией ресет - (например 8 мега , 1 вывод), и с землей.
Когда мы нажимаем на кнопку то замыкаем "минус" с линией ресет на МК, я правильно понимаю?, если ошибаюсь поправите пожалуйста, просто назначение резистора (который тоже часто встречается)на этом контакте (ресет) я не понимаю :o

Re: МикроКонтроллер AVR начинающим - общие вопросы

avr123.nm.ru » 16 июл 2010, 08:49

Если резистор на + питания ( обычно 4-10 кОм ) то это "подтяжка" - тюею создание определенного напряжения на ножке - четкой лог "1" - когда кнопка не нажата.

Я еще рекомендую резистор между кнопкой и ножкой - 200-500 Ом а подтяжку к кнопке подключать.

Re: МикроКонтроллер AVR начинающим - общие вопросы

rig » 16 июл 2010, 09:07

о землячок!
reset.JPG

так понятно?

Re: МикроКонтроллер AVR начинающим - общие вопросы

GHOST_J_D » 16 июл 2010, 09:55

Более мене. Выдержка из текста "короткий полюс не гарантирует генерацию ресета"
Са схеме forum73/topic5677.html
Вход на ресете инвертированый - для это и нужен резистор?
Вложения
сброс.JPG

Re: МикроКонтроллер AVR начинающим - общие вопросы

rig » 16 июл 2010, 10:00

это значит что для срабатывания сброса нужна не единица (не инвертированный), а ноль. тоетсь инвертированный сигнал. резистор просто дает нам гарантию что на ресете всегда будет 1.
не совсем понятно что такое короткий полюс.

Re: МикроКонтроллер AVR начинающим - общие вопросы

GHOST_J_D » 16 июл 2010, 10:13

Shorter pulses - из текста на картинке :), всем спасибо разобрался

Re: МикроКонтроллер AVR начинающим - общие вопросы

rig » 16 июл 2010, 10:17

так это не полюс а импульс :)

Re: МикроКонтроллер AVR начинающим - общие вопросы

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 

Щас вообще, то видит МК, то нет. Собственно как от этого можно избавиться и решить эту проблему?

Re: МикроКонтроллер AVR начинающим - общие вопросы

avr123.nm.ru » 24 июл 2010, 19:27

Прогер похоже с ошибками читает - надо фьюзы проверить. А перед прошивкой стирание чипа делать.

Re: МикроКонтроллер AVR начинающим - общие вопросы

Skyline » 24 июл 2010, 19:51

Так стирание чипа же автоматически происходит при перепрошивке?


Rambler\'s Top100 Mail.ru counter