Страница 155 из 304
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн ноя 12, 2012 20:02:04
Vet-RX
Пробовал другую библиотеку подключать, для вертикальной ориентации дисплея, шрифт серавно также обрезанный, значит сам файл шрифта кривой

Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт ноя 13, 2012 04:56:43
Igor_67
myx писал(а):
В теории понял, а вот как на практике написать не знаю. Ради добавления возможности регулировать температуру с десятыми долями не хочется бэйсик изучать. Может накидаете кусок программы с изменениями?
Сейчас на работе целыми днями - некогда. В выходные посмотрю, если время позволит.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт ноя 13, 2012 11:46:37
осторожно! леоныч!!!
Можно еще дурацкий вопрос? Вот использую в проекте баском микросхему памяти 24lc64. А как во время работы в протеусе посмотреть как меняется её содержимое?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт ноя 13, 2012 14:47:57
edm2007
На самом деле все просто: как обычно загружаем в МК файл .OBJ, запускаем пошаговую отладку, а затем в меню "Отладка" выбираем в самом низу "I2C Memory Internal Memory".
P.S. Если быть внимательным, то можно заметить что так же в списке присутствуют датчики DS18XXX, содержимое которых можно так же посмотреть. То бишь, что в проекте используется, то и можно подробно разглядеть. Что при отладке очень удобно. Вообще меню "Отладка" хранит массу сокровищ. Тут можно и содержимое регистров посмотреть, и EEPROM самого МК, да что там, можно даже исходный код на АСМе посмотреть. Так что стоит уделить немного времени, Proteus - это совсем не игрушка.

Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт ноя 15, 2012 04:41:28
осторожно! леоныч!!!
Спасибо!!!

