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

Обсуждаем контроллеры компании Atmel.
Ответить
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Да давали. Но проблема в том что второй порт куда отсылается старший байт (8бит) мне нужен не полностью. А только 2 пина чтоб считать до 1024. Остальные 6 пинов необходимы для других целей. Но они уже не переключаются и я не понимаю почему. Видимо то что записано в порт , ждет комманды на + или - и по этому не может быть изменено. Но это так, предположения не более. Вот пока не могу понять как заставить работать отдельно порты эти...
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2106
Зарегистрирован: Ср сен 17, 2008 14:32:15
Откуда: Старые Васюки

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

А вы меняйте не весь порт, а только нужные разряды (по маске).
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Реклама
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

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

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

Ну например так (для вывода только 2 младших бит в порт B):

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

x=&b00000010 'Переменная, которую надо вывести
portb = portb AND &b11111100 'Очистка двух младших бит порта B
portb = portb OR x 'Вывод в порт B
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

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

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

Сделал проще))))) Назначил в порту последние 6 пинов входами и перенёс туда кнопки :))) Стало в разы удобнее и всё прекрасно работает + никаких лишних строчек в коде :hunger:
Реклама
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

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

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

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

If pinb <> (внешнее условие) then goto 10 ?
:))
Даже остановленные часы два раза в сутки показывают правильное время.
Контактная информация:
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

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

Сообщение edm2007 »

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

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

Ну почему же не устраивают? Применяю. Но пока не очень понятно как применять Do в подпрограмме. Пробую, учусь, экспериментирую.
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

И снова ведь разобрался! блин меня модераторы за флуд на год забанят :oops:
Все просто

Return - Нужно ставить если вверху в коде подпрограмма. Пока не поставил у меня творилось что попало!

Vol:

Do
If какое либо там условие
If Stp = 1 проверяем порт
If Stp = 1 Then Waitms 100 задержка которую потом надо будет придумать как регулировать
If Stp = 0 Then Return если на порт пришел 0 которого ждали то возвращаемся в основную программу
Loop

Теперь надо придумать как регулировать задержку.
можно ли назначить Waitms например так --

X = 50
Waitms = X ??? :dont_know:
Электрический кот
Аватара пользователя
Сообщения: 1051
Зарегистрирован: Вт окт 21, 2008 11:46:23
Откуда: Барнаул

Сообщение Igor_67 »

myx писал(а):
Igor_67 писал(а):To myx: То что вы написали - это не код, а какой-то огрызок. Где задание переменных? И где вы тут увидели сохранение в EEPROM??? Выкладывайте полный код, тогда и поглядим. Я таких терморегуляторов кучу уже наделал, так что, чем смогу - помогу.
Полный проект с исходником в архиве. Заранее спасибо.
С таким датчиком не работал, но сходу сразу видно, что переменная Х1 задана типа байт, она же и отображается на LCD. Можно задать данную переменную типа Integer, а потом разбить на целые и дробные части. А можно взять все переменные типа Single, тогда все гораздо проще посчитается. А сохранение в EEPROM осуществлять частями, предварительно разбив переменную типа Single на целую (Int) и дробную (Frac) части.
Только учтите, что переменные типа Single сильно жрут оперативку и стек МК.
Цапу крутить надо!!! Ку или не ку?
myx
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 371
Зарегистрирован: Чт июл 22, 2010 10:12:09

Сообщение myx »

Igor_67 писал(а):С таким датчиком не работал, но сходу сразу видно, что переменная Х1 задана типа байт, она же и отображается на LCD. Можно задать данную переменную типа Integer, а потом разбить на целые и дробные части. А можно взять все переменные типа Single, тогда все гораздо проще посчитается. А сохранение в EEPROM осуществлять частями, предварительно разбив переменную типа Single на целую (Int) и дробную (Frac) части.
Только учтите, что переменные типа Single сильно жрут оперативку и стек МК.
В теории понял, а вот как на практике написать не знаю. Ради добавления возможности регулировать температуру с десятыми долями не хочется бэйсик изучать. Может накидаете кусок программы с изменениями?
Встал на лапы
Сообщения: 113
Зарегистрирован: Чт июл 30, 2009 14:33:42

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

Ув. Коты-баскомовцы, тут назрел вопрос по поводу дисплея LS020. Для него есть библиотека LCD-SIEMENS_S65_LS020_256_W1.LBX
Но вот проблема шрифты 8х8 отображает нормально, а 16х16 срезает верхний ряд символа и переносит в низ.
Никто случайно не сталкивался с таким приколом?
TIP
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вс июл 03, 2011 06:27:35

Сообщение TIP »

Хочу выразить искреннюю благодарность участнику форума под ником mr4ester!
Человек с открытой душой помог мне малость разобраться в написании программ.
Пару примеров, не очень сложная программа и дело пошло.
До сложных программ еще далеко, но мне для работы пока достаточно.
Мужики, чертовски здорово, когда сам пишешь прогу и главное понимаешь что пишешь.
mr4ester , огромное спасибо за помощь!
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

TIP писал(а):Хочу выразить искреннюю благодарность участнику форума , огромное спасибо за помощь!
Так же могу отблагодарить edm2007. Он тоже отличный программист. Я вот не смотря на то что недавно начал программировать , уже делаю сложный проект и знаете получается! Даже не смотря на то что вопросы остаются. Сейчас вот пытаюсь меню сделать, сделать то сделал и работает всё но как в нём константы отображать и менять - пока так и не допёр :)
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Vet-RX писал(а): шрифты 8х8 отображает нормально, а 16х16 срезает верхний ряд символа и переносит в низ.
Никто случайно не сталкивался с таким приколом?
А как же функция Locate ? Там ведь можно выставить местоположение текста на дисплее.
А возможно в библиотеке просто место ограничено под символы на дисплее, это хуже...
Встал на лапы
Сообщения: 113
Зарегистрирован: Чт июл 30, 2009 14:33:42

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

там в таком виде: Lcdat 67 , 25 , переменная для вывода , цвет шрифта , цвет фона
67 и 25 координаты начала отображения, пробовал менять, серавно искаженный
Сверлит текстолит когтями
Сообщения: 1156
Зарегистрирован: Вт дек 09, 2008 20:31:56

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

Значит возможно надо править библиотеку...
Ответить

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