BASCOM AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
_Vasilij_
Встал на лапы
Сообщения: 124
Зарегистрирован: Пт янв 25, 2013 02:48:32

Re: BASCOM AVR в вопросах и ответах

Сообщение _Vasilij_ »

а в баскоме есть многомерные массивы ? в хелпе ищу-ищу, никак не найду, совсем плохо аглицкий знаю
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Увы, нет.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
tanx
Родился
Сообщения: 5
Зарегистрирован: Вт апр 19, 2011 13:39:18

Re: BASCOM AVR в вопросах и ответах

Сообщение tanx »

Здравствуйте!!!
Есть небольшая проблема, помогите пожалуйста - как говориться кто чем сможет!!!
Есть некая задачка сделать так называемый прибор который бы делал расчет расстояния между двумя указанными точками и определял курс. Известно 2-е координаты GPS одной точки (LAT1,LON1) и 2-е координаты GPS другой точки (LAT2,LON2). Например - (LAT1=51.0366, LON1=31.5474) и (LAT2=50.2673, LON2=30.3109), первая задача ввести их с помощью например 4-ох кнопок. Потом нажатием кнопки на экран выводилось бы значения distance и course вот и все - казалось бы ничего сложного но пробовал по разному - не получается.....! Уже согласен и на использование внешней памяти и изменить например ввод данных, но... Может кто подскажет свой вариант решения буду очень признателен.

-Имеем следующее:
процессор Atmega8, Atmega16,Atmega128 не важно, экран от NOKIA6610, 4 кнопки управления. (GPS в приборе не участвует, данные вводятся уже как бы известные).
Подскажите как решить проблему.

Все нужные файлы прилагаю...
Разница между файлом distance between GPS coordinates1 и enter_data-coordinates в том, что в первой программе ничего не нужно вводить из-за наличия строки процедуры
Call Get_distance_course(51.0366 , 31.5474 , 50.2673 , 30.3109), а нужно как раз вводить координаты GPS из вне... В Баскоме не силен поэтому прошу помощи.

""""""""""""""""""""""""""""""""""Помогите пожалуйста"""""""""""""""""""""""""""""""""""
Вложения
distance between GPS.rar
(223.14 КБ) 201 скачивание
_Vasilij_
Встал на лапы
Сообщения: 124
Зарегистрирован: Пт янв 25, 2013 02:48:32

Re: BASCOM AVR в вопросах и ответах

Сообщение _Vasilij_ »

А есть функция, чтоб число переворачивала ? ну например из 0110_0000, делала 0000_0110
сейчас так делаю, но чую что-то должно быть готовое

Код: Выделить всё

For X = 0 To 7
      X2 = 7 - X
      Temp.x = T1.x2
 Next X



tanx писал(а):Разница между файлом distance between GPS coordinates1 и enter_data-coordinates в том, что в первой программе ничего не нужно вводить из-за наличия строки процедуры ..... а нужно как раз вводить координаты GPS из вне...
чего-то я не понял, ну во второй-то программе(кторая enter), все же циферки нормально вводятся, чем она не нравится ?
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

Re: BASCOM AVR в вопросах и ответах

Сообщение kip96 »

Ну это не переворот. Тут , первое, что в голову пришло- "ROTATE var , LEFT/RIGHT[ , shifts]" 4 раза
По кругу двигает.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
tanx
Родился
Сообщения: 5
Зарегистрирован: Вт апр 19, 2011 13:39:18

Re: BASCOM AVR в вопросах и ответах

Сообщение tanx »

_Vasilij_ писал(а):
чего-то я не понял, ну во второй-то программе(кторая enter), все же циферки нормально вводятся, чем она не нравится ?



Так дело как раз и в этом, что нужно ввести с помощью кнопок любых 2 точек координат GPS
и после нажатия скажем средней кнопки (как в примере ПРОТЕУС)- должно выводиться результат,
а в итоге получается и курс и дистанция =0. Можно судить, что расчет не происходит.
По логике получается, что не происходит ввод координат, или не правильно определены функции,процедуры, типы данных, или до расчета просто не доходит дело......*?
_Vasilij_
Встал на лапы
Сообщения: 124
Зарегистрирован: Пт янв 25, 2013 02:48:32

