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

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

Добавлено: Пн мар 27, 2017 05:48:13
edm2007
IDok писал(а):прошел и не раз.
Ну-ну.

1. Переменная М = 0. Выполняется условие "If M = 0...". Увеличивается значение переменной L1. Остальные условия тоже проверяются, но ни одно из них не выполняется. Так будет до тех пор, пока L1 не станет равна 255. Яркость первого светодиода растет, и в итоге он светит в полную яркость.

2. L1 = 255. Выполняется условие "If L1 = 255...". Переменной M присваивается значение 1. В следующей строке теперь выполняется условие "If M = 1" и переменная L2 увеличивается на 1. Она еще не равна 255, потому дальше условие не выполняется.

3. Следующая проверка на равенство M = 2. Тоже не истина. L3 тоже проверяется на равенство 255, но и оно не выполняется. Основной цикл начинается сначала.

4. Первая проверка M = 0. Это не так, она сейчас равна 1, пропускаем. Вторая проверка L1 = 255. Да, это так, присваиваем M = 1. Но это не страшно, она и так равна 1. Идем дальше.

5. M = 1, Значит прибавляем яркость второго светодиода. И так происходит до тех пор, пока яркость L2 не станет равна 255. Выполнится условие "If L2 = 255...". M присваивается значение 2. Горят оба светодиода.

6. Далее проверяем равенство M = 2. Да, это так, а значит прибавляем L3. Оно еще не 255, так что начинаем все сначала.

7. А вот здесь начинается самое интересное. Проверяем M = 0. Нет. Проверяем L1 = 255. Да! И M присваивается значение 1. А дальше что? А дальше проверка "If M=1 then incr L2". Она конечно выполняется, и L2 переваливается через 255, становясь равна 0. Светодиод 2 гаснет.

8. Далее уже условия для третьего светодиода не выполняются. В это время яркость второго светодиода растет. И так доходит до 255. При этом М становится равна 2.

9. На один шаг становится выше яркость L3. И тут же M становится равна 1, второй светодиод снова гаснет.

Резюме: Первый светодиод плавно зажигается, за ним так же плавно зажигается второй, и тут же гаснет. Яркость третьего прибавляется на шаг, первый так и горит в полную яркость, второй снова плавно зажигается и гаснет. Третий еще на шаг ближе к свету. И все повторяется снова и снова... :tea:

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