Сегодня после работы по эксперементирую. Пока так и не понял как в меню изменять константы. Меню сделал а толку то... Снова буду биться с баскомом

Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт ноя 15, 2012 20:06:38
ВасилийВикторович
Внимание! Вопрос знатокам! Почему при нажатии кнопки на пульте, 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
А так уже не знаю что и делать, голова кипит уже.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт ноя 15, 2012 21:34:35
max50
ВасилийВикторович писал(а):Пробовал после toggle relay ставить wait, но один хрен хоть минуту задержку делай, все равно еще раз после задержки срабатывает.
Надо не после toggle relay, а перед:
Код: Выделить всё
If Command = 12 Then
Waitms 200
Toggle Relay
End If
И
тут посмотри.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт ноя 15, 2012 21:44:37
ВасилийВикторович
max50 писал(а):ВасилийВикторович писал(а):Надо не после toggle relay, а перед:
Код: Выделить всё
If Command = 12 Then
Waitms 200
Toggle Relay
End If
Так тоже пробовал, опрашивается rc5, затем задержка, и один хрен два раза toggle.
А вот за такую подсказку :
Код: Выделить всё
Config Rc5 = Pinb.3 , Wait = 200 ' *Wait - подбирать по стабильному срабатыванию
Благодарю! Завтра попробую, думаю должно помочь.
Хотя странно что в 2313 работает нормально.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пт ноя 16, 2012 08:31:44
ВасилийВикторович
Оказалось все намного проще, код работает как надо! Проблема в конструкции, реле у меня управляется не
только с пульта, но еще и кнопкой. Как оказалось подтяжки 10кОм маловато, наводки от реле вызывали срабатывание еще и по кнопке.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс ноя 18, 2012 08:43:34
осторожно! леоныч!!!
Мда... Думаю лучше все константы для меню хранить во внешней памяти. И оттуда их менять. Не получается у меня в меню менять константы, в протеусе начинаются глюки и ошибка вылетает...

Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс ноя 18, 2012 10:19:19
edm2007
осторожно! леоныч!!! писал(а):Думаю лучше все константы для меню хранить во внешней памяти. И оттуда их менять.
Естественно. Еще можно написать программу для компьютера, подключить к нему устройство, и пусть компьютер "константы" изменяет. Он жеж больше, он жеж умнее. А еще лучше бабушку на пенсии нанять. Пускай за определенную плату время по будильнику отмеряет и кнопки нажимает. Электроники минимум, и человек при деле.
Я понять не могу, в чем проблема-то? Что именно у Вас не получается? Вы вот когда говорите:
осторожно! леоныч!!! писал(а):в протеусе начинаются глюки и ошибка вылетает...
так уточняйте, какие глюки, какая ошибка, и при каком исходнике. И главное, что же Вы хотели получить. Чем подробнее и грамотнее будет вопрос, тем быстрее и точнее будет ответ.
P.S. И еще, называйте вещи своими именами. Константа - с латинского буквально "постоянный, неизменяющийся". Число Пи, количество секунд в минуте, скорость света - все это константы. Их нельзя изменить. То же что Вы хотите поменять называется переменной. Тут все ясно и из названия.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс ноя 18, 2012 13:26:28
осторожно! леоныч!!!
Зря на меня сердитесь. Назвал не правильно, не спорю. Мне нужно изменять значение задержки waitms. А внешняя память нужна, не надо бабушек, тут и дедушек хватает, внешняя память в основном для сохранения значений регистра, причем эти значения еще и нумероваться будут. И записей не менее 100 будет. А поскольку есть внешняя память то почему бы в ней не держать значения? У неё и ресурс гораздо больше чем у памяти контроллера.
Есть значение "W" Его надо запоминать по нажатию кнопки, менять его задержку на переключение.
Я писал, наверняка не правильно (скорее всего 100%) Waitms = C ( С это то что нужно изменять в меню. Изначально условие что к примеру "С" = 50.
Ругаться и злится все умею, даже я, но я только учусь.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс ноя 18, 2012 14:10:03
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 когда угодно. Все равно не устраивает? Сделайте функцию, которой будете передавать нужное значение, цикл останется прежним.
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс ноя 18, 2012 18:23:10
осторожно! леоныч!!!
Ну вот... Видимо теории мало у меня. Хотя если честно нормальной книжки нету у меня. Поглащаю информацию отовсюду. Но такого варианта не видел. Еще раз спасибо. Буду пробовать! А бабушки и дедушки тут не причем

Им лучше телевизор дома смотреть

Re: BASCOM AVR в вопросах и ответах
Добавлено: Вс ноя 18, 2012 19:15:54
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
Что за беда?
----
В причине не разобрался, но вылечилось добавлением в конце строчки апострофа для комментария

Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн ноя 19, 2012 05:40:50
осторожно! леоныч!!!
А какая версия компилятора?
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн ноя 19, 2012 14:49:12
edm2007
htscooter писал(а):Что за беда?
Никогда не используйте символ "_" в таком виде, не создавайте себе проблемы на ровном месте. Дело в том что этот служебный символ воспринимается компилятором как символ переноса строки. Например, последняя команда трактуется как:
что естественно является ошибкой. Вставка комментариев конечно помогает, они собственно и являются разделителями для кода. Но место это очень коварное, попробуйте ради интереса убрать комментарии в других строках, и все поймете сами. Правильным и полезным для визуального восприятия использованием данного символа будет, например, такой вариант (когда список переменных не умещается в одну строку):
Код: Выделить всё
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, например).
Re: BASCOM AVR в вопросах и ответах
Добавлено: Пн ноя 19, 2012 20:06:29
htscooter
Буду знать, спасибо!
Re: BASCOM AVR в вопросах и ответах
Добавлено: Вт ноя 20, 2012 21:08:40
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
Re: BASCOM AVR в вопросах и ответах
Добавлено: Чт ноя 22, 2012 14:03:30
svic
Доброго времени суток всем пушистым! Прошу совета по небольшому вопросу - будет-ли мега8 физически отлавливать уровень на PD2 (рыба прилагается в архиве). Почему-то никак не получается сконфигурировать означенную ногу, как PIND....