Например TDA7294

Форум РадиоКот • Просмотр темы - BASCOM AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 17, 2024 01:12:34

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 6019 ]     ... , , , 273, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт май 02, 2017 15:55:32 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 37
Рейтинг сообщений: 303
Зарегистрирован: Вт апр 21, 2009 22:24:10
Сообщений: 2225
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Ну отлично, Вы все правильно делаете, значит. :)) А теперь поставьте точку останова в исходнике там, где идет обработка нажатой при включении кнопки (брекпоинт ставится двойным нажатием по строке исходника). Теперь при запуске симуляция остановится на этой точке. Или не остановится, если туда не попадет. А далее можно будет пошагово (кнопка с ботинком) пройти по коду, смотря что творится.

Ну и можете проект с протеусом прикрепить, ежели чего... :tea:

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт май 02, 2017 16:12:56 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн июн 07, 2010 16:16:57
Сообщений: 148
Рейтинг сообщения: 0
А теперь поставьте точку останова в исходнике там, где идет обработка нажатой при включении кнопки (брекпоинт ставится двойным нажатием по строке исходника). Теперь при запуске симуляция остановится на этой точке. Или не остановится, если туда не попадет. А далее можно будет пошагово (кнопка с ботинком) пройти по коду, смотря что творится.

Поставил красную точку break point. Запускаю симуляцию (F12)и она останавливается в указанной точке (строка, где происходит проверка кнопки до подачи питания).
Далее нажимаю на ботинок(и) (пошагово) - происходит проверка Debounce кнопок и всех условий If внутри цикла Do...Loop
Цитата:
Ну и можете проект с протеусом прикрепить, ежели чего... :tea:

исходник и протеус на предыдущей странице, 2-3 постами выше.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт май 02, 2017 16:38:24 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 37
Рейтинг сообщений: 303
Зарегистрирован: Вт апр 21, 2009 22:24:10
Сообщений: 2225
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А почему Вы перед изменением режима, не считываете его номер из EEPROM? Ведь

Код:
Mmode = Mmode + 1                                        'инкрементируем       


всегда равна 1. Эта единица и будет всегда записываться в EEPROM, при попытке изменить режим.

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт май 02, 2017 17:16:12 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн июн 07, 2010 16:16:57
Сообщений: 148
Рейтинг сообщения: 0
А почему Вы перед изменением режима, не считываете его номер из EEPROM? Ведь
всегда равна 1. Эта единица и будет всегда записываться в EEPROM, при попытке изменить режим.

Ой. А вот и первый баг :)
Исправил, но все равно не фурычит. И даже режим не переключается.
Привожу кусочек код опроса кнопки до включения:

Код:
If Btn = 0 Then
   Mmode = S ---->> ДОБАВИЛ ТОЛЬКО ЭТУ СТРОЧКУ.
   Waitms 500
   Mmode = Mmode + 1                                        'инкрементируем
   Waitms 500
   S = Mmode                                                'сохраняем в S Eram
   Waitms 500
   Led = 1                                                  'мигаем 1 раз
   Waitms 100
   Led = 0
   Waitms 100

   If Mmode >= 2 Then                                       'Сбрасывам в ноль, если Mmode больше или равно 2.
   Mmode = 0

   Else                                                     'в противном случае
   If Btn = 1 Then                                          'если кнопку не нажимали
   Waitms 500
   Mmode = S                                                'считываем раннее записанное значение Mmode (режима)
   End If                                                   'конец условия
   Wait 3
   End If                                                   'конец условия
   End If                                                   'конец условия


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт май 02, 2017 17:33:08 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 37
Рейтинг сообщений: 303
Зарегистрирован: Вт апр 21, 2009 22:24:10
Сообщений: 2225
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Второй нюанс работы с EEPROM: изначально по всем адресам записано значение FF. А значит при первом включении нужно инициализировать нужные ячейки. Вообще в Вашем случае при первой попытке изменить режим должно считаться 255, далее 255 +1 = 0. И этот 0 запишется в память. При следующей попытке изменить режим уже будет 1. Далее - 2. А значит выполнится условие

Код:
If Mmode >= 2 Then                                       'Сбрасывам в ноль, если Mmode больше или равно 2.
Mmode = 0


Но тут нет сохранения в EEPROM. А значит Mmode будет при зажатой кнопке равна 2 (и сразу 0), и так далее. Проще говоря, Mmode всегда будет 0 (а в EEPROM при этом счетчик будет шагать, переменную S ведь никто не обнулял в этом условии). :tea:

