BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
Как записать биты в байт? Есть ли какая команда?
К примеру имеем 6 переменных типа bit:
A2
A3
A4
A5
A6
A7
А также одну переменную типа байт ByteA27 но как в неё поместить переменные A2-A7 ? (при этом не затронуть биты A0-A1)
К примеру имеем 6 переменных типа bit:
A2
A3
A4
A5
A6
A7
А также одну переменную типа байт ByteA27 но как в неё поместить переменные A2-A7 ? (при этом не затронуть биты A0-A1)
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Сложить.
А27 = А1+А2
А27 = А1+А2
Re: BASCOM AVR в вопросах и ответах
vanyap1 писал(а):Сложить.
А27 = А1+А2
спасибо, попробую.... да вот совсем забыл мне их потом нужно опять как то извлечь из байта и разложить в биты, а это как?
- dimon-790
- Мучитель микросхем
- Сообщения: 442
- Зарегистрирован: Пт авг 29, 2008 09:22:37
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Tom91 писал(а):Как записать биты в байт? Есть ли какая команда?
например так :
Dim M_byte As Byte , A As Bit , B As Bit , C As Bit , D As Bit , E As Bit , F As Bit , G As Bit , H As Bit
'биты в байты
m_byte.0=a
m_byte.1=b
m_byte.2=c
m_byte.3=d
m_byte.4=e
m_byte.5=f
m_byte.6=g
m_byte.7=h
'байты в биты
a = m_byte.0
b = m_byte.1
c = m_byte.2
d = m_byte.3
e = m_byte.4
'....и т.д.
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
- Av4arik
- Поставщик валерьянки для Кота
- Сообщения: 1954
- Зарегистрирован: Чт янв 20, 2011 16:47:18
- Откуда: Старый Оскол
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
покажите или ткните, как реализовать опрос DS18b20 на atmega8? задача - прикрутить DS18b20 в одном или двух экземплярах по вот этой схеме часов, и выводить показания датчиков на 57-ой секунде (в исходнике стоит на эту секунду отображение даты) . из свободных ног контроллера (которые хочется использовать как раз для датчиков) - PB1 и PD0 (пины 2 и 15 соответственно) . download/file.php?id=72441 вот здесь исходник. кто может осуществить помощь? заранее благодарен.
З.Ы. попрошу не пинать, если сложно сделать, так и напишите, ибо я не учил языки программирования (пытался, но неудачно), и мне стыдно за это. с автором данной конструкции связывался, но он отказался....
З.Ы. попрошу не пинать, если сложно сделать, так и напишите, ибо я не учил языки программирования (пытался, но неудачно), и мне стыдно за это. с автором данной конструкции связывался, но он отказался....
Быстро, Качественно, Недорого.
Выбрать можно только 2 варианта.
Выбрать можно только 2 варианта.
- mr4ester
- Держит паяльник хвостом
- Сообщения: 900
- Зарегистрирован: Чт авг 27, 2009 20:09:01
- Откуда: Приднестровье г.Бендеры
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
вот сайт http://avrproject.ru/publ/kak_podkljuch ... 2/2-1-0-15 там подробно расписана работы с датчиком. А что бы выводить показания я бы в основном цикле бы поставил условие сравнивая секунд с числом 57 и по совпадению, уходил на подпрограмму измерения температуры и отображения но это моя теория, я еще не спец в этом деле, даже можно сказать начинающий.
Работа избавляет нас от трех великих зол: скуки, порока, нужды. (Вольтер)
- Av4arik
- Поставщик валерьянки для Кота
- Сообщения: 1954
- Зарегистрирован: Чт янв 20, 2011 16:47:18
- Откуда: Старый Оскол
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
mr4ester дык, вывод даты и установлен на условии "если секунды= менее 57, то выводим время, а если более, то выводим дату..." так же к примеру, по Вашей ссылке не особо понятно, что нужно писать:
вот так:
или достаточно просто написать
дык и что получится по второму примеру - инпут на 1-wire или оутпут?
а сам исходник для часов я не потяну, там есть переменные, массивы, я даже еще почитать про это толком не успел, дык и данные с датчика должны же в переменную заводиться или ОЗУ, а вдруг этот участок который я сделаю, будет занят на этом исходнике...и как показывать плюсовая/минусовая температура - нужно будет зажигать одну из неонок (ИН-3), или все сразу, например если температура минусовая. самое главное - как реализовать на этой динамически-хитрой индикации вывод температуры на лампы, и чтобы левый код не отправился на них в случае ошибки опроса датчика или его отсутствия.... поэтому и спрашиваю, контроллер как и остальные элементы запалить не хочется, а ошибок я наделаю много... так же интересно, как опрашивать два датчика по одному пину контроллера (шина же 1-wire, а значит там может быть несколько датчиков сразу).
вот так:
Код: Выделить всё
Config port.d0 = input
Config_1wire = port.d0 Код: Выделить всё
Config_1wire = port.d0 дык и что получится по второму примеру - инпут на 1-wire или оутпут?
а сам исходник для часов я не потяну, там есть переменные, массивы, я даже еще почитать про это толком не успел, дык и данные с датчика должны же в переменную заводиться или ОЗУ, а вдруг этот участок который я сделаю, будет занят на этом исходнике...и как показывать плюсовая/минусовая температура - нужно будет зажигать одну из неонок (ИН-3), или все сразу, например если температура минусовая. самое главное - как реализовать на этой динамически-хитрой индикации вывод температуры на лампы, и чтобы левый код не отправился на них в случае ошибки опроса датчика или его отсутствия.... поэтому и спрашиваю, контроллер как и остальные элементы запалить не хочется, а ошибок я наделаю много... так же интересно, как опрашивать два датчика по одному пину контроллера (шина же 1-wire, а значит там может быть несколько датчиков сразу).
Быстро, Качественно, Недорого.
Выбрать можно только 2 варианта.
Выбрать можно только 2 варианта.
- mr4ester
- Держит паяльник хвостом
- Сообщения: 900
- Зарегистрирован: Чт авг 27, 2009 20:09:01
- Откуда: Приднестровье г.Бендеры
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
как мне кажется никто не будет заниматься этим кроме вас, так как на это нужно время, так что советую вникать в исходник, а на форуме вас направят в нужное русло. А по поводу минусовой температуры тут вообще затык, мне например не приходит в голову как на этих индикаторах отобразить минус
Работа избавляет нас от трех великих зол: скуки, порока, нужды. (Вольтер)
- Av4arik
- Поставщик валерьянки для Кота
- Сообщения: 1954
- Зарегистрирован: Чт янв 20, 2011 16:47:18
- Откуда: Старый Оскол
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
mr4ester писал(а):как мне кажется никто не будет заниматься этим кроме вас, так как на это нужно время, так что советую вникать в исходник, а на форуме вас направят в нужное русло. А по поводу минусовой температуры тут вообще затык, мне например не приходит в голову как на этих индикаторах отобразить минус
вся фишка в том, что индикация динамическая, как для самих ламп так и неонок. к примеру, если температура на датчике меньше нуля по цельсию, то загораются все неонки только при показе температуры (их три штуки), в остальном все работает в штатном режиме. Как я понял, этот язык программирования очень близок к обычному старому доброму бейсику? а чем BASCOM компилировать? чем проверять на ошибки? и где можно синтаксисы команд почитать? знаю, что можно найти в гугле, но инет это огромная помойка, описание может быть хорошим, а может быть и плохим - как различить пока не разбираешься, неизвестно. заранее благодарен.
Быстро, Качественно, Недорого.
Выбрать можно только 2 варианта.
Выбрать можно только 2 варианта.
- mr4ester
- Держит паяльник хвостом
- Сообщения: 900
- Зарегистрирован: Чт авг 27, 2009 20:09:01
- Откуда: Приднестровье г.Бендеры
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
средой разработки BASCOM AVR, а по поводу синтаксиса погуглите много чего для себя найдете
Работа избавляет нас от трех великих зол: скуки, порока, нужды. (Вольтер)
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Av4arik писал(а):даже еще почитать про это толком не успел
Вы куда-то торопитесь?
Av4arik писал(а):а чем BASCOM компилировать? чем проверять на ошибки? и где можно синтаксисы команд почитать?
Учебник Bascom AVR
А вообще у Bascom AVR великолепная справка в самой среде. Где каждая команда описана подробно. Да еще и с примерами.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Av4arik
- Поставщик валерьянки для Кота
- Сообщения: 1954
- Зарегистрирован: Чт янв 20, 2011 16:47:18
- Откуда: Старый Оскол
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
edm2007 писал(а):А вообще у Bascom AVR великолепная справка в самой среде. Где каждая команда описана подробно. Да еще и с примерами.
посмотрите исходник который я приложил выше.... думаю, вы поймете, почему я ломаю голову. курить буду данный самоучитель от товарища WildCat долго, ибо на данный момент интересует только этот проект (выше описал), а там полно переменных + динамическая индикация. так же задействован EEPROM, что для меня еще больше осложняет задачу.
З.Ы это не 10 строчек кода, тут на пару килобайт наберется, а для меня, как для начинающего это похлеще любого ада. пусть исходник хорошо прокомментирован, я там кроме разброса портов и набора переменных или массивов ничего больше не понял. учить времени особо много нет - работа...
как я понял, мне надо сконфигурировать одну ногу порта на 1-wire, создать массив/переменную , периодически запихивать в него данные датчика (читать), и выводить содержимое на дисплей. при условии когда секунды более 57...
Быстро, Качественно, Недорого.
Выбрать можно только 2 варианта.
Выбрать можно только 2 варианта.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Av4arik писал(а):посмотрите исходник который я приложил выше....
Да смотрел конечно, и в тупик он меня не ставит. Ибо исходник прокомментирован замечательно.
Av4arik писал(а):курить буду данный самоучитель от товарища WildCat долго
Будете конечно, и не только его а еще тонны информации.
Av4arik писал(а): а там полно переменных + динамическая индикация. так же задействован EEPROM
Угу, а еще там темно и страшно.
Вы хоть что-нибудь делайте для начала, и спрашивайте по существу. А то как обычно, говорим "покажите или ткните", а подразумеваем "напишите за меня да разжуйте еще". Вам вот чем ссылка выше не угодила? Где есть и как шину настроить и как измерение запустить и как результат забрать. Не образец конечно (для LCD можно гораздо проще сделать), но для начала-то пойдет.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Av4arik
- Поставщик валерьянки для Кота
- Сообщения: 1954
- Зарегистрирован: Чт янв 20, 2011 16:47:18
- Откуда: Старый Оскол
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
edm2007 писал(а):смотрел конечно, и в тупик он меня не ставит. Ибо исходник прокомментирован замечательно.
для тех кто знает это не проблема.
edm2007 писал(а):Будете конечно, и не только его а еще тонны информации.
для одного проекта это уже слишком... звучит как "чтобы сделать измерение температуры, выучите азы программирования конкретной платформы, почитайте кучу аппноутов и даташитов, переберите исходник, переделайте под себя и готово".
edm2007 писал(а):Вам вот чем ссылка выше не угодила? Где есть и как шину настроить и как измерение запустить и как результат забрать. Не образец конечно (для LCD можно гораздо проще сделать), но для начала-то пойдет.
лучше бы подсказали, как их туды "внедрить", и куда данные датчика инклудить чтобы появилась температура а не другие цифры. я только понял, как настроить порт на 1-wire, и как читать ОЗУ датчика. для меня далеко не совсем разжеваны параметры и синтаксис каждой команды.
судя по исходнику, мне придется снова строить динамическую индикацию, преобразование двоичного кода в десятеричный (пример преобразования внутри исходника), сделать с десяток переменных и гонять их вместо даты или до нее/после нее...
для начала прекрасно подходит мигание светодиодов, светофоры, hd44780. но ни как не динамическая индикация с применением двух (!) дешифраторов по три индикатора на каждый.edm2007 писал(а): Не образец конечно (для LCD можно гораздо проще сделать), но для начала-то пойдет.
по большей части я прошу пояснить где что дописать какие команды использовать при работе с именно этим исходником, а не гнать меня в глубинные азы программирования...
Быстро, Качественно, Недорого.
Выбрать можно только 2 варианта.
Выбрать можно только 2 варианта.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Av4arik писал(а):для тех кто знает это не проблема.
Ну да, мне-то проще. Я таким родился, даже учиться не пришлось.
Av4arik писал(а):звучит как "чтобы сделать измерение температуры, выучите азы программирования конкретной платформы, почитайте кучу аппноутов и даташитов
В точку. Все так и есть. Только не "переберите под себя" а "напишите сами". Или Вы что думаете-то, даташиты это так, шутки ради? Для тех, кому заняться нечем? А у кого времени нет те просто "заводят с десяток переменых и инклудят там аккуратно, чтобы только в занятый участок не попасть"? Мне вот интересно, а как в Вашей версии все должно выглядеть? "В 10-строке напишите то-то, в 75 поправьте это, а в 120 исправьте так-то, и все заработает"? Так?
Av4arik писал(а):для начала прекрасно подходит мигание светодиодов
Вот и славно ! Вам есть с чего начать. А для того чтобы "поправить" чужой исходник, нужно разбираться в нем не хуже автора. Вы уверены что сможете "вписать" туда свой код, не нарушив структуру программы? Оценивайте свои силы реально...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Av4arik
- Поставщик валерьянки для Кота
- Сообщения: 1954
- Зарегистрирован: Чт янв 20, 2011 16:47:18
- Откуда: Старый Оскол
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
edm2007 писал(а): Вы уверены что сможете "вписать" туда свой код, не нарушив структуру программы? .
как раз именно в этом и не уверен. Это еще одна причина обращения...
Быстро, Качественно, Недорого.
Выбрать можно только 2 варианта.
Выбрать можно только 2 варианта.
- mr4ester
- Держит паяльник хвостом
- Сообщения: 900
- Зарегистрирован: Чт авг 27, 2009 20:09:01
- Откуда: Приднестровье г.Бендеры
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
вообщем написал программу для измерения температуры с 2 датчиками 18В20. и второй день не могу разобраться что не так, вообщем задумка такая есть битовая переменная флаг при опросе датчика в зависимости от значения этого флага 0 или 1 считанная температура с датчика присваивается соответствующей переменной с последующим выводом на дисплей, но вот проблема почему то при подключении только одного датчика программа не должна выводить температуру второго датчика, а выводить слово об ошибке датчика, но вместо этого она дублирует температуру 1 датчика, честно уже не знаю в чем может быть собака зарыта, не могли бы вы глянуть на мой исходник и ткнуть пальцем если не трудно? Исходник вроде как пытался норм коментировать, вроде должно быть понятно, если нужно могу выложить файл исходник.
Код: Выделить всё
'*********** цифровой термометр на 2х ds18b20 ******************
$regfile = "m16def.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
$baud = 9600
' ************** зададим переменные и константы ***********************
Dim Znak As String * 1
Dim Dat1 As String * 5
Dim Dat2 As String * 5
Dim Byte0 As Byte
Dim Byte1 As Byte
Dim T As Byte
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim Temp As Byte
Dim X As Byte
Dim W As Word
Dim Errord1 As Bit ' переменная флаг ошибки 1 датчика
Dim Errord2 As Bit ' переменная флаг ошибки 2 датчика
Dim Opr As Bit ' переменная флаг для определения с какаим датчиком работали
Dim Prin As Bit 'переменная флаг для определения вывода данных в порт
Dim Breaking As Bit ' переменная флаг сигнализирующая о прерывания
Dim Shethik As Word ' переменнная для отсчета прерываний
Dim Tmax1 As String * 3 ' максимальная температура 1 датчика
Dim Tmin1 As String * 3 ' минимальная температура 1 датчика
Dim Tmax2 As String * 3 ' максимальная температура 2 датчика
Dim Tmin2 As String * 3 ' минимальная температура 2 датчика
Dim Rs232 As String * 5 ' переменная для работы с uart
Const Cons = 35535 ' константа для сравнения с таймером
Const Geth = 2274 ' константа для сравнения с счетчикаом прерываний
' *************** конфигугрируем подключение ЖКИ ****************
Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5
Config Lcd = 16 * 2 'дисплей 2 строки по 16 символов
Cursor Off 'выключить курсор
Cls 'очистить дисплей
' ************** конфигугрирем пин для подключения датчиков ******************
Config 1wire = Portb.0 ' на порт повесим 2 датчика с подтяжкой резистором на 4,7К
'*************** конфигурируем таймер для опроса датчика ***********************
Config Timer1 = Timer , Prescale = 256 , Compare A = Set , Clear Timer = 1
On Oc1a Tim ' обработка прерывания
Compare1a = Cons ' загрузка в регистр сравнеия константы
'**************** конфигугурируем INT0 и INT1 для подключения кнопок *********************
Config Pind.2 = Input 'насторим вывод на вход
Config Pind.3 = Input 'настроим вывод на вход
Config Int0 = Falling ' срабатывание по спаду
Config Int1 = Falling
Config Debounce = 75 ' задержка от дребезга контактов кнопки
On Int0 Button 'обработка кнопки
On Int1 Resbutton 'обработка кнопки сброса
'*************** конфигурируем прерывания по uart *******************
On Urxc Getchar
' ************* разрешаем все прерывания **************
Enable Interrupts
Enable Int0
Enable Int1
Enable Oc1a
Enable Urxc
Start Timer1
' ************* нарисуем знак градуса ***************
Deflcdchar 0 , 28 , 20 , 28 , 32 , 32 , 32 , 32 , 32
'***************** работаем с ds18b20 *****************
W = 1wirecount() ' ищим датчики
Dsid1(1) = 1wsearchfirst() 'Считываем Семейный Код 1 Датчика
Do
Dsid2(1) = 1wsearchnext() ' считываем семейный код 2 датчика
Loop Until Err = 1
'************** основной цикл программы ********************
Do
If Breaking = 1 Then ' если флаг стоит значит было прерывание
Breaking = 0
End If ' сбросим флаг
Gosub Disp ' преходим к метке
Loop
'*****************************************
Disp:
' инициализируем датчики
1wreset
1wwrite &HCC
1wwrite &H44
Waitms 750
1wverify Dsid1(1) : Opr = 0 : Gosub Temperature ' проверим на ошубку чтения с 1 датчика и перейдем к подпрограмме
' opr флаг определения в подпрограмме с каким датчиком работаем opr=0 с 1 датчиком opr=1 со вторым
1wverify Dsid2(1) : Opr = 1 : Gosub Temperature ' проверим на ошубку чтения со 2 датчика и перейдем к подпрограмме
Cls 'очистим дисплей
If Errord1 = 1 Then ' если стоит флаг ошибки
Errord1 = 0 ' сбросим флаг
Lcd "гaїАёє Ѕe ѕoгє»." ' выводим надпись датчик не подключен
Goto Datt2 'переходим к работе с 2 датчиком
Else
Lcd "їeјѕepaї" ; Dat1 ; Chr(0) ; "C" ' выводим на дисплей слово температура, знак и значение темп, знак и символ градуса
End If
Datt2:
If Errord2 = 1 Then ' если стоит флаг ошибки
Errord2 = 0 ' сбросим флаг
Locate 2 , 1
Lcd "гaїАёє Ѕe ѕoгє»." ' выводим надпись датчик не подключен
Else
Locate 2 , 1
Lcd "їeјѕepaї" ; Dat2 ; Chr(0) ; "C" ' выводим на дисплей слово температура, знак и значение темп, знак и символ градуса
End If
' сравниваем текущую температуру с максимальной и минимальной если изменилось то переписываем
If Dat1 < Tmin1 Then
Tmin1 = Dat1
End If
If Dat1 > Tmax1 Then
Tmax1 = Dat1
End If
If Dat2 < Tmin2 Then
Tmin2 = Dat2
End If
If Dat2 > Tmax2 Then
Tmax2 = Dat2
End If
'проверим установлен ли флаг Prin, если установлен значит прошло прим. 10мин выдаем в порт текущие максимальные и минимальные температуры
If Prin = 1 Then
Print "текущая температура дом" ; Dat1 ; Chr(0) ; "C"
Print "минимальная" ; Tmin1
Print "максимальная" ; Tmax1
Print "текущая температура улица" ; Dat2 ; Chr(0) ; "C"
Print "минимальная" ; Tmin2
Print "максимальная" ; Tmax2
End If
Return
Temperature:
Disable Interrupts
If Err = 1 Then ' если при опросе появился флаг ошибки тогда
Select Case Opr ' в зависимости от того с каким датчиком работаем ставим ему флаг ошибки
Case 0 : Errord1 = 1
Case 1 : Errord2 = 1
End Select
Return ' возвращаемся обратно
Else ' если ошибки небыло тогда работаем с датчиком
1wwrite &HBE
Byte0 = 1wread()
Byte1 = 1wread()
End If
If Byte1 >= 248 Then
Byte0 = &HFF - Byte0
Byte1 = &HFF - Byte1
Znak = "-"
Else
Znak = "+"
End If
Temp = Byte0 / 16
T = Byte1 * 16
Temp = Temp + T
If Opr = 0 Then
Dat1 = Znak + Str(temp)
Else
Dat2 = Znak + Str(temp)
End If
Enable Interrupts
Return
'***************** обрботчик кнопки по прерыванию INT0 ******************************
' по нажатию этой кнопки на дисплей будут выводиться максимальная и минимальная температура обоих датчиков
Button:
Cls ' очистим дисплей
Lcd "MAX" ; Tmax1 ; Chr(0) ; "C"
Locate 1 , 8
Lcd "MIN" ; Tmin1 ; Chr(0) ; "C"
Lowerline
Lcd "MAX" ; Tmax2 ; Chr(0) ; "C"
Locate 2 , 8
Lcd "MIN" ; Tmin2 ; Chr(0) ; "C"
Wait 5 ' отображаем в течении 5 секунд
Return
'************** обработчик кнопки по прерыванию INT1 ******************************
'по нажатию кнопок будет сбрасываться максимальная и минимальная температура, и присвоена текущая
Resbutton:
Tmin1 = Dat1
Tmax1 = Dat1
Tmin2 = Dat2
Tmax2 = Dat2
Return
'****************** обработка прерывания по uart ***************************
Getchar:
Input Rs232
If Rs232 = "temp" Then
Print "текущая температура дом" ; Dat1 ; Chr(0) ; "C"
Print "минимальная" ; Tmin1
Print "максимальная" ; Tmax1
Print "текущая температура улица" ; Dat2 ; Chr(0) ; "C"
Print "минимальная" ; Tmin2
Print "максимальная" ; Tmax2
End If
Return
'****************** обработка перывания от таймера *********************
Tim:
Incr Shethik ' увеличиваем на 1 счетчик прерываний
If Shethik = Geth Then ' сравниваем переменную счетчик с константой
Shethik = 0 ' если равно обнуляем счетчик
Prin = 1 ' ставим флак что произошло сравнение
End If
ReturnРабота избавляет нас от трех великих зол: скуки, порока, нужды. (Вольтер)
- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
а что это означает?
Код: Выделить всё
W = 1wirecount()Все делают ошибки, только мудрецы - новые, а дураки - старые.
- mr4ester
- Держит паяльник хвостом
- Сообщения: 900
- Зарегистрирован: Чт авг 27, 2009 20:09:01
- Откуда: Приднестровье г.Бендеры
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
ну как я понял это поиск датчиков которые висят на линии, это я подсмотрел в нескольких исходниках, если глянуть в хелп то вот что там пишут
Код: Выделить всё
W = 1wirecount()
'It is IMPORTANT that the 1wirecount function returns a word/integer
'So the result variable must be of the type word or integer
'But you may assign it to a byte or long too of course
Print W
'as a bonus the next routine :
' first fill the array with an existing number
Reg_no(1) = 1wsearchfirst()
' unremark next line to chance a byte to test the ERR flag
'Reg_no(1) = 2
'now verify if the number exists
1wverify Reg_no(1)
Print Err
'err =1 when the ID passed n reg_no() does NOT exist
' optinal call it with pinnumber line 1wverify reg_no(1),pinb,1
'As for the other 1wire statements/functions, you can provide the port and pin number as anoption
'W = 1wirecount(pinb , 1) 'for example look at pin PINB.1
End
Работа избавляет нас от трех великих зол: скуки, порока, нужды. (Вольтер)
- kip96
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Ср авг 26, 2009 08:24:50
- Откуда: 1300км от Пупа
Re: BASCOM AVR в вопросах и ответах
Точнее количество датчиков.
Вы привели пример из хелпа.
А самая верхняя строчка:
или Это говорится в заявлении число 1wire устройств, подключенных к шине (переводчик)
Т.е. в Вашем коде она как-бы лишняя. У Вас и так 2 датчика, чё их искать. Но она нам поможет.
Далее:
первый датчик мы и так находим, а второй будем искать до усёру(извините). Вы-же в цикле, пока не будет 1
Возвращает ERR установлен в 0, когда ID можно найти на автобусе в противном случае он будет 1(перевод)
Вообщем у Вас будут считываться оба датчика. даже если он один.
Меняйте код так:
Откоментировать?
Вы привели пример из хелпа.
А самая верхняя строчка:
This statement reads the number of 1wire devices attached to the bus
или Это говорится в заявлении число 1wire устройств, подключенных к шине (переводчик)
Т.е. в Вашем коде она как-бы лишняя. У Вас и так 2 датчика, чё их искать. Но она нам поможет.
Далее:
Код: Выделить всё
Dsid1(1) = 1wsearchfirst() 'Считываем Семейный Код 1 Датчика
Do
Dsid2(1) = 1wsearchnext() ' считываем семейный код 2 датчика
Loop Until Err = 1первый датчик мы и так находим, а второй будем искать до усёру(извините). Вы-же в цикле, пока не будет 1
Возвращает ERR установлен в 0, когда ID можно найти на автобусе в противном случае он будет 1(перевод)
Вообщем у Вас будут считываться оба датчика. даже если он один.
Меняйте код так:
Код: Выделить всё
W = 1wirecount()
Dsid1(1) = 1wsearchfirst()
If W > 1 Then Dsid2(1) = 1wsearchnext()Откоментировать?
Все делают ошибки, только мудрецы - новые, а дураки - старые.