я не волшебник ,я просто учусь
|
|
trim | Дата: Четверг, 21.06.2012, 22:48 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| вот решил забабахать чтоб серва от энкодера регулировалась ,в чем косяк ,где собака зарыта подскажите
Code $regfile = "m16def.dat" $crystal = 2000000 $hwstack = 40 $swstack = 16 $framesize = 32
$prog &HFF , &H44 , &HD9 , &H00
Config Porta .0 = Output Config Porta.4 = Output
Config Servos = 1 , Servo1 = Porta .0 , Reload = 10 Dim W As Byte Dim S As Integer
S = 75
Config Int0 = Falling ' прерывание INT0 по нисходящему фронту (c + на -) On Int0 Encod
Enable Interrupts
Enable Int0 Do Loop
Encod: Porta.4 = 0 Waitus 10 ' ждем пока утихнет дребезг контактов If Pinb.1 = 1 Then ' если на ноге единица (импульс не пришел) тогда Incr W W = S + 1 Porta.4 = 1 End If
If W = 151 Then W = 150 Gosub Encod
End If Porta.5 = 0 Waitms 2 If Pinb.1 = 1 Then ' если на ноге единица (импульс не пришел) тогда Decr W
W = S - 1 Porta.5 = 1 End If
If W = -1 Then W = 0 Gosub Encod
End If
Servo(1) = W
Return
Сообщение отредактировал trim - Четверг, 21.06.2012, 22:51 |
|
| |
exersizze | Дата: Четверг, 21.06.2012, 23:28 | Сообщение # 2 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Слишком запутанно, переход по Gosub зацикливает программу на месте. Можно сделать так:
Code $regfile = "m16def.dat" $crystal = 16000000
$hwstack = 32 $swstack = 10 $framesize = 40
Config Pind.2 = Input : Cha Alias Pind.2 Config Pind.3 = Input : Chb Alias Pind.3
$lib "lcd4.lbx" Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 Config Lcd = 16 * 2
Config Servos = 1 , Servo1 = Portd.7 , Reload = 11
Dim W As Byte , X As Byte
Config Int0 = Falling ' прерывание INT0 по нисходящему фронту (c + на -) On Int0 Encod ' вызываем подпрограмму Encod по прерыванию
Enable Interrupts 'разрешаем все прерывания Enable Int0 'резрешаем прерывания для INT0
Cls ' очистка дисплея Cursor Off 'отключить курсор
X = 2
Do
If W > 140 Then W = 40 'диапозон значений от 140 до 40 If W < 40 Then W = 140 'диапозон значений от 40 до 140
Servo(1) = W
Locate 1 , 1 Lcd "encounter: " ; W ; " " Waitms 100
Loop
Encod:
If Cha = 0 Then If Chb = 0 Then W = W + X Else W = W - X 'увеличение/уменьшение переменной на Х End If Waitms 5 ' задержка для антидребезга контактов Gifr = 64 Return
|
|
| |
trim | Дата: Пятница, 22.06.2012, 00:44 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| спасибо чот энкодер штоль барахлит нет фиксации сервы
|
|
| |
trim | Дата: Пятница, 22.06.2012, 23:40 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| привет ,и снова вопрос как ик импульс пустить и поймать есть такая зарисовка $regfile = "m16def.dat" $crystal = 4000000 $hwstack = 40 $swstack = 16 $framesize = 32
$prog &HFF , &H44 , &HD9 , &H00 Config Porta.2 = Input Config Porta.4 = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim A As Word Dim S As Word
Do Porta.4 = 0
Start Adc A = Getadc(2) S = 150 - A If A > 30000 Then Stop Adc If S = 50 Then
Porta.4 = 1
End If End If Waitms S
Loop
|
|
| |
exersizze | Дата: Суббота, 23.06.2012, 00:44 | Сообщение # 5 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Переменная А никогда не будет >30000 так как с АЦП считывается значение от 0 до 1023. Такчто условие if А>30000 никогда не сработает. Я так понял хочешь поймать отраженный от светодиода свет и посчитать значение его с помощью АЦП? :)
|
|
| |
trim | Дата: Суббота, 23.06.2012, 01:31 | Сообщение # 6 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| да,хочется потом значение от ацп преобразовать в число (в метры ,сантиметры )затем завязать с задержкой импульса светодиода тоесть чем ближе к обьекту тем чаще моргает тем самым точнее вычисления расстояния вот , насчет 30000 это не я это .......это ..... коварные происки врагов нашей родины вот .
|
|
| |
trim | Дата: Среда, 27.06.2012, 22:55 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| я что то глупое спросил да ? простите я только учусь поэтому вопрос ,а это реально на одном контроллере быть может стоит второй зацепить на мигание отдельно
|
|
| |
exersizze | Дата: Четверг, 28.06.2012, 07:14 | Сообщение # 8 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| все мы учимся:) тут справится и один мк
|
|
| |
trim | Дата: Четверг, 05.07.2012, 12:07 | Сообщение # 9 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| $regfile = "m16def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32
$prog &HFF , &HC3 , &HC9 , &H00 ' generated. Take care that the chip supports all fuse bytes. Config Portd.5 = Output Config Porta.4 = Output Config Porta.5 = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 256
Dim W As Word Dim A As Word Dim S As Word
Start Adc
W = Getadc(0)
Compare1a = 100
If Timer1 = 10 Then
Porta.4 = 1 Else Porta.4 = 0 End If
Stop Adc If W > 0 Then Gosub Pulse End If
Pulse: A = 256 / W Porta.5 = 1 Waitms A Porta.5 = 0 If A = 256 Then A = 0 End If
Return End
|
|
| |
trim | Дата: Четверг, 05.07.2012, 12:11 | Сообщение # 10 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| вощем поймал я его таки но тока хотелось бы чтоб импульс в 36 кгц по четче был с задержкой ,а то еле видно на осцылографе ,от пульта он четкий ,там наверное надо как то через память работать и с прерываниями
|
|
| |
trim | Дата: Четверг, 05.07.2012, 12:17 | Сообщение # 11 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| и еще вопрос дисплей я надыбал от сименса LS020 в инете полно инфы НО нигде нет как применять библиотеку т.е . куда какие библиотечные файлы пихать и как с ними работать какие команды ,как порты настраивать ничо непонятно ,я его посадил по аналогии на мегу 16 а библиотека есть тока под 128ую хотелось бы просто информацию на дисплей выводит типа шрифт ,пока осваиваю работу с прерываниями и таймерами , поможите бога ради страсть как интересно он же цветной там кучу чего можно сделать
|
|
| |
exersizze | Дата: Пятница, 06.07.2012, 09:02 | Сообщение # 12 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Так есть же готовые конструкции на этом дисплее, в том числе и с открытым кодом. Смотрите исходники, разбирайтесь что, куда и как там все выводится.
|
|
| |
trim | Дата: Вторник, 10.07.2012, 23:54 | Сообщение # 13 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| привет тут встал вопрос о меге 128 немогу заставить ее работать что может быть не приложу ума никак ,простая моргалка с задержками а не идет может нюансы есть в фьюзах джей таг отключен или библиотека битая в баскоме (2.0.7.1) с моси и мисо разобрался тоже голову ломал окозалось rx tx причуда изготовителя вот а что еще может быть ,16 мега спокойно с этим работает помогите чем смогите
|
|
| |
trim | Дата: Среда, 11.07.2012, 00:02 | Сообщение # 14 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| вот же засада отключил просто во фьюзах совместимость с атмегой 103 и все поехало блин
|
|
| |
exersizze | Дата: Среда, 11.07.2012, 11:10 | Сообщение # 15 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| угумс, такая засада еще с 64-й мегой есть, нужно отключать совместимость с Atmega103.
|
|
| |
trim | Дата: Среда, 11.07.2012, 22:58 | Сообщение # 16 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| попробуйте тему раскрутить очень интересно с дисплеем от сименса ls020 я пырхаюсь пырхаюсь чото не то, не получается экран хотябы пиксел проявить ,на меге 128 там даже видео гонять можно с флешки )))) а?
|
|
| |
exersizze | Дата: Среда, 11.07.2012, 23:54 | Сообщение # 17 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| ну так еще сперва надо раскурить как с флешкой работать) а дисплейчика такого нет, да и времени тоже..
|
|
| |
trim | Дата: Четверг, 12.07.2012, 01:14 | Сообщение # 18 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| да .....время время а он продается в запчастях на сотовые
|
|
| |
trim | Дата: Четверг, 12.07.2012, 22:58 | Сообщение # 19 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| а снова вопрос как можно использовать бутлоадер для чего как с ним работать
|
|
| |
exersizze | Дата: Пятница, 13.07.2012, 10:07 | Сообщение # 20 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Для ознакомления http://easyelectronics.ru/avr-uch....ra.html многие вопросы отпадут.
|
|
| |
trim | Дата: Пятница, 13.07.2012, 21:57 | Сообщение # 21 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| спасибо , а как все таки работать с библиотекой она зашивается в контроллер и подается команда или что то как то еше
|
|
| |
exersizze | Дата: Пятница, 13.07.2012, 23:05 | Сообщение # 22 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Да, зашивается как обычная программа. А дальше с помощью загрузчика и RS232 кабеля в мк загружается уже рабочая программа
|
|
| |
trim | Дата: Суббота, 14.07.2012, 01:00 | Сообщение # 23 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| круть блин надо испытать как то на чем то
|
|
| |
Aleks8383 | Дата: Суббота, 14.07.2012, 09:54 | Сообщение # 24 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Ну если в кратенько и своими словами бутлоадер-это небольшая програмка позволяющая запрограмировать контроллер по какомуто внешниму сигналу(их много есть с по сбросу контроллера включается и по уарт запустить можно и тд и тп)После того как прибёг этот сигнал контроллер перезагружается и стартует не с нулевого адреса ,а с адресса бутлоадера,а он в своё время определяется фьюзами(в теме про фьюзы посмотри)какой размер определён для бутлоадера такой и адресс начальный(смотреть даташит они там расписаны).К примеру я делал этот ,всё работало.
|
|
| |
exersizze | Дата: Суббота, 14.07.2012, 11:23 | Сообщение # 25 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| если хочешь попробовать можешь взять баскомовский бут, он лежит в папке с установленной программой \MCS Electronics\BASCOM-AVR\SAMPLES\BOOT есть версии для мег 8/16/32/64/128
|
|
| |
Aleks8383 | Дата: Суббота, 14.07.2012, 19:37 | Сообщение # 26 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Это конечно всё хорошо но какой софт использовать со стороны компьютера?? а чесно не увидел.Небудешь же через уарт побайтно в ручную отсылать прошивку.
|
|
| |
exersizze | Дата: Суббота, 14.07.2012, 19:44 | Сообщение # 27 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Все уже включено :) в Баскоме есть встроенный загрузчик - кнопка быстрого запуска F4.
|
|
| |
Aleks8383 | Дата: Суббота, 14.07.2012, 20:13 | Сообщение # 28 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Чесно незнал,вот поэтому и спросил.Просто большинство бутов (покрайней мере написаных на других языках програмирования)имеют сторонние программы для загрузки.Оказывается в Баскоме усё предусмотрено.
|
|
| |
trim | Дата: Суббота, 14.07.2012, 23:15 | Сообщение # 29 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| $hwstack = 40 $swstack = 16 $framesize = 32 аааааааааааааааааааааа как определять значения этих параметров
|
|
| |
trim | Дата: Суббота, 14.07.2012, 23:16 | Сообщение # 30 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| и как правильно обьяснить контроллеру куда вращается энкодер у вас там есть пример работы но мне не совсем понятно
|
|
| |
exersizze | Дата: Воскресенье, 15.07.2012, 23:25 | Сообщение # 31 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| по стеку есть апнот на офсайте, вникай http://www.mcselec.com/index.p....emid=57 По энкодеру видимо не разобрался с самим принципом работы. Там все просто, от того в какую сторону вращается вал, на выходе будут идти сигналы с разным порядком: вращаешь в одну сторону - на первом (условно) выходе будет появляться сигнал первым, в другую сторону - сигнал будет появляться первыйм на втором выходе. Отсюда и надо плясать при написании программы для мк.
|
|
| |
trim | Дата: Вторник, 17.07.2012, 20:30 | Сообщение # 32 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| только что сделал уарт наконец то был просто восхищен какая же это крутая штука можно тварить ,лично у меня пристрастие к игрушкам автоматическим с детства чоб замутить то
|
|
| |
trim | Дата: Среда, 18.07.2012, 00:50 | Сообщение # 33 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| моя попытка считать и посмотреть данные с ацп как то не удалась , вот ,не посмотрите
$regfile = "m16def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32
Dim W As Integer Dim B As Integer
Config Adc = Free , Prescaler = Auto , Reference = Avcc Config Timer1 = Timer , Prescale = 64
Enable Interrupts Enable Timer1
Enable Urxc On Timer1 Comm
Comm: Start Adc W = Getadc(1) B = W * 3
Waitms 250 Print "W*3 =" ; B Print "ADC =" ; W Print Print
Return End
она выводит мне 3069 и 1023 а на резистор который кручу ноль внимания ,он подключен ползунком к порту а1 мега 16 ,а концы его с минусом и плюсом питания схемы
Сообщение отредактировал trim - Среда, 18.07.2012, 01:04 |
|
| |
Aleks8383 | Дата: Среда, 18.07.2012, 09:30 | Сообщение # 34 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Да скорее всего дело не в коде,AVCC и AREF подключены к плюсу,вход не коротит на плюс и какой номинал ползунка???
|
|
| |
trim | Дата: Среда, 18.07.2012, 11:53 | Сообщение # 35 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| 110kom
|
|
| |
Aleks8383 | Дата: Среда, 18.07.2012, 13:06 | Сообщение # 36 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| А ножки какие я указал подключены к плюсу.Попробуйте на массу посадить вход ацп должен показывать по 00.
Сообщение отредактировал Aleks8383 - Среда, 18.07.2012, 13:08 |
|
| |
trim | Дата: Среда, 18.07.2012, 17:55 | Сообщение # 37 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| а areff обязательно садить на плюс? если я аvcc указываю в настройках ,хотя в полне возможно что он не понимает от чего очитывать
|
|
| |
Aleks8383 | Дата: Среда, 18.07.2012, 19:37 | Сообщение # 38 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| Я для кучи и его сажаю на плюс,хуже небудет.(естесттвенно если в настройках стоит AVCC)
Сообщение отредактировал Aleks8383 - Среда, 18.07.2012, 19:41 |
|
| |
trim | Дата: Среда, 18.07.2012, 20:04 | Сообщение # 39 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| мда ,заработало когда на плюс посадил ареф спасибо ,буду копаться дальше
|
|
| |
pitato | Дата: Суббота, 21.07.2012, 16:47 | Сообщение # 40 |
Группа: Пользователи
Сообщений: 1
Статус: Offline
| Здравствуйте. Есть 1 на PD0,как сделать 0 на PD4 и 1 если на PD0 0 ?
|
|
| |
niko-lay | Дата: Суббота, 21.07.2012, 17:53 | Сообщение # 41 |
Группа: Проверенные
Сообщений: 19
Статус: Offline
| можно так Code if PinD.0=1 then PortD.4=0 else PortD.4=1
|
|
| |
trim | Дата: Суббота, 21.07.2012, 21:17 | Сообщение # 42 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| а по конкретнее
|
|
| |
trim | Дата: Суббота, 21.07.2012, 21:18 | Сообщение # 43 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| не ,все понятно спасибо
|
|
| |
Aleks8383 | Дата: Суббота, 21.07.2012, 23:00 | Сообщение # 44 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| if portd0=1 then portd4=0 ну и так далее в другой полярности
|
|
| |
Aleks8383 | Дата: Суббота, 21.07.2012, 23:02 | Сообщение # 45 |
Группа: Проверенные
Сообщений: 104
Статус: Offline
| блин сначало написал ,а потом увидел
|
|
| |
trim | Дата: Суббота, 21.07.2012, 23:14 | Сообщение # 46 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| ага
|
|
| |
trim | Дата: Суббота, 21.07.2012, 23:15 | Сообщение # 47 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| чот у меня не получается запустить на мега 128 дисплей от сименса чо тока не пробовал
|
|
| |
trim | Дата: Среда, 25.07.2012, 18:38 | Сообщение # 48 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| так значит дисплей я запустил .теперь я мучаюсь с записью данных во флеш меги 128. по байтно дык вот у меня получается записать неболее одной строки. и еще как проц понимает вводим символы буквы т.е. ну воюем хочется выводить символы с уарт на дисплей
Сообщение отредактировал trim - Среда, 25.07.2012, 18:40 |
|
| |
exersizze | Дата: Четверг, 26.07.2012, 10:16 | Сообщение # 49 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| покажи схему подключения, как к юарту подключил дисплей?
|
|
| |
trim | Дата: Пятница, 27.07.2012, 12:39 | Сообщение # 50 |
Группа: Проверенные
Сообщений: 105
Статус: Offline
| да нет же дисплей потключен по стандартному интерфейсу spi а уарт на уарт1. вот надо текст выводить. как то с помощью. библиотеки вот или вообще картинки
|
|
| |