Добавлено after 5 minutes 44 seconds:
Кстати, для того чтобы полностью сбросить МК в протеусе (и EEPROM в том числе), при остановленной симуляции выберите "Отладка -> Сброс постоянных данных модели".

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт май 02, 2017 17:35:49 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн июн 07, 2010 16:16:57
Сообщений: 148
Рейтинг сообщения: 0
Сделал так:
Код:
Mmode = S
If Btn = 0 Then
   Waitms 500
....

В эмуляторе в этом случае переменная Mmode каждый раз увеличивается, при смене режима. А вместе с ней и значение в еепром.
Почему то Mmode не сбрасывается в 0, ведь стоит следующее условие:

Код:
   If Mmode >= 2 Then                                       'Сбрасываем в ноль, если Mmode больше или равно 2.
   Mmode = 0

Таким образом Mmode не равно 1, следовательно, режим сменить не получается :(

Вот-вот!
Я как раз об этом. Вы меня опередили.
Как решить эту проблему? :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт май 02, 2017 17:46:10 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 37
Рейтинг сообщений: 303
Зарегистрирован: Вт апр 21, 2009 22:24:10
Сообщений: 2225
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Смотрите, как сейчас дело обстоит у Вас.

1. Включаем агрегат с зажатой кнопкой. Из EEPROM считывается 255.
2. Mmode = 255 + 1 = 0
3. Этот 0 сохраняется в EEPROM.
4. В итоге Mmode = 0 и S = 0, идем в основной цикл.

//----------

1. Включаем агрегат с зажатой кнопкой. Из EEPROM считывается 0.
2. Mmode = 0 + 1 = 1
3. Эта 1 сохраняется в EEPROM.
4. В итоге Mmode = 1 и S = 1, идем в основной цикл.

//----------

1. Включаем агрегат с зажатой кнопкой. Из EEPROM считывается 1.
2. Mmode = 1 + 1 = 2
3. Эта 2 сохраняется в EEPROM.
4. Теперь выполняется условие If Mmode >= 2 Then, и Mmode становится равна нулю.
5. В итоге Mmode = 0, а S = 2 (ее-то никто не сбросил), идем в основной цикл.

//----------

1. Включаем агрегат с зажатой кнопкой. Из EEPROM считывается 2.
2. Mmode = 2 + 1 = 3
3. Эта 3 сохраняется в EEPROM.
4. Снова выполняется условие If Mmode >= 2 Then, и Mmode становится равна нулю.
5. В итоге Mmode = 0, а S = 3, идем в основной цикл.

Таким образом, значение в EEPROM увеличивается при каждой попытке изменить режим, а вот переменная Mmode так и будет равна 0. Так будет до тех пор, пока S не станет равна 255, потом снова перевалится в 0, и вот тогда на один раз Mmode станет равна 1. А потом все повторится снова...

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт май 02, 2017 18:49:49 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн июн 07, 2010 16:16:57
Сообщений: 148
Рейтинг сообщения: 0
А как записать 255 в еепром?
В самом начале кода
прописал так: Mmode = 255
При нажатии на кнопку увеличивается на 1 и как бы сохраняется. А вот при повторном включении все-равно Mmode = 255 и так по кругу. Я чего-то не догоняю, туплю :(
Пойду отдохну маленко, обмозгую...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вт май 02, 2017 18:53:35 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 37
Рейтинг сообщений: 303
Зарегистрирован: Вт апр 21, 2009 22:24:10
Сообщений: 2225
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Вы не о том думаете, запутывая себя же самого. Зачем записывать 255? Перечитайте

edm2007 писал(а):
изначально по всем адресам записано значение FF


Оно там уже есть у чистого контроллера. Я расписал как работает сейчас программа, я не писал что нужно сделать. :)

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Чт май 04, 2017 10:40:08 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн июн 07, 2010 16:16:57
Сообщений: 148
Рейтинг сообщения: 0
я не писал что нужно сделать. :)

Учитель :)
Может быть завести еще одну переменную Flag?
Не пинайте сильно.

Код:
Dim S As Eram Byte                                     
Dim Mmode As Byte                                         
Dim Flag As Byte                                             

