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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

Сообщение Секретный кот »

galex1981 писал(а):Это значит что приезжают к тебе на работу или домой (если кто то нажалуется) УБЭП и начинают проверять компы на наличие лицензионного ПО, и если таковое находится, то возбуждают на тебя уголовное дело

Деццкие страшилки :kill:
Во-первых, проверяют на наличие не лицензионного, а как раз пиратского ПО :))
А во-вторых, посмотрел бы я, как они приедут ко мне домой (и потом ни с чем поедут обратно :))) ) без постановления суда и уже возбуждённого (интересно, на каких основаниях) дела. С работой конечно сложнее, но туда и не нужно таскать лишний софт....
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

Сообщение dimon-790 »

Секретный кот , насколько я понял не пользуетесь "iram" компилятор при этом не матерится ? to: galex1981 круто ! однако у нас в деревне гадюкино всё немного проще...
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

Сообщение Секретный кот »

dimon-790
IRAM это указание разместить переменную во внутренних регистрах. Может приводить к непредсказуемым результатам. Я использую только контроллеры с SRAM и размещаю переменные только там (и в ERAM). Компилятор не ругается.
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

Сообщение dimon-790 »

чёт никак не пойму , как можно без iram обойтись в тини13-ой ? можно примерчик посмотреть ? если не жалко конечно.
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Аватара пользователя
Intel_agent
Родился
Сообщения: 18
Зарегистрирован: Вс апр 18, 2010 16:43:08
Откуда: Улан-Удэ

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

Сообщение Intel_agent »

Огромное спасибо WildCat за перевод статей, вот по ним практически написал более половины необходимой прошивки, осталось немного, но вот сразу возник вопрос.

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

$regfile = "m8def.dat"
$crystal = 4000000
$hwstack = 32
$swstack = 10
$framesize = 40

Config portd.2 = Input
Config portd.3 = Input

Config Int0 = Falling
Const Debouncetime = 1

Dim zad_temp As Integer

Set portd.3

On Int0 _int0

zad_temp = 0

Enable Interrupts
Enable Int0

Do
Loop

_int0:
  Waitms Debouncetime
  If portd.2 = 0 Then
    If portd.3 = 0 Then
       zad_temp=zad_temp+5
    Else
       zad_temp=zad_temp-5
    End if
  End If
  Gifr = 64
Return
End

Так вот собственно проблема, при вращении ручки энкодера в любую сторону, происходит например увеличение показаний в обоих случаях. Это-же не нормально :cry:
Перекопал все, ничего не смог найти, но при попытке прозвонки самого энкодера (если я правильно понимаю, выходы должны поочередно переключаться на землю) а получается так что они одновременно либо на земле. либо висят в воздухе. Так должно быть или энкодер дохлый?
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

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

Сообщение max50 »

Лично я делаю так:

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

$regfile = "m16def.dat"                                     'подключаем файл заголовков для контроллера ATmega16
$crystal = 8000000                                          'частота кварцевого генератора

$baud = 9600                                                'настройка скорости передачи RS-232
$hwstack = 32                                               'аппаратный стек
$swstack = 10                                               'програмный стек
$framesize = 40                                             'размер фрейма

'настраиваем ЖКИ
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Lcd = 16 * 2                                         'ЖКИ 2 строки по 16 символов
Cursor Off                                                  'выключить курсор

'VALCODER________________________    выводы енкодера(валкодера)
Config Pind.3 = Input                                       'Valcoder A INT1
Valcod_a Alias Pind.3
Config Pina.4 = Input                                       'Valcoder B
Valcod_b Alias Pina.4
Set Portd.3
Set Porta.4

'объявляем переменные
Dim Valcod_param As Byte
Dim Valcod_cange As Bit

Config Int1 = Falling                                       'настраиваем внешнее прерывание INT1 на срабатывание при изменении из "1" в "0"
On Int1 Valcoder_change                                     'подпрограмма обработка прерывания Valcoder_change
Enable Int1                                                 'разрешаем работу прерывания  INT1
Enable Interrupts                                           'разрешаем глобальные прерывания