Re: BASCOM AVR в вопросах и ответах

Сообщение _Vasilij_ »

tanx, я сам не очень еще в баскоме, но в глаза бросается, то что вводимые параметры lad и lod объявлены как локальные, мне кажется они не вернутся в программу....во-вторых при процедуре ввода они являются string-ами, а при подсчете они же объявлены уже как дабл и соответственно в функцию подсчета отправляются нули...
отсюда нужно всетаки вытащить в программу то, что навводили...потом преобразовать строку в число, и только после этого вызывать подсчет...навскидку фигня в пару строк, но я не сталкивался :)))

pps попробуй убрать слово local от общих lad и lod , а вот по поводу перевода string в double даже не подскажу, мож оператор какой есть...извини сам тестить не буду, уж очень экран в протеусе поганенький - ничо не вижу.
cattus
Родился
Сообщения: 14
Зарегистрирован: Сб май 26, 2012 16:31:25

Re: BASCOM AVR в вопросах и ответах

Сообщение cattus »

Я хочу извинится, за свою навязчивость.... Помогите пожалуйста с примером, есть три семисегментных индкатора с общим анодом, с этого сайта хотел взять пример для изучения, но там индикаторы с общим катодом http://edm2007.narod.ru/startavr6.html.......
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Здравствуйте.

А Вы прочитайте все статьи из цикла, начиная с самой первой. Именно в ней я писал про типы индикаторов. А потом просто измените коды цифр, и всех делов. Совсем не сложно, просто разобраться нужно... :tea:

P.S. Для создания кодов цифр можете воспользоваться удобной программой LED Code Editor. Интерфейс интуитивно понятен, а суть работы можно увидеть в справке.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
cattus
Родился
Сообщения: 14
Зарегистрирован: Сб май 26, 2012 16:31:25

Re: BASCOM AVR в вопросах и ответах

Сообщение cattus »

edm2007 писал(а):Здравствуйте.

А Вы прочитайте все статьи из цикла, начиная с самой первой. Именно в ней я писал про типы индикаторов. А потом просто измените коды цифр, и всех делов. Совсем не сложно, просто разобраться нужно... :tea:

P.S. Для создания кодов цифр можете воспользоваться удобной программой LED Code Editor. Интерфейс интуитивно понятен, а суть работы можно увидеть в справке.

Сделал все как вы сказали, но на индикаторе выводит восьмерки, что не так я сделал, я использовал программу led code editor
$regfile = "m8def.dat"
$crystal = 8000000

'*****************************************[Определение переменных и констант]************************************

Dim Count As Byte ' переменная для индикации
Dim Number(3) As Byte ' значения трех разрядов

'***********************************************[Инициализация портов]*******************************************

Config Portc.1 = Output ' светодиод

Config Portd = Output ' порт сегментов индикатора

Config Portb.3 = Output ' первый разряд индикатора
Config Portb.4 = Output ' второй разряд индикатора
Config Portb.5 = Output ' третий разряд индикатора

'*********************************************[Инициализация прерываний]*****************************************

Config Timer0 = Timer , Prescale = 64 ' конфигурируем таймер индикации (~500 Гц)
On Ovf0 Refresh ' метка на прерывание индикации

'********************************************[Присвоение уникальных имен]****************************************

Led Alias Portc.1 ' присваиваем имя светодиоду
Dig1 Alias Portb.3 : Dig2 Alias Portb.4 : Dig3 Alias Portb.5 ' и разрядам индикатора

'*********************************************[Начало основной программы]****************************************

Enable Interrupts ' разрешаем все прерывания
Enable Ovf0 ' и для индикации в частности

'----------

Number(1) = 4 ' выведем на индикатор 456
Number(2) = 5
Number(3) = 6

'----------

Do ' крутимся здесь, ожидая прерывание

Toggle Led ' мигаем светодиодом
Wait 1

Loop

'***********************************[Процедуры обработки подпрограмм и прерываний]*******************************

Refresh: ' прерывание таймера Т0 (индикация)

Reset Dig1 : Reset Dig2 : Reset Dig3 ' гасим индикатор

