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

Обсуждаем контроллеры компании Atmel.
Vet-RX
Встал на лапы
Сообщения: 113
Зарегистрирован: Чт июл 30, 2009 14:33:42

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

Сообщение Vet-RX »

Пробовал другую библиотеку подключать, для вертикальной ориентации дисплея, шрифт серавно также обрезанный, значит сам файл шрифта кривой :cry:
Аватара пользователя
Igor_67
Электрический кот
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

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

Сообщение Igor_67 »

myx писал(а):В теории понял, а вот как на практике написать не знаю. Ради добавления возможности регулировать температуру с десятыми долями не хочется бэйсик изучать. Может накидаете кусок программы с изменениями?

Сейчас на работе целыми днями - некогда. В выходные посмотрю, если время позволит.
Цапу крутить надо!!! Ку или не ку?
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

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

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

Сообщение edm2007 »

На самом деле все просто: как обычно загружаем в МК файл .OBJ, запускаем пошаговую отладку, а затем в меню "Отладка" выбираем в самом низу "I2C Memory Internal Memory".

Изображение

P.S. Если быть внимательным, то можно заметить что так же в списке присутствуют датчики DS18XXX, содержимое которых можно так же посмотреть. То бишь, что в проекте используется, то и можно подробно разглядеть. Что при отладке очень удобно. Вообще меню "Отладка" хранит массу сокровищ. Тут можно и содержимое регистров посмотреть, и EEPROM самого МК, да что там, можно даже исходный код на АСМе посмотреть. Так что стоит уделить немного времени, Proteus - это совсем не игрушка. :tea:
Вложения
leo_memory.gif
(85.91 КБ) 1260 скачиваний
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Спасибо!!! :))) Сегодня после работы по эксперементирую. Пока так и не понял как в меню изменять константы. Меню сделал а толку то... Снова буду биться с баскомом :facepalm:
ВасилийВикторович
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт мар 18, 2010 23:31:57
Откуда: Домодедово

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

Сообщение ВасилийВикторович »

Внимание! Вопрос знатокам! Почему при нажатии кнопки на пульте, toggle выполняется два раза? Пробовал после toggle relay ставить wait, но один хрен хоть минуту задержку делай, все равно еще раз после задержки срабатывает.

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

$regfile = "attiny13.dat"
$crystal = 9600000
$lib "mcsbyte.lbx"

Dim Address As Byte
Dim Command As Byte
Config Portb.4 = Output
Relay Alias Portb.4
Config Rc5 = Pinb.0
Enable Interrupts

Do
Getrc5(address , Command)             
Command = Command And &B01111111

If Command = 12 Then 
   Toggle Relay
End If
Loop   
End 

Причем делал тоже самое на 90s2313 и проблем небыло. Заметил вот что: если постараться на пульте жать кнопку очень коротко(что редко но случается) то все ок. Выходит что такой своеобразный "дребезг" получается. Вот если бы это был не пульт rc5 а простая кнопка подключенная к мк напрямую, я б дописал GIFR = 64 как здесь:

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

Button:
Toggle Relay
Waitms 100
Gifr = 64
 Return

End
А так уже не знаю что и делать, голова кипит уже.
Аватара пользователя
max50
Мучитель микросхем
Сообщения: 497
Зарегистрирован: Ср дек 10, 2008 21:24:28
Откуда: Алтайский край, Барнаул

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

Сообщение max50 »

ВасилийВикторович писал(а):Пробовал после toggle relay ставить wait, но один хрен хоть минуту задержку делай, все равно еще раз после задержки срабатывает.

Надо не после toggle relay, а перед:

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

If Command = 12 Then  
   Waitms 200
   Toggle Relay
End If

И тут посмотри.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
ВасилийВикторович
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт мар 18, 2010 23:31:57
Откуда: Домодедово

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

Сообщение ВасилийВикторович »

max50 писал(а):
ВасилийВикторович писал(а):Надо не после toggle relay, а перед:

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