Добавлено: Пн мар 27, 2017 07:08:11
IDok
вот я дятел бетонных джунглей :facepalm:
последний раз программировал лет 20 назад, все навыки уже стерлись.... :(

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

Добавлено: Пн мар 27, 2017 15:18:16
andrusha152
Приветствую всех участников форума. Прочитал все с большим удовольствием. Очень много полезного нашел для себя. Хочу сказать СПАСИБО всем! Есть и у меня вопросик.edm2007 есть у Вас проект, называется Термометр "Гном". ( http://radiokot.ru/circuit/digital/home/97/) Я сделал себе нечто подобное, все работает красиво, потребление в режиме индикации 8 mA. Но заметил один баг. При удержании кнопки программа начинает выполняться циклично. Контроллер засыпает и тут же просыпается снова, и до тех пор, пока не отпущу кнопку. У " Гнома" такого нет. Собрал несколько штук на подарки. Победить это я не смог. Прошу помощи. Вот код.


' Термометр
'****************************
$regfile = "attiny2313a.dat" ' Intel Core i7
$crystal = 1000000 ' частота

Config Porta = Output
Config Portb = Output
Config Portd = Output
Config Pind.5 = Input
Config Pind.2 = Input
Pind.2 = 1
Config 1wire = Portd.5 'DS18B20
Config Debounce = 50 'антидребезг
Config Int0 = Low Level
On Int0 Измеряем:
Enable Interrupts
Enable Int0
'****************************
' Переменные
'****************************
Dim W As Byte , Z As Byte , Y As Byte , I As Byte
Dim Ch(3) As Integer , T_p As Integer
Dim Индикация As Word
Dim T As Integer
Dim Минус As Bit
Dim N As Bit

'****************************
' Порты
'****************************
A Alias Portb.0 : B Alias Portb.4 : C Alias Portb.1 : D Alias Portd.0 ' назначаем порты на сегменты
E Alias Portb.5 : F Alias Portb.7 : G Alias Portb.3 : H Alias Portd.1
Dig3 Alias Portd.6 : Dig2 Alias Portb.2 : Dig1 Alias Portb.6 ' и аноды

'****************************
Do ' пустой цикл, без него не засыпает

Loop

'****************************
' Измерение
'****************************
Измеряем:
Set Portd.4 ' подаем питание на датчик
Waitms 100 ' чтобы не высвечивалось 85,0
1wreset
If Err = 1 Then
N = 1
Else
N = 0
End If
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE
T = 1wread(2)
Минус = T.15 ' читаем знак температуры
T = Abs(t)
T = T * 10
T = T / 16
If T = 0 Then Минус = 0 ' избавляемся от минуса при 0 градусов
Reset Portd.4 ' снимаем питание с датчика
'****************************
' Индикация
'****************************
For Индикация = 0 To 700 ' время индикации
T_p = T
For I = 1 To 3 ' разбиваем переменную
If Минус = 1 And T >= 100 Then ' если температура меньше - 10, то без десятых
T_p = T_p / 10
Ch(i) = T_p Mod 10
Else
Ch(i) = T_p Mod 10 ' если температура больше - 10. то с десятыми
T_p = T_p / 10
End If
Next I
If T < 100 Then Ch(3) = 11 ' гасим ноль, когда не нужен
If Минус = 1 Then Ch(3) = 10 ' знак минус, когда нужен
If N = 1 Then
Ch(1) = 13 : Ch(2) = 13 : Ch(3) = 12 ' Err, когда без датчика
End If
Set Dig1 : Set Dig2 : Set Dig3 ' гасим индикатор
Incr W : If W > 3 Then W = 1 ' выбираем какую цифру сейчас включать
Y = 0
Gosub Look : A = Z ' зажигаем сегменты
Gosub Look : B = Z
Gosub Look : C = Z
Gosub Look : D = Z
Gosub Look : E = Z
Gosub Look : F = Z
Gosub Look : G = Z

Select Case W ' включаем нужную цифру (w). Подаем плюс на общий провод конкретной цифры

Case 1 : ' а так же точку, где и когда надо
Reset Dig1
H = 0

Case 2 :
Reset Dig2
If Минус = 1 And T > 99 Or N = 1 Then ' гасим точку, когда не надо
H = 0
Else
H = 1
End If

Case 3 :
Reset Dig3
H = 0

End Select

Next Индикация

Portb = 0 : Reset Portd.0 : Reset Portd.1 : Reset Portd.6 ' обнуляем все порты
Gifr.6 = 1
Return

Look:
Z = Ch(w) * 7 : Z = Y + Z
Z = Lookup(z , Цифры)
Incr Y
Return

Powerdown ' спим, очень крепко
Цифры:

' для индикатора с общим минусом
Data 1 , 1 , 1 , 1 , 1 , 1 , 0 '0
Data 0 , 1 , 1 , 0 , 0 , 0 , 0 '1
Data 1 , 1 , 0 , 1 , 1 , 0 , 1 '2
Data 1 , 1 , 1 , 1 , 0 , 0 , 1 '3
Data 0 , 1 , 1 , 0 , 0 , 1 , 1 '4
Data 1 , 0 , 1 , 1 , 0 , 1 , 1 '5
Data 1 , 0 , 1 , 1 , 1 , 1 , 1 '6
Data 1 , 1 , 1 , 0 , 0 , 0 , 0 '7
Data 1 , 1 , 1 , 1 , 1 , 1 , 1 '8
Data 1 , 1 , 1 , 1 , 0 , 1 , 1 '9
Data 0 , 0 , 0 , 0 , 0 , 0 , 1 '10 "-"
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 '11 "" пусто
Data 1 , 0 , 0 , 1 , 1 , 1 , 1 '12 E
Data 0 , 0 , 0 , 0 , 1 , 0 , 1 '13 r

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

Добавлено: Пн мар 27, 2017 15:38:01
edm2007
Здравствуйте.

Код я посмотрю, но пока могу сказать одно - прерывание по низкому уровню генерируется все время, пока этот уровень удерживается. Потому просто перед засыпанием можно погасить индикацию, и ждать отпускания кнопки (с антидребезгом, естественно). И только после этого засыпать.

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

Добавлено: Ср мар 29, 2017 18:21:54
andrusha152
Большое спасибо. Прописал перед Powerdown - Bitwait PIND.2 , Set и все заработало, как надо.

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

Добавлено: Сб апр 01, 2017 16:36:03
IDok
при попытке прошить тини85 баском пишет chip differs at byte address: 00040, [FF]-[81], фьюзы прошиваются,
программатор Usbasp, раньше работал нормально. это чип убился или программатор?
программка простейшая, мигание диодом на PB.4

Добавлено after 24 minutes 4 seconds:
замерял сейчас напряжения с программатора: без нагрузки = 4.9В, с подключеной тинькой = 4В, с тинькой+светодиод = 3В.
походу стабилизатор программатора накернился, хотя сам работает, 2313 только что несколько раз перешил и прошивка работала. а вот что с тини85 - это вопрос

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

Добавлено: Сб апр 01, 2017 16:44:41
edm2007
IDok писал(а):походу стабилизатор программатора накернился
Запросто такое может быть. Если конечно подключенный контроллер не дохлый, или не сконфигурирован так, что своими ногами соорудил КЗ.

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

Добавлено: Сб апр 01, 2017 16:50:21
IDok
МК живой, ибо записанную программу отрабатывает. а стабилизатор программатора сдох походу во время икспириментов с тини85, когда на него динамик подключал на 8 Ом :(
а может и в перемычках заплутал и где-то коротыш устроил. придется теперь от отдельного стабилизатора запитываться... жаль...
так с тини85 что за ошибка такая - chip differs at byte address: 00040, [FF]-[81], ? не подскажете?

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

Добавлено: Сб апр 01, 2017 16:58:16
edm2007
Ну никто не запрещает отремонтировать программатор. :) Я в своем самодельном USBasp питаю прошиваемый чип от программатора напрямую обычно, а стаб на 3,3В стоит, если устройству это важно. Конечно если к у контроллера в цифровой части что-то потребляющее есть то тут либо стороннее питание, либо джампер разрывающий потребителя, но это реже бывает.

Ошибка... Для начала приведите в порядок программатор. Если ошибка повторится, то попробуйте другой (такой же) МК.

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

Добавлено: Сб апр 01, 2017 17:07:30
IDok
edm2007 писал(а):Ну никто не запрещает отремонтировать программатор. :) МК.
всё запрещает. smd-элементы мне паять тупо нечем :(
да и пойди пойми их номиналы...

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

Добавлено: Сб апр 01, 2017 17:10:09
edm2007
Ну если до Иркутска не очень далеко, то заезжайте в гости, отремонтируем. :))

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