Incr Count : If Count > 3 Then Count = 1 ' выбираем разряд для загрузки

Portd = Lookup(number(count) , Digits) ' закидываем в порт код цифры

Select Case Count ' и включаем соответствующий разряд индикатора
Case 1 : Set Dig1
Case 2 : Set Dig2
Case 3 : Set Dig3
End Select

Return ' выход из обработчика прерывания

Digits: ' цифры

Data &B00000011 , &B10011111 , &B00100101 , &B00001101 , &B10011001 ' 0 1 2 3 4
Data &B01001001 , &B00000101 , &B00011111 , &B00000001 , &B00001001 ' 5 6 7 8 9
wallera
Родился
Сообщения: 4
Зарегистрирован: Вс мар 24, 2013 19:38:23

Re: BASCOM AVR в вопросах и ответах

Сообщение wallera »

Парни подскажите как 128мегу в POWERDOWN загнать, bascom 2 0 7 6 , там новая команда появилась
CONFIG POWERMODE=....
ЧЕ ТОЛЬКО НЕ ПРОБОВАЛ-жрет окаянная 5мА и меньше не как...
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

Re: BASCOM AVR в вопросах и ответах

Сообщение kip96 »

Читайте даташит. Посто в POWERDOWN мало. Про 128 не скажу, но как правило в повердаун много что ещё работает. К примеру "собака", супервизор( в котором опорка много жрёт), если АЦП включён, оять же опорка, порты остались включёнными, компаратор(по умолчанию включён), режим тактирования, опять же - схемное решение (может не контроллер жрёт) ну и т.д.
Вообщем- даташит Вам в помощь!
И тем не менее я мегу48 усыплял, что мог добиться - это 5uA против 0,4uA заявленных.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: BASCOM AVR в вопросах и ответах

Сообщение amv2000 »

cattus писал(а):Сделал все как вы сказали, но на индикаторе выводит восьмерки

Вероятно не всё, общий анод управляется 0.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

cattus, Вы транзисторы какие поставили? amv2000 верно сказал, для управления p-n-p транзисторов (именно их используют для ОА) нужно подавать 0. А значит гаситься индикаторы будут:

Код: Выделить всё

Set Dig1 : Set Dig2 : Set Dig3                ' гасим индикатор


А зажигаться:

Код: Выделить всё

Select Case Count                               ' и включаем соответствующий разряд индикатора
Case 1 : Reset Dig1
Case 2 : Reset Dig2
Case 3 : Reset Dig3
End Select


kip96 писал(а):И тем не менее я мегу48 усыплял, что мог добиться - это 5uA против 0,4uA заявленных.


У меня тинька 2313 в Powerdown меньше 1uA и потребляет. Естественно компаратор и прочее отключено. Что интересно, команда Powerdown судя по регистрам в отладчике, угнала МК в режим IDLE. Как результат - повышенное потребление. А вот Power Powerdown перевела МК в нужный режим.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
cattus
Родился
Сообщения: 14
Зарегистрирован: Сб май 26, 2012 16:31:25

Re: BASCOM AVR в вопросах и ответах

Сообщение cattus »

Транзисторы кт3107, поставил
$regfile = "m8def.dat"
$crystal = 8000000

'*****************************************[Определение переменных и констант]************************************

Dim Count As Byte ' переменная для индикации
Dim Number(3) As Byte ' значения трех разрядов

'***********************************************[Инициализация портов]*******************************************

Config Portc.1 = Output ' светодиод

Config Portd = Output ' порт сегментов индикатора

Config Portb.3 = Output ' первый разряд индикатора
Config Portb.4 = Output ' второй разряд индикатора
Config Portb.5 = Output ' третий разряд индикатора

'*********************************************[Инициализация прерываний]*****************************************

Config Timer0 = Timer , Prescale = 64 ' конфигурируем таймер индикации (~500 Гц)
On Ovf0 Refresh ' метка на прерывание индикации

'********************************************[Присвоение уникальных имен]****************************************

Led Alias Portc.1 ' присваиваем имя светодиоду
Dig1 Alias Portb.3 : Dig2 Alias Portb.4 : Dig3 Alias Portb.5 ' и разрядам индикатора