If Command = 12 Then  
   Waitms 200
   Toggle Relay
End If


Так тоже пробовал, опрашивается rc5, затем задержка, и один хрен два раза toggle.

А вот за такую подсказку :

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

Config Rc5 = Pinb.3 , Wait = 200 ' *Wait - подбирать по стабильному срабатыванию

Благодарю! Завтра попробую, думаю должно помочь.
Хотя странно что в 2313 работает нормально.
ВасилийВикторович
Открыл глаза
Сообщения: 71
Зарегистрирован: Чт мар 18, 2010 23:31:57
Откуда: Домодедово

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

Сообщение ВасилийВикторович »

Оказалось все намного проще, код работает как надо! Проблема в конструкции, реле у меня управляется не
только с пульта, но еще и кнопкой. Как оказалось подтяжки 10кОм маловато, наводки от реле вызывали срабатывание еще и по кнопке.
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

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

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

Сообщение edm2007 »

осторожно! леоныч!!! писал(а):Думаю лучше все константы для меню хранить во внешней памяти. И оттуда их менять.


Естественно. Еще можно написать программу для компьютера, подключить к нему устройство, и пусть компьютер "константы" изменяет. Он жеж больше, он жеж умнее. А еще лучше бабушку на пенсии нанять. Пускай за определенную плату время по будильнику отмеряет и кнопки нажимает. Электроники минимум, и человек при деле.

Я понять не могу, в чем проблема-то? Что именно у Вас не получается? Вы вот когда говорите:

осторожно! леоныч!!! писал(а):в протеусе начинаются глюки и ошибка вылетает...


так уточняйте, какие глюки, какая ошибка, и при каком исходнике. И главное, что же Вы хотели получить. Чем подробнее и грамотнее будет вопрос, тем быстрее и точнее будет ответ.

P.S. И еще, называйте вещи своими именами. Константа - с латинского буквально "постоянный, неизменяющийся". Число Пи, количество секунд в минуте, скорость света - все это константы. Их нельзя изменить. То же что Вы хотите поменять называется переменной. Тут все ясно и из названия.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Зря на меня сердитесь. Назвал не правильно, не спорю. Мне нужно изменять значение задержки waitms. А внешняя память нужна, не надо бабушек, тут и дедушек хватает, внешняя память в основном для сохранения значений регистра, причем эти значения еще и нумероваться будут. И записей не менее 100 будет. А поскольку есть внешняя память то почему бы в ней не держать значения? У неё и ресурс гораздо больше чем у памяти контроллера.

Есть значение "W" Его надо запоминать по нажатию кнопки, менять его задержку на переключение.

Я писал, наверняка не правильно (скорее всего 100%) Waitms = C ( С это то что нужно изменять в меню. Изначально условие что к примеру "С" = 50.

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

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

Сообщение edm2007 »

осторожно! леоныч!!! писал(а):Зря на меня сердитесь.


Вот заняться мне нечем. :)

Проблема какая-то надуманная, а Вы ее решаете которую неделю... Кто мешает сделать так:

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

Dim Temp as Word   ' переменная, определяющая величину задержки (0 - 65535)

................

Waitms Temp


И меняйте эту переменную как Вам угодно. Не хочите? Или может Вам нужно изменять задержку в микросекундах (Waitus нельзя использовать с переменной)? Сделайте в виде подпрограммы:

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

Dim Count as Word, Temp as Word

..................

Any_delay:

For Count = 1 To Temp

Waitus 1

Next

Return


Меняйте переменную Temp и вызывайте Gosub Any_delay когда угодно. Все равно не устраивает? Сделайте функцию, которой будете передавать нужное значение, цикл останется прежним.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

Ну вот... Видимо теории мало у меня. Хотя если честно нормальной книжки нету у меня. Поглащаю информацию отовсюду. Но такого варианта не видел. Еще раз спасибо. Буду пробовать! А бабушки и дедушки тут не причем :) Им лучше телевизор дома смотреть :))
Аватара пользователя
htscooter
Вымогатель припоя
Сообщения: 566
Зарегистрирован: Вт ноя 18, 2008 20:33:17
Откуда: г.Луганск

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