Добавлено: Сб апр 01, 2017 17:12:43
IDok
да проще уж из московии новый выписать за 150 рублев, или этот с отдельным питаловом использовать. неудобно просто, я как подпольщик - паяю по ночам и под столом :(

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

Добавлено: Сб апр 01, 2017 17:13:59
edm2007
Да я не заставлял, вроде. Проще - так выписывайте. А если контроллер приказал долго жить, закажете новый программатор, подключите и снова сдохнет стаб? Опять заказывать? Ведь вкорячить стабилизатор не такая и проблема. Даже в другом корпусе прикрутить не так сложно. Будет желание, сделайте хорошее фото программатора. Если двухслойка, то с обеих сторон.

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

Добавлено: Сб апр 01, 2017 19:17:22
IDok
а с компа с юсб можно взять 5В или они там недостаточно пятивольтовы?

Добавлено after 10 minutes 28 seconds:
Изображение
ну вот он, собственно. с обратной стороны элементов нет. если нужно фото лучше - то только завтра

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

Добавлено: Сб апр 01, 2017 19:46:53
andrusha152
А где на этой плате стоит стабилизатор? Походу у Вас сдох стабилитрон D1. Цвет у него не приятный. Может и D2, на фото не видно. Они на 3,3В. Используются для согласования уровней.

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

Добавлено: Сб апр 01, 2017 19:55:13
IDok
не, это не цвет, это синие полосочки так отобразились. а с виду они целые не горелые

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

Добавлено: Сб апр 01, 2017 19:56:31
andrusha152
А прозвонить?

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

Добавлено: Сб апр 01, 2017 19:59:00
IDok
не выпаивая? результаты могут озадачить. хотя конечно можно

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

Добавлено: Сб апр 01, 2017 20:05:05
andrusha152
На нормальных стабилитронах полоска более яркая. А здесь такое ощущение, что стабилитрон сильно нагрелся, и краска выгорела. Хотя, это может быть из-за качества фото. Но прозвонить нужно. В одну сторону бесконечное сопротивление, в другую где-то 500 Ом. Можно звонить и не выпаивая.

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

Добавлено: Сб апр 01, 2017 20:14:12
IDok
прозвонил. стабилитроны целые