BASCOM AVR в вопросах и ответах
так в чем проблема?, опрашиваете по очереди ножки, ножка=1? старт таймерХ, и так далее.
Работа избавляет нас от трех великих зол: скуки, порока, нужды. (Вольтер)
- Реклама
- Сообщения: 15
- Зарегистрирован: Пт фев 17, 2012 23:19:13
На ножке следующий расклад: 10мс единица, 10мс ноль. Необходим сброс таймера в момент перехода с ноля на единицу и наоборот. При вашем варианте, как мне кажется, первые 10 мс таймер будет постоянно сбрасываться, а вторые 10 мс будет работать так как надо. Всё равно спасибо. Свой вариант уже написал, должно получиться, завтра проверю. Если получится отпишусь.mr4ester писал(а):так в чем проблема?, опрашиваете по очереди ножки, ножка=1? старт таймерХ, и так далее.
- Сообщения: 15
- Зарегистрирован: Пт фев 17, 2012 23:19:13
Вообщем всё заработало правильно следующим способом:
Если есть возможность проще реализовать такую же функцию, прошу отписаться.
Код: Выделить всё
Dim A As Bit
A = 1
Do
If Pinb.3 = A Then
Else
A = Pinb.3
Stop Timer0
Timer0 = 0
Start Timer0
.........
loop
End Ifвам не кажется что вы не правильно описали функцию. зачем вам else, у вас сейчас написано ели пин=А тогда, иначе ......, зачем это иначе?, и зачем вот это A = Pinb.3 действие?, и вообще не до конца понятно, что вам нужно считать.
Работа избавляет нас от трех великих зол: скуки, порока, нужды. (Вольтер)
- Реклама
Добрый.
Откуда код-то? Для начала все кавычки в коде неправильные. Например, подключаться файл должен так:
а не так:
Комментарии опять же:
Откуда код-то? Для начала все кавычки в коде неправильные. Например, подключаться файл должен так:
Код: Выделить всё
$regfile = "m168def.dat"Код: Выделить всё
$regfile = “m168def.dat”Код: Выделить всё
'configure lcd screen"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Сообщения: 15
- Зарегистрирован: Пт фев 17, 2012 23:19:13
Случайно не правильно скопировал:mr4ester писал(а):вам не кажется что вы не правильно описали функцию. зачем вам else, у вас сейчас написано ели пин=А тогда, иначе ......, зачем это иначе?, и зачем вот это A = Pinb.3 действие?, и вообще не до конца понятно, что вам нужно считать.
Код: Выделить всё
Dim A As Bit
A = 1
Do
If Pinb.3 = A Then
Else
A = Pinb.3
Stop Timer0
Timer0 = 0
Start Timer0
.........
loopА, вот откуда эта ерунда с Else.implex писал(а):Нужно следующее: если порт не равен переменной то....
Код: Выделить всё
If Pinb.3 <> A Then
A = Pinb.3
Stop Timer0
Timer0 = 0
Start Timer0
.........
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Сообщения: 15
- Зарегистрирован: Пт фев 17, 2012 23:19:13
Edm 2007 огромное спасибо! Именно то, что нужно. Вводил в гугл "неравно в bascom" и не нашел - плохо искал. По этому думал, что знака неравно нету. В исходниках по ходу то же редко встречается.
- Сообщения: 442
- Зарегистрирован: Пт авг 29, 2008 09:22:37
кто подскажет как переменную типа word , вытащить на 4х разрядный led индикатор ?. Пробовал разбить её на два байта , с помощью high и low и последующим делением на 10 но получается какято хрень . Кто и как это победил ?
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Какая разница сколько разрядов на индикаторе и какой тип переменной? Есть масса вариантов по разносу переменной по разрядам, и тип / разряды тут не имеют никакого значения. Можно оформить все это в цикл, который сам разобьет переменную по разрядам, а можно просто разнести руками, используя элементарно деление / остаток от деления. Будьте добры пример кода, в котором у Вас возникли затруднения.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Сообщения: 442
- Зарегистрирован: Пт авг 29, 2008 09:22:37
Dim Razdisp(4)as Byte , N As Byte , L As Byte , Displ As Byte , Dat_adc As Word , R As Byte , G As Byte
Patcon:
Dat_adc = 256
'Razdisp(4) = High(dat_adc)
'Razdisp(3) = Low(dat_adc)
R = Dat_adc / 10
Razdisp(1) = Dat_adc Mod 10 '5
Razdisp(2) = R Mod 10
Razdisp(3) = R / 10
'razdisp(4) = Dat_adc / 10
Return
вот этот кусок программы , если в Dat_adc положитьчисло до 255 то всё нормально а если больше начинаются чудеса .
Patcon:
Dat_adc = 256
'Razdisp(4) = High(dat_adc)
'Razdisp(3) = Low(dat_adc)
R = Dat_adc / 10
Razdisp(1) = Dat_adc Mod 10 '5
Razdisp(2) = R Mod 10
Razdisp(3) = R / 10
'razdisp(4) = Dat_adc / 10
Return
вот этот кусок программы , если в Dat_adc положитьчисло до 255 то всё нормально а если больше начинаются чудеса .
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Для начала разберитесь с типами переменных, у Вас Dat_adc имеет тип Word, а переменная R всего лишь Byte, в которой этот Word Вы пытаетесь делить. Та же история происходит в операциях с массивом Razdisp. Разумеется, будут чудеса если значение больше 255, оно же превышает значение типа Byte.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- Сообщения: 442
- Зарегистрирован: Пт авг 29, 2008 09:22:37
Согласен с переменными бардак , давно не баскомил позабывал многое , спасибо edm2007 . Дальше я уже сам .
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
Да это всего лишь с типами переменных немного ошибка. Ерунда совсем. Конечно R не может нормально разделить переменную, она просто не в состоянии вместить тип Word. Та же история с Razdisp(..). А в остальном все верно.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Если уже было, извините...
Вот еще сайт с обучалками и примерами.
Может кому пригодится.
http://avr.ru/beginer/bascom
Вот еще сайт с обучалками и примерами.
Может кому пригодится.
http://avr.ru/beginer/bascom
Подскажите пожалуйста как отключить опрос датчиков на шине I2C если они отсутствуют? Потому как если я отключу от МК датчик температуры то схема останавливается полностью.
Это с чего вдруг?vanyap1 писал(а):Потому как если я отключу от МК датчик температуры то схема останавливается полностью.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Схема работает стабильно, все в полном порядке, но если отключить датчик температуры или часы и не убрать опрос с программы то вся схема становится нерабочей. Все датчики и часы находятся на одной шине I2C, МК - Atmega8.
Можно как то установить флаг отсутствия устройства при первом опросе и не опрашивать последующий раз?
Можно как то установить флаг отсутствия устройства при первом опросе и не опрашивать последующий раз?
Если не был получен импульс присутствия, то Err возвращает 1.
Код: Выделить всё
1wreset ' сбрасываем линию
If Err = 1 Then ' если датчик не отозвался...
........
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


