BASCOM AVR в вопросах и ответах
- kkozyrev
- Открыл глаза
- Сообщения: 67
- Зарегистрирован: Пт дек 11, 2009 02:40:44
- Откуда: C-Петербург
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Работаю с дисплеем nokia 1100. все работает, всё хорошо. Но появилась одна проблемка. Все команды вывода на экран прекрасно работают в теле основной программы (между Do и Loop). Но стоит вставить допустим команду Call Nokia_text в подпрограмму обработки прерывания, как программа зависает. (методом проб выяснил, что иногда спасает вставка пустого цикла For Next после вызова Call Nokia_text, но не всегда) Может, кто сталкивался с подобным. Просвятите пожалуйста. (команда Nosave не спасает)
не судите, я учусь -)
Re: BASCOM AVR в вопросах и ответах
Так и должно быть. Ни один в трезвом уме не засовывает сколь-нибудь продолжительную по времени подпрограмму в обработчик, потому как тормоза гарантированы вплоть до полного не работает . Все осмысленные действия выполняются в главной программе по анализу флажков-семафоров, выставляемых в прерываниях. И главная же программа должна решать, что делать, если данные поступают в темпе, превышающем ее возможности: игнорировать или бросаться выполнять более приорететную команду.
Как-то так в общих чертах. Ну и мое личное мнение: сколь-нибудь напряжную по времени прогу на Баскомах не пишут.
Как-то так в общих чертах. Ну и мое личное мнение: сколь-нибудь напряжную по времени прогу на Баскомах не пишут.
- kkozyrev
- Открыл глаза
- Сообщения: 67
- Зарегистрирован: Пт дек 11, 2009 02:40:44
- Откуда: C-Петербург
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Jack_A писал(а):Так и должно быть. Ни один в трезвом уме не засовывает сколь-нибудь продолжительную по времени подпрограмму в обработчик
значит придется всё вытащить из обработчика в основной цикл.

не судите, я учусь -)
-
rojnov
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Вс мар 27, 2011 07:48:48
- Откуда: г. Екатеринбург
Re: BASCOM AVR в вопросах и ответах
Приветствую всех, кто еще не спит! Это опять я со своим термостатом. Сделал, как советовали - настроил PinD.2 на вход. Кроме того, перевел собранную схему термостата с макетной платы на паяную картонку. а то заметил, что кое-где стал плохой контакт. В общем, в результате программа все равно не работает. А именно. С термометром проблем нет. Термостатная часть. При нажатии на кнопку Настр. (Int0) высвечивается исходная температура термостата, как и должно быть. Далее при нажатии на кн. Плюс значение на индикаторе увеличивается на единицу, а затем программа уходит в режим термометра. Аналогично с кн. Минус. Значение уменьшается на единицу и - снова режим термометра. Хотя выход из режима настроек должен происходить после второго нажатия на кн. Настр. Так что буду дальше думать. Если вдруг кто-то увидит в моей програмке косяк, я буду очень сильно рад.
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Никто не сталкивался с косяком в микросхеме - PCF2129? Когда секунды вдруг начинают ходить как им заблагорассудится от 10 до 120. Часы при этом сбиваются.
Причем замечалось это не только на одной МС. И только в момент включения или отключения напряжения. Микросхема включена по даташиту, конднсаторы присктствуют, напряжение батарейки в пределах нормы.
BODLEVEL на МК отключен. Может МК туда мусор записать при просадке питания?
Источников помех в схеме нет.
Причем замечалось это не только на одной МС. И только в момент включения или отключения напряжения. Микросхема включена по даташиту, конднсаторы присктствуют, напряжение батарейки в пределах нормы.
BODLEVEL на МК отключен. Может МК туда мусор записать при просадке питания?
Источников помех в схеме нет.
Re: BASCOM AVR в вопросах и ответах
Обработка прерываний от кнопки настроек.rojnov писал(а):В общем, в результате программа все равно не работает.
Код: Выделить всё
Flag: 'обработка INT0
F = 1 'первый вход в режим настройки
If K = 1 Then 'второй вход в режим настройки
F = 0 : K = 0
End If
If T = A Then F = 0
ReturnИ в третьих, что хранится в переменных A, T и K и при каких условиях они равны, а K = 1?
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
Всем спасибо за советы,открыл тему-куплю ....
rojnov порылся в исходнике,переписал на свой лад-оставил 2 кнопки +-,при вкл входим в режим контроля,высвечивается действующая температура,при нажатии любой из кнопок вход в настройку-высвечивается температура из еепром,горят обе точки(чтоб знать что высвечивается),+ и - гоняем установку,если 5 сек не нажимать на кнопки-гашение точек и переход обратно в режим контроля
rojnov порылся в исходнике,переписал на свой лад-оставил 2 кнопки +-,при вкл входим в режим контроля,высвечивается действующая температура,при нажатии любой из кнопок вход в настройку-высвечивается температура из еепром,горят обе точки(чтоб знать что высвечивается),+ и - гоняем установку,если 5 сек не нажимать на кнопки-гашение точек и переход обратно в режим контроля
- Вложения
-
- Новая папка.rar
- (43.57 КБ) 203 скачивания
-
rojnov
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Вс мар 27, 2011 07:48:48
- Откуда: г. Екатеринбург
Re: BASCOM AVR в вопросах и ответах
Добрый вечер! Благодарю всех, кто откликнулся.
По поводу "Дребезга" - точно, дал маху, совсем про него забыл. Поправлю. По поводу
сброса флага прерывания - как-то совсем упустил это из виду, т.к. знаком с этим
пока только по учебникам. Живьм пользоваться этим пока не приходилось. Добавлю.
Теперь попробую объяснить смысл переменных А, Т и К. И как я все это планировал.
Т- температура. В режиме термометра- текущая температура, в режиме термостата -
поддерживаемая температура. В общем, это то, что выводится на индикатор.
А - вспомогательная переменная, в которую записывается значение Т. Если они на
каком-то этапе не совпадают, значит Т изменилась, и в память надо записать новое
значение Т. А в подпрограмме индикации А нужна для разложения числа на разряды.
К - признак того, что мы находимся в режиме настройки. Изначально К=0. При первом
нажатии Настр. и при изменении Т в ту или иную сторону К становится равным 1. Для
выхода из режима настройки еще раз нажимаем Настр. А раз К=1, то переменные
обнуляются, и прога выходит из режима настройки. А условие IF T=A Then F=0
означает, что мы были в режиме настройки и вышли из него без изменения Т. Вот
примерно так я и планировал. Но вчера ночью посидел и понял, что происходит на
самом деле. Как только вхожу в режим настройки, на первом же круге в память на
место 10 заносится значение текущей температуры и кажется, что я не зашел в режим
настройки. Но где именно косяк, я еще не разобрался.
Не знаю, понятно или нет, объяснил как мог.
По поводу "Дребезга" - точно, дал маху, совсем про него забыл. Поправлю. По поводу
сброса флага прерывания - как-то совсем упустил это из виду, т.к. знаком с этим
пока только по учебникам. Живьм пользоваться этим пока не приходилось. Добавлю.
Теперь попробую объяснить смысл переменных А, Т и К. И как я все это планировал.
Т- температура. В режиме термометра- текущая температура, в режиме термостата -
поддерживаемая температура. В общем, это то, что выводится на индикатор.
А - вспомогательная переменная, в которую записывается значение Т. Если они на
каком-то этапе не совпадают, значит Т изменилась, и в память надо записать новое
значение Т. А в подпрограмме индикации А нужна для разложения числа на разряды.
К - признак того, что мы находимся в режиме настройки. Изначально К=0. При первом
нажатии Настр. и при изменении Т в ту или иную сторону К становится равным 1. Для
выхода из режима настройки еще раз нажимаем Настр. А раз К=1, то переменные
обнуляются, и прога выходит из режима настройки. А условие IF T=A Then F=0
означает, что мы были в режиме настройки и вышли из него без изменения Т. Вот
примерно так я и планировал. Но вчера ночью посидел и понял, что происходит на
самом деле. Как только вхожу в режим настройки, на первом же круге в память на
место 10 заносится значение текущей температуры и кажется, что я не зашел в режим
настройки. Но где именно косяк, я еще не разобрался.
Не знаю, понятно или нет, объяснил как мог.
-
rojnov
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Вс мар 27, 2011 07:48:48
- Откуда: г. Екатеринбург
Re: BASCOM AVR в вопросах и ответах
pavel1979. Спасибо за помощь! Посмотрел ваш код, слегка офигел в хорошем смысле слова. Для меня пока что это как пересесть с Запора на Мерс. Буду разбираться.
Можно будет вопросы кинуть в личку? А вопросы будут, т.к. сходу не все понятно.
Можно будет вопросы кинуть в личку? А вопросы будут, т.к. сходу не все понятно.
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
задавайте,там ничего сложного-входим в работу,начинается высвечиваться значение переменной А,меряем температуру,сравниваем с установленной,далее-если никакая кнопка не нажата (If Plus = 1 And Minus = 1) то А=Т,то есть высвечиваем измеренную температуру,если хоть одна нажата-(еlse) то A = Tust_ee -присваиваем А температуру из еепром(на индикаторе отображается уже Tust_ee), Т=0-используем ее для счета времени,каждые полсекунды она увеличивается на 1,если нажата +(или -) то установленная температура увеличивается(уменьшается),при нажатии на + или минус обнуляем Т,установили нужную температуру-Т в очередной раз обнулилась,на кнопки теперь не нажимает в течении 5 сек-за это время Т достигнет значения Т=10-выходим из режима настроек(If T > 10 Then Goto Label),Tust_ee = A-записываем установленную температуру в еепром,вычисляет Тмин и Тмах,восстанавливаем измеренную последний раз температуру(A = T1 + T2)-она теперь на индикаторах,Portd.2 = 0-выключаем точки
у вас вроде все спаяно,можете проверить,жду результата!
у вас вроде все спаяно,можете проверить,жду результата!
-
rojnov
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Вс мар 27, 2011 07:48:48
- Откуда: г. Екатеринбург
Re: BASCOM AVR в вопросах и ответах
pavel1979, приветствую! Загрузил кекс в контроллер, включил, наблюдаю. В режиме термометра в принципе все нормально. Температуру показывает, на нагрев датчика пальцем реагирует. Единственное, что ненормально - периодически, сек через 20-30 в первом разряде проскакивают лишние сегменты, а пару раз вместо 18градС было А5. Но такое у меня и раньше бывало, может быть, это связано с железом, а не с прогой.
А вот дальше - проблемы. Для индикации режима настроек вместо точек индикатора подключил мигающий красный светодиод. Так мне удобнее.
Итак, нажимаю + и -. Светик начинает моргать. На индикаторе - черт знает что. Нажимаю на - . -во втором разряде цифры уменьшаются от 9 до 0, в первом разряде - светятся странные сегменты, в произвольном порядке. При переходе с 0 на 9 они меняются, но смысла в них нет. При нажатии на + значение в обоих разрядах не меняется, сегменты - также произвольные. Причем через каждые 10-15 сек высвечивается текущая температура на 1 сек, а потом - опять та же белиберда. Я очень озадачен и пока не знаю, что делать.
А вот дальше - проблемы. Для индикации режима настроек вместо точек индикатора подключил мигающий красный светодиод. Так мне удобнее.
Итак, нажимаю + и -. Светик начинает моргать. На индикаторе - черт знает что. Нажимаю на - . -во втором разряде цифры уменьшаются от 9 до 0, в первом разряде - светятся странные сегменты, в произвольном порядке. При переходе с 0 на 9 они меняются, но смысла в них нет. При нажатии на + значение в обоих разрядах не меняется, сегменты - также произвольные. Причем через каждые 10-15 сек высвечивается текущая температура на 1 сек, а потом - опять та же белиберда. Я очень озадачен и пока не знаю, что делать.
-
rojnov
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Вс мар 27, 2011 07:48:48
- Откуда: г. Екатеринбург
Re: BASCOM AVR в вопросах и ответах
Еще вопрос по вашей схеме в Протеусе. Для чего нужны R9 и R10? Я что-то раньше не встречал подтяжки разрядов индикаторов к +. Для чего это?
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
r9 r10 можно не ставить,тогда осциллограф и индикатор не правильно в протеусе кажет
вот попробуй эту прошивку,в первой кое-что упустил,одну строчку
вот попробуй эту прошивку,в первой кое-что упустил,одну строчку
- Вложения
-
- noname1.hex
- (3.48 КБ) 266 скачиваний
-
rojnov
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Вс мар 27, 2011 07:48:48
- Откуда: г. Екатеринбург
Re: BASCOM AVR в вопросах и ответах
Попробовал новую прошивку. Все супер! Работает, как надо. Спасибо! Но только теперь бы получить весь код с исправлениями - буду изучать. А потом, когда будут вопросы, а они будут - я их скину в личку.
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
прошивка ниже
If Tust_ee > 99 Then Tust_ee = 50-забыл,что после прошивки мк и первом вкл Tust_ee=HFF(=255),потому и глючили цифры
выяснил,что иногда не правильно считываются показания термометра,на экране при этом проскакивает нечаянная температура,добавь строчку попробуй-может поможет
T1 = Byte0 / 16
T2 = Byte1 * 16
T = T1 + T2
If T > 99 Then T = A
If T < Tmin Then Portd.6 = 1
..........
If Tust_ee > 99 Then Tust_ee = 50-забыл,что после прошивки мк и первом вкл Tust_ee=HFF(=255),потому и глючили цифры
выяснил,что иногда не правильно считываются показания термометра,на экране при этом проскакивает нечаянная температура,добавь строчку попробуй-может поможет
Спойлер
..........T1 = Byte0 / 16
T2 = Byte1 * 16
T = T1 + T2
If T > 99 Then T = A
If T < Tmin Then Portd.6 = 1
..........
- Вложения
-
- noname1.rar
- (1.39 КБ) 172 скачивания
Последний раз редактировалось pavel1979 Ср янв 21, 2015 20:58:04, всего редактировалось 1 раз.
-
rojnov
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Вс мар 27, 2011 07:48:48
- Откуда: г. Екатеринбург
Re: BASCOM AVR в вопросах и ответах
Ещё раз спасибо! Буду изучать.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
pavel1979 писал(а):выяснил,что иногда не правильно считываются показания термометра,на экране при этом проскакивает нечаянная температура
Работе с шиной 1WIRE ничего не должно мешать. Вы же наверняка имеете представление, каким образом в этом протоколе передается информация. А значит и вопросов не возникнет. У Вас же работает прерывание индикации, которое мешает работе с датчиком. Решение данной проблемы очевидно.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- ev3658
- Слесарь-программист
- Сообщения: 341
- Зарегистрирован: Вт сен 11, 2012 23:08:28
- Откуда: город Кстово Нижегородская обл.
Re: BASCOM AVR в вопросах и ответах
Подскажите пожалуйста, может кто видел, как использовать два текстовых LCD в одном микроконтроллере?
Спасибо, хоть и INT6 но помогает Eifr = 255
Спасибо, хоть и INT6 но помогает Eifr = 255
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Так а в чем проблема? Линии данных параллельно а выводы E как выбор нужного индикатора. И всех делов.
P.S. Флаги должны сбрасываться нормально, это что-то у Вас...
P.S. Флаги должны сбрасываться нормально, это что-то у Вас...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
-
pavel1979
- Мучитель микросхем
- Сообщения: 494
- Зарегистрирован: Пн авг 12, 2013 19:07:47
- Откуда: башкирия мелеуз
Re: BASCOM AVR в вопросах и ответах
edm2007 писал(а):pavel1979 писал(а):выяснил,что иногда не правильно считываются показания термометра,на экране при этом проскакивает нечаянная температура
Работе с шиной 1WIRE ничего не должно мешать. Вы же наверняка имеете представление, каким образом в этом протоколе передается информация. А значит и вопросов не возникнет. У Вас же работает прерывание индикации, которое мешает работе с датчиком. Решение данной проблемы очевидно.
спасибо edm2007!не докумекал сразу
исправил,нех ниже
- Вложения
-
- noname3.hex
- (3.56 КБ) 206 скачиваний