Cls                                                         'очищаем экран ЖКИ
Locate 1 , 10                                               'задаем позицию курсора
Lcd "Enc=" ; Valcod_param                                   'выводим переменную изменения значения енкодера(валкодера)

Do                                                          'начало цикла

If Valcod_cange = 1 Then                                    'если битовая переменна Valcod_cange = 1 (крутили енкодер(валкодер)
                       Locate 1 , 14                        'то задаем позицию курсора
                       Lcd Valcod_param ; "  "              'выводим переменную изменения значения енкодера(валкодера)
                       Reset Valcod_cange                   'сбрасываем битовую переменную Valcod_cange
                       Sound Buzer , 10 , 500               'генерим звук
End If

Loop                                                        'замыкаем цикл


Valcoder_change:                                            'подпрограмма обработки прерывания INT1
'*******************************************************************************
If Valcod_b = 1 Then                                        'если на линии B лог "1"
                  If Valcod_param <> 255 Then Incr Valcod_param       'то если  переменная Valcod_param не достигла значения 255 увеличиваем ее на 1
                Else                                        'если на линии B лог "0"
                  If Valcod_param <> 0 Then Decr Valcod_param       'то если  переменная Valcod_param не достигла значения 0 уменьшаем ее на 1
End If
Set Valcod_cange                                            'выставляем битовую переменную Valcod_cange
Return                                                      'возврат из подпрогрммы

End                                                         'конец программы
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Аватара пользователя
Intel_agent
Родился
Сообщения: 18
Зарегистрирован: Вс апр 18, 2010 16:43:08
Откуда: Улан-Удэ

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

Сообщение Intel_agent »

Хе... даже с кодом max50 идет изменение только в одну сторону. Склоняюсь к дерьмовому энкодеру (в магазин пришел, на месте подключил несколько различных энкодеров все ведут себя одинаково). Продавец говорит типа глюк прошивки... но что-то сомнения гложат...
Аватара пользователя
kip96
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Ср авг 26, 2009 08:24:50
Откуда: 1300км от Пупа

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

Сообщение kip96 »

Ещё вариант проверки энкодера

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

do
debounce Valcod_a, 0, Valcoder_change,sub
loop
.....
Valcoder_change:
if Valcod_b=0 then Valcod_cange=Valcod_cange+1
else
Valcod_cange=Valcod_cange-1
end if
return
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Аватара пользователя
Intel_agent
Родился
Сообщения: 18
Зарегистрирован: Вс апр 18, 2010 16:43:08
Откуда: Улан-Удэ

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

Сообщение Intel_agent »

kip96, к сожалению видимо энкодер убитый, результат один :cry:

P.S. Заказал новый энкодер в Москве, придет, проверю снова и уже точно буду знать где косяк. аппаратный или программный.

Есть еще один вопрос. Если можно, пример кода на bascom'e для Atmega8 по реализации ШИМ'а, почитал тут соседние темы про него, но так и не понял что к чему.
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

Сообщение Секретный кот »

dimon-790 писал(а):чёт никак не пойму , как можно без iram обойтись в тини13-ой ? можно примерчик посмотреть ? если не жалко конечно.

Не жалко конечно :)). Мигание светодиодом, пачками по 5 импульсов, на tiny13:

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

$regfile = "ATtiny13.dat"

$crystal = 9600000
$hwstack = 16                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 20                                             ' default use 40 for the frame space

Dim Temp1 As Word                                           'временной интервал 1
Dim Temp2 As Word                                           'временной интервал 2
Dim I As Byte                                               'переменная цикла

Led Alias Portb.2                                           'светодиод

Ddrb = &B00000100                                           'направление линий порта B
Portb = &B00000000                                          'гашение порта B

Temp1 = 500                                                 'короткая пауза
Temp2 = 4000                                                'длинная пауза

Do

For I = 1 To 5                                              'повторить 5 раз

Set Led                                                     'зажечь светодиод
Waitms Temp1                                                'короткая пауза

Reset Led                                                   'погасить светодиод
Waitms Temp1                                                'короткая пауза

Next I

Waitms Temp2                                                'длинная пауза