If Btn = 0 Then
   Flag = S
   Waitms 500
   Flag = Mmode + 1                                        'инкрементируем
   Waitms 500
   S = Flag                                                'сохраняем в S Eram
   Waitms 500
   Led = 1                                                  'мигаем 1 раз
   Waitms 100
   Led = 0
   Waitms 100

   If Flag >= 2 Then                                       'Сбрасывам в ноль, если Flag больше или равно 2.
   Flag = 0

   Else                                                     'в противном случае
   If Btn = 1 Then                                          'если кнопку не нажимали
   Waitms 500
   Flag = S                                                'считываем раннее записанное значение Mmode (режима)
   End If                                                   'конец условия
   Wait 3
   End If                                                   'конец условия
   End If                                                   'конец условия

Do
....
Loop

...
...
'================= О Б Р А Б О Т Ч И К  П Р Е Р Ы В А Н И Й ==

'/// ---> ВЫКЛЮЧАЕМ ДХО
Drl_off:                                                    'метка
If Flag = 1 And Turn = 1 Then                              'Если выбран Flag=1 и включен поворотник, тогда
Pwm0a = 255                                                 'Включаем ШИМ на полную яркость
Else                                                        'В противном случае, Flag=0 + включен поворотник, тогда
Pwm0a = 0                                                   'Выключаем ШИМ вовсе
End If                                                      'конец условия
Bitwait Turn , Reset                                        'ждем когда поворотник перестанет мигать
Return                                                      'выходим


Поправьте, если не так.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Чт май 04, 2017 10:46:02 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 37
Рейтинг сообщений: 303
Зарегистрирован: Вт апр 21, 2009 22:24:10
Сообщений: 2225
Откуда: Иркутск
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Хе. Давайте с самого начала, режим должен переключаться как? 0 - 1 - 0 - 1? Вы в условии

Код:
If Mmode >= 2 Then                                       'Сбрасывам в ноль, если Mmode больше или равно 2.
Mmode = 0


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

Код:
If Mmode >= 2 Then                                       'Сбрасывам в ноль, если Mmode больше или равно 2.
Mmode = 0
S = Mmode                                                'сохраняем в S Eram


Только без Ваших новшеств с флагами...

_________________
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Чт май 04, 2017 11:11:01 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн июн 07, 2010 16:16:57
Сообщений: 148
Рейтинг сообщения: 0
сбрасываете режим в ноль, но при этом оставляете его в переменной S, хотя это копия режима. Как минимум, должно быть так

Код:
If Mmode >= 2 Then                                       'Сбрасывам в ноль, если Mmode больше или равно 2.
Mmode = 0
S = Mmode                                                'сохраняем в S Eram

Спасибо!
Сделал так:
Код:
'/// ---> НАСТРОЙКА РЕЖИМА РАБОТЫ
'До подачи питания нажимаем кнопку и держим до тех пор,
'Значение Mmode не изменится
'LED мигнет 1раз сигнализируя о том, что настройка сохранилась

Mmode = S
If Btn = 0 Then
   Waitms 500
   Mmode = Mmode + 1                                        'инкрементируем
   Waitms 500
   S = Mmode                                                'сохраняем в S Eram
   Waitms 500
   Led = 1                                                  'мигаем 1 раз
   Waitms 100
   Led = 0
   Waitms 100

   If Mmode >= 2 Then                                       'Сбрасывам в ноль, если Mmode больше или равно 2.
   Mmode = 0
   S = Mmode ------> 'ВОТ ЭТА СТРОЧКА, из-за которой вся головная боль началась :)

   Else                                                     'в противном случае
   If Btn = 1 Then                                          'если кнопку не нажимали
   Waitms 500
   Mmode = S                                                'считываем раннее записанное значение Mmode (режима)
   End If                                                   'конец условия
   Wait 3
   End If                                                   'конец условия
   End If                                                   'конец условия



В симуляторе работает просто замечательно :)
Гляжу в окна AVR Variables и AVR EPROM Memory = Переменные Mmode и S меняются одинаково: 1 и 0; 0 и 1.
Вечером в железе попробую.
Еще раз спасибо, учитель! :)
Эта строка мне столько крови выпила вы прошлый уик-энд. Да и из головы что-то вылетело условие, что если Mmode = 0 его тоже нужно сохранять.
Урааа! :kill:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс май 28, 2017 06:51:40 
Встал на лапы

Зарегистрирован: Вс мар 27, 2011 07:48:48
Сообщений: 127
Откуда: г. Екатеринбург
Рейтинг сообщения: 0
Приветствую всех, кто не спит, и прошу посильной помощи. Написал малюсенькую, но очень

нужную, программульку, а она не хочет работать, хотя по идее должна была. Задача такая: в

рабочем режиме контакты на входе замкнуты( использую INT0 у Tiny13 на 6 ноге). На выходе МК