'*********************************************[Начало основной программы]****************************************

Enable Interrupts ' разрешаем все прерывания
Enable Ovf0 ' и для индикации в частности

'----------

Number(1) = 4 ' выведем на индикатор 456
Number(2) = 5
Number(3) = 6

'----------

Do ' крутимся здесь, ожидая прерывание

Toggle Led ' мигаем светодиодом
Wait 1

Loop

'***********************************[Процедуры обработки подпрограмм и прерываний]*******************************

Refresh: ' прерывание таймера Т0 (индикация)

Set Dig1 : Set Dig2 : Set Dig3 ' гасим индикатор

Incr Count : If Count > 3 Then Count = 1 ' выбираем разряд для загрузки

Portd = Lookup(number(count) , Digits) ' закидываем в порт код цифры

Select Case Count ' и включаем соответствующий разряд индикатора
Case 1 : Reset Dig1
Case 2 : Reset Dig2
Case 3 : Reset Dig3
End Select

Return ' выход из обработчика прерывания

Digits: ' цифры

Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001 ' 0 1 2 3 4
Data &B10010010 , &B10000010 , &B11111000 , &B10000000 , &B10010000 ' 5 6 7 8 9

Спасибо всем помогли ваши советы, принцип работы с индикатором разобрал, извиняюсь за то что подредактировал сообщение....
Последний раз редактировалось cattus Пн мар 25, 2013 16:37:48, всего редактировалось 2 раза.
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Ну вот и действуем соответственно. :)
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
ХатёнаГГ
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Пт фев 27, 2009 01:07:41
Откуда: Иваново - город невест

Re: BASCOM AVR в вопросах и ответах

Сообщение ХатёнаГГ »

Привет котам!
Такая проблема: МК - тини13. Пишу прогу, что б попробовать управление моторредуктором. Объявляю переменные R и Rd, как Word. В них будет храниться результат считывания АЦП.
При компиляции выдаёт еррор 22 на строках 6,7, т.е. где объявляются R и Rd. Программа небольшая, почему же баском ругается, что нет памяти SRAM и как это исправить?
Спойлер$regfile = "attiny13.dat"
Config Portb.1 = Output
Config Portb.0 = Output
Up Alias Portb.0
Down Alias Portb.1
Dim R As Word
Dim Rd As Word
Up = 0
Down = 0
R = 0
Rd = 0
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'конфигурация АЦП
Do
Start Adc 'запускаем аналого-цифровое преобразование
R = Getadc(2)
Rd = Getadc(3)
Stop Adc
If R > Rd Then
Up = 1
Down = 0
End If
If R < Rd Then
Up = 0
Down = 1
If Rd < 204 Then
Up = 0
Down = 0
End If
Else
Up = 0
Down = 0
End If
Loop
End
Аватара пользователя
edm2007
Поставщик валерьянки для Кота
Сообщения: 2255
Зарегистрирован: Вт апр 21, 2009 22:24:10
Откуда: Иркутск
Контактная информация:

Re: BASCOM AVR в вопросах и ответах

Сообщение edm2007 »

Привет.

Код: Выделить всё

$regfile = "attiny13.dat"
$crystal = тут Ваша частота работы МК
$hwstack = 32
$swstack = 8
$framesize = 16
.....................................
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
ХатёнаГГ
Первый раз сказал Мяу!
Сообщения: 32
Зарегистрирован: Пт фев 27, 2009 01:07:41
Откуда: Иваново - город невест

Re: BASCOM AVR в вопросах и ответах

Сообщение ХатёнаГГ »

Спасибомяууу)) :)) Всё закомпилилось)
А что не хватало? Что эти команды делают?
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: BASCOM AVR в вопросах и ответах

Сообщение amv2000 »

ХатёнаГГ писал(а):Что эти команды делают?

Если интересно то здесь обсуждалась эта проблема http://bascomavr.3bb.ru/viewtopic.php?id=494
здесь http://avrproject.ru/forum/9-122-1
или на официальном http://www.mcselec.com/index.php?option ... &Itemid=57
Ответить

Вернуться в «AVR»