Loop

End
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

Сообщение dimon-790 »

Спасибо Секретный кот , я уже и не надеялся на ответ :dont_know: . Насколько я понял вся фишка в этих трёх строках...?
$hwstack = 16
$swstack = 10
$framesize = 20
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Аватара пользователя
Секретный кот
Поставщик валерьянки для Кота
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки
Контактная информация:

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

Сообщение Секретный кот »

dimon-790
Получается, что да – сам удивился :dont_know:. Я сначала хотел запостить готовую прогу под tiny13, написанную в прошлом году, но с удивлением обнаружил, что в новой версии Барсика она не компилится! :shock: С ошибкой Out of SRAM space! Это при том, что эта прога была благополучно скомпилирована и уже больше года трудится у заказчика :o.
Естественно, сразу залез на форум разработчиков, и тут выясняется, что вся сумма hwstack+swstack+framesize берётся из SRAM, а следовательно при SRAM в 64 байта дефолтные значения стеков не оставляют от неё вообще ничего. Звучит логично, но тем более странно, почему эта прога нормально компилилась предыдущей версией Барсика (1.11.9.0 кажется).
Даже остановленные часы два раза в сутки показывают правильное время.
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

Сообщение dimon-790 »

Мда,похоже фирма начала халтурить :kill: . У меня тут ещё вопросик: как записать бит в еепром ?
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
dhouse
Встал на лапы
Сообщения: 84
Зарегистрирован: Пт апр 16, 2010 12:30:03

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

Сообщение dhouse »

Подскажите, как настроить BASCOM, чтобы он работал с программатором AVR910? CvAVR с ним нормально работает, а в BASCOM выставил и номер порта, и модель программатора, но даже считать чип не выходит.
Radan
Мучитель микросхем
Сообщения: 465
Зарегистрирован: Ср июн 21, 2006 08:24:32
Откуда: Лисичанск
Контактная информация:

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

Сообщение Radan »

Нужно прочитать программой контроллера Lock bit для Меги48. Кто нибудь сталкивался с подобным?
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

Сообщение dimon-790 »

dhouse писал(а):Подскажите, как настроить BASCOM, чтобы он работал с программатором AVR910? CvAVR с ним нормально работает, а в BASCOM выставил и номер порта, и модель программатора, но даже считать чип не выходит.

а скорость порта выставить не забыл ? , у меня работал вроде без особых проблем . Единственная заморочка с перемычкой , на самом прогрраматоре которая переключает скорость, на повышенной скороси мегу 8-ю не хотел определять.
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
dhouse
Встал на лапы
Сообщения: 84
Зарегистрирован: Пт апр 16, 2010 12:30:03

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

Сообщение dhouse »

Пробовал устанавливать скорость порта от 9600 до 115200. Результат одинаковый...
Paha100
Родился
Сообщения: 13
Зарегистрирован: Вс апр 25, 2010 20:45:03

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

Сообщение Paha100 »

Подскажите как усреднить показание АЦП 10 бит без потери общей скорости выполнения программы?
Т.е. имеется мультиплексор с 16 входящими каналами и 1 выходящим на АЦП меги32, Перебирая каналы считываем напряжения (всего 16) с различных датчиков.
Датчики разные, как усреднить значения?
Цикл когда берется среднее из 8(допустим) измерений одного канала сильно замедляет софт.
16 каналов да по 8 измерений на каждый....

Павел
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

Сообщение dimon-790 »

На днях начитавшись арабских книжек , решил сваять и себе небольшую отладочную платку. Может кого заинтересует идея и поможет мне добить её до хепи энда !!! в принципе плата уже разведена нужно только проверить на ошибки ...
Вложения
otladka.rar
(233.44 КБ) 345 скачиваний
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Аватара пользователя
dimon-790
Мучитель микросхем
Сообщения: 442
Зарегистрирован: Пт авг 29, 2008 09:22:37
Контактная информация:

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

Сообщение dimon-790 »

переконвертил в png на случай если нет орлика.
Вложения
otladka_png.rar
(294.42 КБ) 396 скачиваний
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Ответить

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