Сообщение htscooter »

Уважаемые коты, подскажите, в чем может быть дело. Кусок кода, а именно

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

For I = 1 To 4
      Cyfra_ = Cyfra(i)
      Razryad_ = Cyfra_ * 8                                             'выбираем строку в таблице данных
      Razryad_ = Segment + Razryad_                                     'выбираем столбец в таблице данных
      Razryad_ = Lookup(razryad_ , Cifri)                               'забираем данные
      If Common_cathode = 1 Then Razryad_ = Not Razryad_                'инвертируем в случае общего катода
      Razryad(i) = Razryad_
Next I

вываливает ошибку в строчке Razryad(i) = Razryad_, пишет "Source variable does not match the target variable", несмотря на то, что все переменные одинаковые, и обозначены вначале кода, а именно

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

Dim Razryad_ As Byte
Dim Razryad(4) As Byte
Dim Cyfra(4) As Byte                                                    'хранение минут и секунд по разрядам (cyfra(1) - самый старший разряд, cyfra(4) - самый младший)
Dim Cyfra_ As Byte
Dim Segment As Byte
Dim I As Byte

Что за беда?
----
В причине не разобрался, но вылечилось добавлением в конце строчки апострофа для комментария :dont_know:
Хорошо и надежно работающая система безусловно красива
осторожно! леоныч!!!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Сообщение осторожно! леоныч!!! »

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

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

Сообщение edm2007 »

htscooter писал(а):Что за беда?


Никогда не используйте символ "_" в таком виде, не создавайте себе проблемы на ровном месте. Дело в том что этот служебный символ воспринимается компилятором как символ переноса строки. Например, последняя команда трактуется как:

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

Razryad(i) = Razryad Next I 


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

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

Dim A As Byte , B As Byte , C As Byte , D As Byte , _
E As Byte , F As Byte , G As Byte , H As Byte


Резюмируем: Просто дайте нормальные имена переменным, и все будет в порядке. К слову, использовать символ "_" как псевдопробел можно спокойно, это наоборот улучшает читаемость кода (Flag_dot, например).
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Аватара пользователя
htscooter
Вымогатель припоя
Сообщения: 566
Зарегистрирован: Вт ноя 18, 2008 20:33:17
Откуда: г.Луганск

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

Сообщение htscooter »

Буду знать, спасибо!
Хорошо и надежно работающая система безусловно красива
vanyap1
Электрический кот
Сообщения: 1048
Зарегистрирован: Пт июл 30, 2010 11:49:03
Откуда: Украина
Контактная информация:

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

Сообщение vanyap1 »

Что то у меня не выходит получить информацию у вменяемом виде с датчика - tmp006. Локальную температуру получил, а температуру объекта не получается. Беспорядочно меняется значение от 100 до 200. Может у кого то уже есть опыт работы с таким датчиком? Ну и собственно кусок кода, тот который с расчетом этой температуры?

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

Tmp006:
I2cstart
I2cwbyte Tmp006w
I2cwbyte B1
I2cstart
I2cwbyte Tmp006r
I2crbyte Hightemp , Ack
I2crbyte Lowtemp , Nack
I2cstop
 Temp = Makeint(hightemp , Lowtemp )
  Return
Аватара пользователя
svic
Друг Кота
Сообщения: 5837
Зарегистрирован: Ср ноя 17, 2010 23:10:55
Откуда: Ижевск LO66NU
Контактная информация:

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

Сообщение svic »

Доброго времени суток всем пушистым! Прошу совета по небольшому вопросу - будет-ли мега8 физически отлавливать уровень на PD2 (рыба прилагается в архиве). Почему-то никак не получается сконфигурировать означенную ногу, как PIND.... :dont_know:
tun.rar
(100.72 КБ) 186 скачиваний
В начале жизнь мучает вопросами, в конце - ответами...
Ответить

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