(PB.2) стоит оптореле, которое далее по схеме включает силовую часть. Периодичести раз в 2

мин контакты на входе размыкаются на 1 сек, и надо, чтобы выход на эти размыкания не

реагировал. Но если вход разомкнут более чем на 2 сек, устройство на выходе выключается.
Прошу посмотреть свежим взглядом, чего ему не хватает. Собрал на макетке, вместо оптореле

воткнул светодиод.
Код:
$regfile = "attiny13a.dat"
$crystal = 4800000
$hwstack = 8
$swstack = 16
$framesize = 32

Config Pinb.1 = Input
Config Portb.2 = Output
Config Int0 = Falling
On Int0 Pr
Enable Interrupts
Enable Int0
Dim A As Long
Hrom Alias Pinb.1
Rele Alias Portb.2
A = 0 : Reset Rele

Do
If Hrom = 1 Then Incr A
   If A = 1200000 Then
      Reset Rele
      Powerdown
   End If

Loop

Pr:
A = 0 : Set Rele
Return

End


Добавлено after 9 hours 25 minutes 37 seconds:
Понял, что через Int0 работать не будет. Сделал еще проще. Но светик, вместо того, чтобы

спокойно гореть, очень часто мигает. На размыкание кнопки на входе реакции тоже нет. Пока

думаю.
Код:
$regfile = "attiny13a.dat"
$crystal = 4800000
$hwstack = 8
$swstack = 16
$framesize = 32

Config Pinb.3 = Input
Config Portb.1 = Output
Hrom Alias Pinb.3
Rele Alias Portb.1
Dim A As Long
A = 0 : Reset Rele

Do
If Hrom = 0 Then Set Rele
If Hrom = 1 Then
 Incr A
   If A = 1200000 Then
      Reset Rele : A = 0
   End If
End If
Loop


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс май 28, 2017 08:09:38 
Мучитель микросхем
Аватар пользователя

Карма: 7
Рейтинг сообщений: 19
Зарегистрирован: Пн авг 20, 2007 21:35:45
Сообщений: 485
Откуда: Мытищи, Московская область
Рейтинг сообщения: 0
светик, вместо того, чтобы
спокойно гореть, очень часто мигает. На размыкание кнопки на входе реакции тоже нет. Пока
думаю.

If A = 1200000 Then
Reset Rele : A = 0


Ну, логично. Здесь светик должен моргать примерно 4 раза в секунду. При такой тактовой частоте A становится равна 1200000 за 0,25 секунд.
Для решения вашей задачи проще не считать тики на такой частоте, а использовать встроенный таймер для замера времени и считать его переполнения.
2 секунды на частоте 4,8 мгц - это 37 переполнений 8-битного таймера c делителем 1024

Код:
$regfile = "attiny13a.dat"
$crystal = 4800000
$hwstack = 8
$swstack = 16
$framesize = 32

Config Pinb.3 = Input
Config Portb.1 = Output
Hrom Alias Pinb.3
Rele Alias Portb.1
Dim A As byte
A = 0 : Reset Rele

Config Timer0 = Timer , Prescale = 1024
Enable Timer0
Enable interrupts
On Timer0 Incr_a
Stop Timer0

Do

If Hrom = 0 Then Set Rele
If Hrom = 1 Then
     Start timer0
     While Hrom = 1
     If A > 37 Then
         Stop Timer0
         A = 0
         Reset Rele
         Exit While
      End If
     Wend
       Stop Timer0
       A = 0
End If

Loop


Incr_a:
incr a
return

End                                                         'end program


Пока Hrom = 0 - светик горит, таймер стоит. На Hrom стал 1 - таймер затикал, переполнения считаются в подпрограмме Incr_a. Стало 37 переполнений - остановили таймер, сбросили А, cбросили Rele. Если На Hrom уже не 1, а A еще не стало 37 - остановили таймер, сбросили А, Rele не трогаем.
Проверить не на чем, но вроде компилится. Проверяйте. Обратите внимание на фузы установки частоты кристалла, так как таймер рассчитывается исходя из этой частоты.

_________________
С уважением,
Алексей.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс май 28, 2017 08:34:00 
Встал на лапы

Зарегистрирован: Вс мар 27, 2011 07:48:48
Сообщений: 127
Откуда: г. Екатеринбург
Рейтинг сообщения: 0
Спасибо, вечером попробую. Вообще-то я начинал с использования таймера, но почему-то решил, что проще считать тики МК чем возиться с таймером. В итоге мысль пошла не в ту сторону.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс май 28, 2017 20:05:39 
Встал на лапы

Зарегистрирован: Вс мар 27, 2011 07:48:48
Сообщений: 127
Откуда: г. Екатеринбург
Рейтинг сообщения: 0
Добрый вечер всем! Попробовал в железе (на макетке) и ничего не могу понять. По идее, все должно работать. Попробовал на 2-х разных МК: на одном светик горит нормально, на другом- мигает очень часто. Причем на нажатие кнопки на входе оба не реагируют. Специально перепроверил фьюзы - у обоих одинаково. Попробовал в Протеусе - все работает, как надо. Может быть, с камнями что-то не так?
Наверное, буду делать на печатной плате с МК в SO-8. Они точно новые.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Вс май 28, 2017 20:53:27 
Мучитель микросхем
Аватар пользователя

Карма: 7
Рейтинг сообщений: 19
Зарегистрирован: Пн авг 20, 2007 21:35:45
Сообщений: 485
Откуда: Мытищи, Московская область
Рейтинг сообщения: 0
Попробовал в железе (на макетке) и ничего не могу понять. По идее, все должно работать.


Про сопротивление Pinb.3 на плюс 4,7к не забыли ? Протеусу все равно, а в реальных схемах нужно подтягивать. И емкость 0,1 мкф Pinb.3 на землю. Фузы проверяйте, делитель на 8 должен быть выключен.
Я не знаю что у вас за кнопка, может "звенит". Попробуйте вставить задержку:
Цитата:
If Hrom = 1 Then
waitms 200
Start timer0
...

_________________
С уважением,
Алексей.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Чт июн 15, 2017 10:02:39 
Встал на лапы
Аватар пользователя

Карма: 7
Рейтинг сообщений: 28
Зарегистрирован: Вт май 03, 2011 10:13:12
Сообщений: 139
Откуда: Россия, Татарстан
Рейтинг сообщения: 0
Может кто сталкивался с алгоритмами предсказания погоды по изменению давления и влажности? Есть алгоритм Zambretti, но реализация только на php, а я в нём ни бум-бум. Что скажете? Может кто уже делал?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Пт июн 16, 2017 19:25:36 
Встал на лапы

Зарегистрирован: Ср фев 01, 2017 17:57:15
Сообщений: 93
Рейтинг сообщения: 0
друзья, подскажите кто что может. есть программа, надо управлять режимами одной кнопкой. проблема в том, что по нажатию кнопки возврат из прерывания приходит в самую гущу длинного и долгого цикла и пока он не докрутится - переходов нет. надо каким-то макаром попадать из прерывания кнопки в начало программы. Goto не предлагать - не работает
Цитата:
$Regfile="attiny85.dat"
$Crystal=8000000
$hwstack=40
$swstack=16
$framesize=32


Config Portb.0 = Output 'R
config portb.1 = output 'G
config portb.4 = output 'B
Config PORTB.3 = output 'белый свет
Config PINB.2 = input 'кнопка

Config Int0 = Falling : On INT0 Button
Config Timer1 = Timer , Prescale = 1 : On Timer1 Pwm_prog : Enable Timer1 : Enable Interrupts : start timer1 : Enable Int0


Dim S As Byte , A as Byte , C(3) as byte , B as Byte

B=0
for A=0 to 63 'увеличиваем красный
C(1)=lookup(A , TAB_PWM)
waitms 20
next
Do
if B=1 then goto 1
if B=2 then goto 2
loop
2:
do
If B=2 then
тут длинный и долгий ШИМ для светодиодов
End if
Loop

1:
Do
If B=1 Then
PORTB.0 = 0 : PORTB.1 = 0 : PORTB.4 = 0 : PORTB.3 = 1 'включаем белый свет
End if
Loop

end



Pwm_prog:
Return

Button:
Incr B
waitms 10
if B>2 then B = 0
Return


5


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: BASCOM AVR в вопросах и ответах
СообщениеДобавлено: Сб июн 17, 2017 15:30:59 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 243
Зарегистрирован: Ср янв 16, 2008 08:34:04
Сообщений: 2471
Откуда: KMV
Рейтинг сообщения: 0
IDok , на мой взгляд программа неправильно написана. Вижу ДВА бесконечных цикла без выхода из них. Бесконечный цикл должен быть один. в нем и крутится основная программа.
Сделайте в нем switch - case по переменной В и будет вам счастье/

_________________
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 6019 ]     ... , , , 273, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y