[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: RD3AVJ 
Форум » форумы » Общие вопросы по Bascom-AVR » я не волшебник ,я просто учусь (Тонкости работы в Bascom -AVR или хочу все знать)
я не волшебник ,я просто учусь
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
Группа: Администраторы
Сообщений: 718

Статус: 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
Группа: Администраторы
Сообщений: 718

Статус: 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
Группа: Администраторы
Сообщений: 718

Статус: 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
Группа: Администраторы
Сообщений: 718

Статус: 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
Группа: Администраторы
Сообщений: 718

Статус: Offline
угумс, такая засада еще с 64-й мегой есть, нужно отключать совместимость с Atmega103.

 
trimДата: Среда, 11.07.2012, 22:58 | Сообщение # 16
Группа: Пользователи
Сообщений: 105

Статус: Offline
попробуйте тему раскрутить очень интересно с дисплеем от сименса ls020 я пырхаюсь пырхаюсь чото не то, не получается экран хотябы пиксел проявить ,на меге 128 там даже видео гонять можно с флешки )))) а?

 
exersizzeДата: Среда, 11.07.2012, 23:54 | Сообщение # 17
Группа: Администраторы
Сообщений: 718

Статус: 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
Группа: Администраторы
Сообщений: 718

Статус: Offline
Для ознакомления http://easyelectronics.ru/avr-uch....ra.html многие вопросы отпадут.

 
trimДата: Пятница, 13.07.2012, 21:57 | Сообщение # 21
Группа: Пользователи
Сообщений: 105

Статус: Offline
спасибо , а как все таки работать с библиотекой она зашивается в контроллер и подается команда или что то как то еше

 
exersizzeДата: Пятница, 13.07.2012, 23:05 | Сообщение # 22
Группа: Администраторы
Сообщений: 718

Статус: Offline
Да, зашивается как обычная программа. А дальше с помощью загрузчика и RS232 кабеля в мк загружается уже рабочая программа

 
trimДата: Суббота, 14.07.2012, 01:00 | Сообщение # 23
Группа: Пользователи
Сообщений: 105

Статус: Offline
круть блин надо испытать как то на чем то

 
Aleks8383Дата: Суббота, 14.07.2012, 09:54 | Сообщение # 24
Группа: Проверенные
Сообщений: 102

Статус: Offline
Ну если в кратенько и своими словами бутлоадер-это небольшая програмка позволяющая запрограмировать контроллер по какомуто внешниму сигналу(их много есть с по сбросу контроллера включается и по уарт запустить можно и тд и тп)После того как прибёг этот сигнал контроллер перезагружается и стартует не с нулевого адреса ,а с адресса бутлоадера,а он в своё время определяется фьюзами(в теме про фьюзы посмотри)какой размер определён для бутлоадера такой и адресс начальный(смотреть даташит они там расписаны).К примеру я делал этот ,всё работало.

 
exersizzeДата: Суббота, 14.07.2012, 11:23 | Сообщение # 25
Группа: Администраторы
Сообщений: 718

Статус: Offline
если хочешь попробовать можешь взять баскомовский бут, он лежит в папке с установленной программой \MCS Electronics\BASCOM-AVR\SAMPLES\BOOT
есть версии для мег 8/16/32/64/128


 
Aleks8383Дата: Суббота, 14.07.2012, 19:37 | Сообщение # 26
Группа: Проверенные
Сообщений: 102

Статус: Offline
Это конечно всё хорошо но какой софт использовать со стороны компьютера?? а чесно не увидел.Небудешь же через уарт побайтно в ручную отсылать прошивку.

 
exersizzeДата: Суббота, 14.07.2012, 19:44 | Сообщение # 27
Группа: Администраторы
Сообщений: 718

Статус: Offline
Все уже включено :) в Баскоме есть встроенный загрузчик - кнопка быстрого запуска F4.

 
Aleks8383Дата: Суббота, 14.07.2012, 20:13 | Сообщение # 28
Группа: Проверенные
Сообщений: 102

Статус: 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
Группа: Администраторы
Сообщений: 718

Статус: 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
Группа: Проверенные
Сообщений: 102

Статус: Offline
Да скорее всего дело не в коде,AVCC и AREF подключены к плюсу,вход не коротит на плюс и какой номинал ползунка???

 
trimДата: Среда, 18.07.2012, 11:53 | Сообщение # 35
Группа: Пользователи
Сообщений: 105

Статус: Offline
110kom

 
Aleks8383Дата: Среда, 18.07.2012, 13:06 | Сообщение # 36
Группа: Проверенные
Сообщений: 102

Статус: 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
Группа: Проверенные
Сообщений: 102

Статус: 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 ?
Прикрепления: 0340567.bas(2Kb)


 
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
Группа: Проверенные
Сообщений: 102

Статус: Offline
if portd0=1 then portd4=0 ну и так далее в другой полярности

 
Aleks8383Дата: Суббота, 21.07.2012, 23:02 | Сообщение # 45
Группа: Проверенные
Сообщений: 102

Статус: 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
Группа: Администраторы
Сообщений: 718

Статус: Offline
покажи схему подключения, как к юарту подключил дисплей?

 
trimДата: Пятница, 27.07.2012, 12:39 | Сообщение # 50
Группа: Пользователи
Сообщений: 105

Статус: Offline
да нет же дисплей потключен по стандартному интерфейсу spi а уарт на уарт1. вот надо текст выводить. как то с помощью. библиотеки вот или вообще картинки

 
Форум » форумы » Общие вопросы по Bascom-AVR » я не волшебник ,я просто учусь (Тонкости работы в Bascom -AVR или хочу все знать)
Страница 1 из 212»
Поиск: