Страница 220 из 304

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

Добавлено: Вт янв 20, 2015 09:52:48
kkozyrev
Работаю с дисплеем nokia 1100. все работает, всё хорошо. Но появилась одна проблемка. Все команды вывода на экран прекрасно работают в теле основной программы (между Do и Loop). Но стоит вставить допустим команду Call Nokia_text в подпрограмму обработки прерывания, как программа зависает. (методом проб выяснил, что иногда спасает вставка пустого цикла For Next после вызова Call Nokia_text, но не всегда) Может, кто сталкивался с подобным. Просвятите пожалуйста. (команда Nosave не спасает)

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

Добавлено: Вт янв 20, 2015 11:59:19
Jack_A
Так и должно быть. Ни один в трезвом уме не засовывает сколь-нибудь продолжительную по времени подпрограмму в обработчик, потому как тормоза гарантированы вплоть до полного не работает . Все осмысленные действия выполняются в главной программе по анализу флажков-семафоров, выставляемых в прерываниях. И главная же программа должна решать, что делать, если данные поступают в темпе, превышающем ее возможности: игнорировать или бросаться выполнять более приорететную команду.
Как-то так в общих чертах. Ну и мое личное мнение: сколь-нибудь напряжную по времени прогу на Баскомах не пишут.

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

Добавлено: Вт янв 20, 2015 13:06:43
kkozyrev
Jack_A писал(а):Так и должно быть. Ни один в трезвом уме не засовывает сколь-нибудь продолжительную по времени подпрограмму в обработчик
значит придется всё вытащить из обработчика в основной цикл. :write:

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

Добавлено: Вт янв 20, 2015 20:12:43
rojnov
Приветствую всех, кто еще не спит! Это опять я со своим термостатом. Сделал, как советовали - настроил PinD.2 на вход. Кроме того, перевел собранную схему термостата с макетной платы на паяную картонку. а то заметил, что кое-где стал плохой контакт. В общем, в результате программа все равно не работает. А именно. С термометром проблем нет. Термостатная часть. При нажатии на кнопку Настр. (Int0) высвечивается исходная температура термостата, как и должно быть. Далее при нажатии на кн. Плюс значение на индикаторе увеличивается на единицу, а затем программа уходит в режим термометра. Аналогично с кн. Минус. Значение уменьшается на единицу и - снова режим термометра. Хотя выход из режима настроек должен происходить после второго нажатия на кн. Настр. Так что буду дальше думать. Если вдруг кто-то увидит в моей програмке косяк, я буду очень сильно рад.

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

Добавлено: Вт янв 20, 2015 20:59:58
vanyap1
Никто не сталкивался с косяком в микросхеме - PCF2129? Когда секунды вдруг начинают ходить как им заблагорассудится от 10 до 120. Часы при этом сбиваются.
Причем замечалось это не только на одной МС. И только в момент включения или отключения напряжения. Микросхема включена по даташиту, конднсаторы присктствуют, напряжение батарейки в пределах нормы.
BODLEVEL на МК отключен. Может МК туда мусор записать при просадке питания?
Источников помех в схеме нет.

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

Добавлено: Вт янв 20, 2015 22:00:41
Мурик
rojnov писал(а):В общем, в результате программа все равно не работает.
Обработка прерываний от кнопки настроек.

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

Flag:                                                       'обработка INT0
F = 1                                                       'первый вход в режим настройки
If K = 1 Then                                               'второй вход в режим настройки
   F = 0 : K = 0
End If
If T = A Then F = 0
Return
Во первых, кнопка наверняка "дребезжит", а в коде это не учтено. Во вторых, при выходе из подпрограммы прерываний от INT0 нужно сбрасывать флаг этого прерывания. Тут подробнее об этом. http://www.decada.org.ru/project/lessons/bascom_avr/10
И в третьих, что хранится в переменных A, T и K и при каких условиях они равны, а K = 1?

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

Добавлено: Вт янв 20, 2015 22:10:44
pavel1979
Всем спасибо за советы,открыл тему-куплю ....
rojnov порылся в исходнике,переписал на свой лад-оставил 2 кнопки +-,при вкл входим в режим контроля,высвечивается действующая температура,при нажатии любой из кнопок вход в настройку-высвечивается температура из еепром,горят обе точки(чтоб знать что высвечивается),+ и - гоняем установку,если 5 сек не нажимать на кнопки-гашение точек и переход обратно в режим контроля

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

Добавлено: Ср янв 21, 2015 14:42:28
rojnov
Добрый вечер! Благодарю всех, кто откликнулся.
По поводу "Дребезга" - точно, дал маху, совсем про него забыл. Поправлю. По поводу

сброса флага прерывания - как-то совсем упустил это из виду, т.к. знаком с этим

пока только по учебникам. Живьм пользоваться этим пока не приходилось. Добавлю.

Теперь попробую объяснить смысл переменных А, Т и К. И как я все это планировал.
Т- температура. В режиме термометра- текущая температура, в режиме термостата -

поддерживаемая температура. В общем, это то, что выводится на индикатор.
А - вспомогательная переменная, в которую записывается значение Т. Если они на

каком-то этапе не совпадают, значит Т изменилась, и в память надо записать новое

значение Т. А в подпрограмме индикации А нужна для разложения числа на разряды.
К - признак того, что мы находимся в режиме настройки. Изначально К=0. При первом

нажатии Настр. и при изменении Т в ту или иную сторону К становится равным 1. Для

выхода из режима настройки еще раз нажимаем Настр. А раз К=1, то переменные

обнуляются, и прога выходит из режима настройки. А условие IF T=A Then F=0

означает, что мы были в режиме настройки и вышли из него без изменения Т. Вот

примерно так я и планировал. Но вчера ночью посидел и понял, что происходит на

самом деле. Как только вхожу в режим настройки, на первом же круге в память на

место 10 заносится значение текущей температуры и кажется, что я не зашел в режим

настройки. Но где именно косяк, я еще не разобрался.
Не знаю, понятно или нет, объяснил как мог.

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

Добавлено: Ср янв 21, 2015 15:02:05
rojnov
pavel1979. Спасибо за помощь! Посмотрел ваш код, слегка офигел в хорошем смысле слова. Для меня пока что это как пересесть с Запора на Мерс. Буду разбираться.
Можно будет вопросы кинуть в личку? А вопросы будут, т.к. сходу не все понятно.

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

Добавлено: Ср янв 21, 2015 15:54:26
pavel1979
задавайте,там ничего сложного-входим в работу,начинается высвечиваться значение переменной А,меряем температуру,сравниваем с установленной,далее-если никакая кнопка не нажата (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-выключаем точки
у вас вроде все спаяно,можете проверить,жду результата!

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

Добавлено: Ср янв 21, 2015 18:14:05
rojnov
pavel1979, приветствую! Загрузил кекс в контроллер, включил, наблюдаю. В режиме термометра в принципе все нормально. Температуру показывает, на нагрев датчика пальцем реагирует. Единственное, что ненормально - периодически, сек через 20-30 в первом разряде проскакивают лишние сегменты, а пару раз вместо 18градС было А5. Но такое у меня и раньше бывало, может быть, это связано с железом, а не с прогой.
А вот дальше - проблемы. Для индикации режима настроек вместо точек индикатора подключил мигающий красный светодиод. Так мне удобнее.
Итак, нажимаю + и -. Светик начинает моргать. На индикаторе - черт знает что. Нажимаю на - . -во втором разряде цифры уменьшаются от 9 до 0, в первом разряде - светятся странные сегменты, в произвольном порядке. При переходе с 0 на 9 они меняются, но смысла в них нет. При нажатии на + значение в обоих разрядах не меняется, сегменты - также произвольные. Причем через каждые 10-15 сек высвечивается текущая температура на 1 сек, а потом - опять та же белиберда. Я очень озадачен и пока не знаю, что делать.

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

Добавлено: Ср янв 21, 2015 18:21:48
rojnov
Еще вопрос по вашей схеме в Протеусе. Для чего нужны R9 и R10? Я что-то раньше не встречал подтяжки разрядов индикаторов к +. Для чего это?

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

Добавлено: Ср янв 21, 2015 18:47:09
pavel1979
r9 r10 можно не ставить,тогда осциллограф и индикатор не правильно в протеусе кажет
вот попробуй эту прошивку,в первой кое-что упустил,одну строчку :))

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

Добавлено: Ср янв 21, 2015 19:34:35
rojnov
Попробовал новую прошивку. Все супер! Работает, как надо. Спасибо! Но только теперь бы получить весь код с исправлениями - буду изучать. А потом, когда будут вопросы, а они будут - я их скину в личку.

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

Добавлено: Ср янв 21, 2015 19:44:14
pavel1979
прошивка ниже
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
..........

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

Добавлено: Ср янв 21, 2015 20:09:50
rojnov
Ещё раз спасибо! Буду изучать.

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

Добавлено: Чт янв 22, 2015 10:26:15
edm2007
pavel1979 писал(а):выяснил,что иногда не правильно считываются показания термометра,на экране при этом проскакивает нечаянная температура
Работе с шиной 1WIRE ничего не должно мешать. Вы же наверняка имеете представление, каким образом в этом протоколе передается информация. А значит и вопросов не возникнет. У Вас же работает прерывание индикации, которое мешает работе с датчиком. Решение данной проблемы очевидно.

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

Добавлено: Чт янв 22, 2015 11:54:15
ev3658
Подскажите пожалуйста, может кто видел, как использовать два текстовых LCD в одном микроконтроллере?



edm2007 писал(а):....

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

EIFR = 64

или

EIFR.INTF6 = 1
....
Спасибо, хоть и INT6 но помогает Eifr = 255

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

Добавлено: Чт янв 22, 2015 12:19:56
edm2007
Так а в чем проблема? Линии данных параллельно а выводы E как выбор нужного индикатора. И всех делов. :)

P.S. Флаги должны сбрасываться нормально, это что-то у Вас...

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

Добавлено: Чт янв 22, 2015 17:53:04
pavel1979
edm2007 писал(а):
pavel1979 писал(а):выяснил,что иногда не правильно считываются показания термометра,на экране при этом проскакивает нечаянная температура
Работе с шиной 1WIRE ничего не должно мешать. Вы же наверняка имеете представление, каким образом в этом протоколе передается информация. А значит и вопросов не возникнет. У Вас же работает прерывание индикации, которое мешает работе с датчиком. Решение данной проблемы очевидно.
спасибо edm2007!не докумекал сразу
исправил,нех ниже