BASCOM AVR в вопросах и ответах
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Да, у каждого программиста свои страшилки есть.
Я после похожего случая стал в дропбоксе проекты хранить. Удобно на нескольких компухтерах работать, а для безопасности это виртуальный зашифрованный диск, который монтируется автоматом под паролем. А при его монтировании запускается дропбокс. Я хоть и параноик, но пока вполне устраивает. Ну и периодически на резервный винт сливаю. 
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- bobr 25
- Электрический кот
- Сообщения: 1047
- Зарегистрирован: Вт янв 08, 2013 04:08:16
- Откуда: FAR EAST FOREVER
Re: BASCOM AVR в вопросах и ответах
Сам проги не пишу. Очень хочу разобраться. Но для этого надо время и что б никто не дергал. В жизни как у Маяковского-кроха сын к отцу пришел... И - дорогой ты в магазин ходил? Ну вот как тут разбираться?
1.Всегда бывает первый раз.
2.Родился сам, помоги другому
2.Родился сам, помоги другому
Re: BASCOM AVR в вопросах и ответах
Прошу помощи.
Я сделал индикатор из светодиодных матриц 8х8 + max7219 - . 4 последовательно соединенных матрицы в 3 ряда.
Основа MAX7219 16-разрядный сдвиговый регистр. передается 8-бит адреса + 8 бит данных. У меня последовательно соединено 4 матрицы.
Вот кусок тестового кода
Я специально вставил вот этот кусок
чтоб можно было посмотреть как задвигаются данные. + задержки.
Допустим я хочу зажечь верхнюю строку матрицы 4 и 1 . Записываю в Disp_ram(4) = FF и Disp_ram(1) = FF
Запускаю программу. В регистры передается последовательность 01FF,0100,0100,01FF
Сначала зажигается верхняя строка первой матрицы, затем зажигается верхняя строка второй, а у первой гаснет. и т.д. до четвертой - светятся верхние строки матриц 1 и 4.
Всё правильно. (При записи следущей строки, содержимое предидущей испортится - всё правильно)
А вот если закоментировать строку "P_iload = 1 ' Для ПРОБЫ", как должно быть, то в четвертой матрице ничего не включится. Будет отображаться только информация для первой матрицы - та что последняя в пакете. То есть будет работать только 1 матрица в ряду.
Почему так ?
Я сделал индикатор из светодиодных матриц 8х8 + max7219 - . 4 последовательно соединенных матрицы в 3 ряда.
Основа MAX7219 16-разрядный сдвиговый регистр. передается 8-бит адреса + 8 бит данных. У меня последовательно соединено 4 матрицы.
Вот кусок тестового кода
Код: Выделить всё
'Запись из ПАМЯТИ Disp_ram() в дисплей max7221
Max7219_load:
P_iclk = 0 ' Тактовый вывод
P_iload = 0 ' Вывод LOAD
Disp_ra_1 = 1 ' Установка начальных адресов
Disp_ra_2 = Disp_ra_1 + 32 ' в массиве ОЗУ экрана
Disp_ra_3 = Disp_ra_2 + 32 ' для каждого ряда матриц
Disp_sh_row = 8 ' счетчик строк в матрице
While Disp_sh_row > 0 ' Перебор строк
Spi_data(1) = Disp_sh_row ' Адрес регистра (1 - 8)
Disp_sh_col = 1 ' Счетчик матриц (1-4)
While Disp_sh_col < 5
Spi_data(2) = Disp_ram(disp_ra_1) ' Этот байт передается в ряд 1 матриц
Spi_data(3) = Disp_ram(disp_ra_2) ' Этот байт передается в ряд 2 матриц
Spi_data(4) = Disp_ram(disp_ra_3) ' Этот байт передается в ряд 3 матриц
Waitms 5
Gosub Disp_shift ' Передача по SPI сразу в 3 ряда
P_iload = 1 ' Для ПРОБЫ
Waitms 50
P_iload = 0
' Следущий байт в массиве
Incr Disp_ra_1
Incr Disp_ra_2
Incr Disp_ra_3
Incr Disp_sh_col ' Следущая матрица
Wend
P_iload = 1 ' Запись в MAX
Waitms 500
Waitms 500
Decr Disp_sh_row ' Следущая строка в матрице
Wend
Return
Я специально вставил вот этот кусок
Код: Выделить всё
P_iload = 1 ' Для ПРОБЫ
Waitms 50
P_iload = 0
чтоб можно было посмотреть как задвигаются данные. + задержки.
Допустим я хочу зажечь верхнюю строку матрицы 4 и 1 . Записываю в Disp_ram(4) = FF и Disp_ram(1) = FF
Запускаю программу. В регистры передается последовательность 01FF,0100,0100,01FF
Сначала зажигается верхняя строка первой матрицы, затем зажигается верхняя строка второй, а у первой гаснет. и т.д. до четвертой - светятся верхние строки матриц 1 и 4.
Всё правильно. (При записи следущей строки, содержимое предидущей испортится - всё правильно)
А вот если закоментировать строку "P_iload = 1 ' Для ПРОБЫ", как должно быть, то в четвертой матрице ничего не включится. Будет отображаться только информация для первой матрицы - та что последняя в пакете. То есть будет работать только 1 матрица в ряду.
Почему так ?
Одни хотели бы понимать то, во что верят, другие - поверить в то, что пнимают.
- max50
- Мучитель микросхем
- Сообщения: 497
- Зарегистрирован: Ср дек 10, 2008 21:24:28
- Откуда: Алтайский край, Барнаул
Re: BASCOM AVR в вопросах и ответах
SV12 писал(а):Прошу помощи.
Я сделал индикатор из светодиодных матриц 8х8 + max7219
Есть готовое решение.


Нужно региться.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Re: BASCOM AVR в вопросах и ответах
max50 писал(а):Есть готовое решение.
Если не ошибаюсь, у Вас там аппаратный SPI. Мне не подходит. У меня 3 линии данных при общих Clk и LOAD.
Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 4 , Noss = 0
В других примерах, Как я понял, Там задвигается информация не на всю цепочку матриц сразу, а только для одной, а в остальные пишется 0 в нулевые регистры.
Код: Выделить всё
'=========================
Sub Write_matrix_reg_data(byval Copy_matrix As Byte , Byval Copy_reg As Byte , Byval Copy_data As Byte)
'----------
Local Tmp_count_matrix As Byte
Local Tmp_ckip_max7219 As Byte
Tmp_ckip_max7219 = 0
'Даём понять чипам MAX7219_7221, что начинаем передавать данные
Load_max7219_7221 = 0
For Tmp_count_matrix = Const_amount_matrix To 1 Step -1
If Copy_matrix = Tmp_count_matrix Then
Write_data_max7219_7221 Copy_reg
Write_data_max7219_7221 Copy_data
Else
Write_data_max7219_7221 Tmp_ckip_max7219
Write_data_max7219_7221 Tmp_ckip_max7219
End If
Next Tmp_count_matrix
'Даём понять чипам MAX7219_7221, что закончили передавать данные, тем самым разрешая применить введённые данные
Load_max7219_7221 = 1
'----------
End Sub
'=========================
Т.е. допустим, я хочу передать информацию для первой строки всех 4 матриц нужно задвинуть не 4*2 байта = 8 байт, а 4*2 по 4 раза = 32 байта . Из них полезных только 8 байт.
Вопрос, можно ли задвинуть информацию сразу для всей строки всех 4 матриц - 4*2 байта ?
Я смотрел описания на рускоязычных сайтах.
?? писал(а): 24 - DOUT. Последовательный вывод данных. На этом выводе появляются принятые на входе DIN данные c задержкой в 16 с половиной тактов.
Вроде как можно. Но на практике не получается.
Завтра попробую подробнее спросить на указанном Вами ресурсе, раз там есть профильная тема .
Одни хотели бы понимать то, во что верят, другие - поверить в то, что пнимают.
Re: BASCOM AVR в вопросах и ответах
SV12 писал(а): Вроде как можно. Но на практике не получается.
Вопрос снят. Я нашел ошибку.
Одни хотели бы понимать то, во что верят, другие - поверить в то, что пнимают.
-
twinsen_kiev
- Родился
- Сообщения: 2
- Зарегистрирован: Вт авг 30, 2011 10:21:54
Re: BASCOM AVR в вопросах и ответах
Всем привет, подскажите, плиз,
Задача: поднимать флаг каждые, например 2 сек, 3 сек, 4 сек, 5 сек не используя таймер.
В распоряжении есть переменная, назовем ее А, которая каждую секунду инкриминируется от 0 до 59 и так по кругу – как секунды в часах.
В примитивном варианте это что-то типа:
If A=0 or A=3 or A=6 or A=9 or A=12 or A=15 и так далее Then
Что-то делаем полезное каждые 3 сек
End If
Но хотелось бы интервал сделать в виде переменной, чтобы можно было менять эту переменную с кнопок, а в таком виде это невозможно.
Никак не соображу, как сделать.
Задача: поднимать флаг каждые, например 2 сек, 3 сек, 4 сек, 5 сек не используя таймер.
В распоряжении есть переменная, назовем ее А, которая каждую секунду инкриминируется от 0 до 59 и так по кругу – как секунды в часах.
В примитивном варианте это что-то типа:
If A=0 or A=3 or A=6 or A=9 or A=12 or A=15 и так далее Then
Что-то делаем полезное каждые 3 сек
End If
Но хотелось бы интервал сделать в виде переменной, чтобы можно было менять эту переменную с кнопок, а в таком виде это невозможно.
Никак не соображу, как сделать.
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: BASCOM AVR в вопросах и ответах
В простейшем случае добавить переменную b, которая тоже будет инкрементироваться каждую секунду.
Код: Выделить всё
if b >= period then
b=0
some_action()
end if- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Ещё как вариант - анализировать остаток от деления.
-
twinsen_kiev
- Родился
- Сообщения: 2
- Зарегистрирован: Вт авг 30, 2011 10:21:54
Re: BASCOM AVR в вопросах и ответах
Испытал оба варианта.
Испытал метод деления по модулю, работает в моем случае.
для простоты взял деление на 2, типа:
B=секунда mod 2
в итоге имеем B = 1 через каждую секунду, удобно работать с такой переменной.
Испытал и путь с инкрементированием промежуточной переменной за счет длины главного цикла Do-Loop, он у меня очень длинный, если вся периферия подключена – занимает от 1 секунды и до 2 сек (32К кода). По другому не сумел. Тоже работает.
Больше понравилось работать с остатком от деления.
Спасибо форумчанам за подсказки.
Испытал метод деления по модулю, работает в моем случае.
для простоты взял деление на 2, типа:
B=секунда mod 2
в итоге имеем B = 1 через каждую секунду, удобно работать с такой переменной.
Испытал и путь с инкрементированием промежуточной переменной за счет длины главного цикла Do-Loop, он у меня очень длинный, если вся периферия подключена – занимает от 1 секунды и до 2 сек (32К кода). По другому не сумел. Тоже работает.
Больше понравилось работать с остатком от деления.
Спасибо форумчанам за подсказки.
Re: BASCOM AVR в вопросах и ответах
Попробуйте лучше B=секунда and 1twinsen_kiev писал(а):Испытал метод деления по модулю, работает в моем случае.
B=секунда mod 2
Результат тот же, а выполнятся будет гораздо быстрее и потребует меньше места на flash.
Re: BASCOM AVR в вопросах и ответах
Еще вариант B = секунда.0
Re: BASCOM AVR в вопросах и ответах
Добрый день, подскажите пожалуйста что делаю не правильно lcd 1602 в протеусе мерцает и можно это как то исправить в Bascom только начал работать просьба сильно не пинать.
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Cursor Off
Cls
Locate 2 , 8
Lcd " start "
Config Portd.0 = Output 'выход 1
Config Portd.1 = Output 'выход 2
Config Portd.2 = Output 'выход 3
Config Portd.3 = Output 'выход 4
Config Portd.4 = Output 'выход 5
Config Portd.6 = Output
Config Portb.0 = Output
Portd = 0
Portb.0 = 0
Config Pind.5 = Input ' кнопка пуск
Config Pind.7 = Input ' кнопка стоп
Config Pinb.1 = Input
Set Pind.5
Set Pind.7
Dim Temp As Single
Dim Effect As Byte
Const W = 10
Temp = 0
Do
If Temp = 10000 Then Effect = 2
If Pind.5 = 0 Then Effect = 1
If Pind.7 = 0 Then Effect = 2
If Pinb.1 = 0 Then Effect = 3
If Effect = 1 Then
Portb.0 = 0
Portd.6 = 1
Cls
Locate 2 , 4
Lcd " trenirovka "
Portd.0 = 1
Waitms W
Portd.1 = 1
Waitms W
Portd.2 = 1
Waitms W
Portd.3 = 1
Waitms W
Portd.4 = 1
Waitms W
Portd.0 = 0
Waitms W
Portd.1 = 0
Waitms W
Portd.2 = 0
Waitms W
Portd.3 = 0
Waitms W
Portd.4 = 0
Waitms W
Temp = Temp + 1
End If
If Effect = 2 Then
Cls
Locate 2 , 4
Lcd " end "
Portd = 0
Portb.0 = 1
Temp = 0
End If
If Effect = 3 Then
Portd = 0
Portb.0 = 0
Temp = 0
Portd.6 = 0
End If
Loop
End
Спойлер
$regfile = "m8def.dat"$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Cursor Off
Cls
Locate 2 , 8
Lcd " start "
Config Portd.0 = Output 'выход 1
Config Portd.1 = Output 'выход 2
Config Portd.2 = Output 'выход 3
Config Portd.3 = Output 'выход 4
Config Portd.4 = Output 'выход 5
Config Portd.6 = Output
Config Portb.0 = Output
Portd = 0
Portb.0 = 0
Config Pind.5 = Input ' кнопка пуск
Config Pind.7 = Input ' кнопка стоп
Config Pinb.1 = Input
Set Pind.5
Set Pind.7
Dim Temp As Single
Dim Effect As Byte
Const W = 10
Temp = 0
Do
If Temp = 10000 Then Effect = 2
If Pind.5 = 0 Then Effect = 1
If Pind.7 = 0 Then Effect = 2
If Pinb.1 = 0 Then Effect = 3
If Effect = 1 Then
Portb.0 = 0
Portd.6 = 1
Cls
Locate 2 , 4
Lcd " trenirovka "
Portd.0 = 1
Waitms W
Portd.1 = 1
Waitms W
Portd.2 = 1
Waitms W
Portd.3 = 1
Waitms W
Portd.4 = 1
Waitms W
Portd.0 = 0
Waitms W
Portd.1 = 0
Waitms W
Portd.2 = 0
Waitms W
Portd.3 = 0
Waitms W
Portd.4 = 0
Waitms W
Temp = Temp + 1
End If
If Effect = 2 Then
Cls
Locate 2 , 4
Lcd " end "
Portd = 0
Portb.0 = 1
Temp = 0
End If
If Effect = 3 Then
Portd = 0
Portb.0 = 0
Temp = 0
Portd.6 = 0
End If
Loop
End
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Здравствуйте.
Вы каждый раз полностью очищаете дисплей. Вместо этого затирайте предыдущее сообщение новым. Если оно короче, то используйте пробелы.
Вы каждый раз полностью очищаете дисплей. Вместо этого затирайте предыдущее сообщение новым. Если оно короче, то используйте пробелы.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
edm2007 спасибо всё заработало как надо
Re: BASCOM AVR в вопросах и ответах
Мрр коты
Благодаря этому сайту и данной ветке форума, я открыл для себя мир МК и стал создавать простые вещи.
Напридумал я себе замутить американский дхо-габарит-поворотник с использованием 2-контактной лампы 21Вт (!)без переделки патрона.
И тут столкнулся с маленькой проблемой.
Скажите, Барсик с двумя Eram работает?
Описание (для тиньки13):
Если до подачи питания нажать и удерживать кнопку, произойдет смена режима по входу (+) на PINB.1, светодиод мигнет 1раз и настройка режима сохранится.
Т.е., если выбран режим-1 и подали (+)плюсик на PINB.1 - ШИМ 100%, если выбран режим-2 и подали (+)плюсик, то ШИМ 0%. В обоих случаях, - нет плюсика на PINB.1? - тогда светим с установленной яркостью.
Я использую 2 типа Eram: одну для настройки яркости, вторую - для смены режима работы.
Настройка ШИМ сохраняется, а вот смена режима нет. Хотя переключается и работает правильно.
Уже который день пишу/переписываю код, ни в какую не получается
Подскажите, что не так.
Буду признателен за помощь
Благодаря этому сайту и данной ветке форума, я открыл для себя мир МК и стал создавать простые вещи.
Напридумал я себе замутить американский дхо-габарит-поворотник с использованием 2-контактной лампы 21Вт (!)без переделки патрона.
И тут столкнулся с маленькой проблемой.
Скажите, Барсик с двумя Eram работает?
Описание (для тиньки13):
- 1) ШИМ на PINB.0
2) LED на PINB.3
3) кнопка настройки яркости и режима работы с замыканием на массу PINB.2
4) вход (+) плюс на порту PINB.1
Если до подачи питания нажать и удерживать кнопку, произойдет смена режима по входу (+) на PINB.1, светодиод мигнет 1раз и настройка режима сохранится.
Т.е., если выбран режим-1 и подали (+)плюсик на PINB.1 - ШИМ 100%, если выбран режим-2 и подали (+)плюсик, то ШИМ 0%. В обоих случаях, - нет плюсика на PINB.1? - тогда светим с установленной яркостью.
Я использую 2 типа Eram: одну для настройки яркости, вторую - для смены режима работы.
Настройка ШИМ сохраняется, а вот смена режима нет. Хотя переключается и работает правильно.
Уже который день пишу/переписываю код, ни в какую не получается
Подскажите, что не так. Буду признателен за помощь
Код: Выделить всё
'----------
' (c) April 27, 2017 KOTик
' АМЕРИКАНСКИЙ СТИЛЬ ДХО(ГАБАРИТ) - ПОВОРОТНИКИ
' Частота ШИМ = (частота кварца/предделитель) / (размер счетного регистра *2)
' (4800000/256) / (256*2) = 36 Гц
' (9600000/256) / (256*2) = 73 Гц
' (4800000/64) / (256*2) = 146 Гц
' (9600000/64) / (256*2) = 293 Гц
'----------
$regfile = "attiny13.dat" 'specify the used micro
$crystal = 9600000 'used crystal frequency
$hwstack = 32 'default use 32 for the hardware stack
$swstack = 8 'default use 8 for the SW stack
$framesize = 16 'default use 40 for the frame space
Config Debounce = 100 'время задержки в мс
'================ О Б Ъ Я В Л Е Н И Е П Е Р Е М Е Н Н Ы Х ===
Dim V As Eram Byte 'Переменная, записанная в EEPROM
Dim Click As Byte 'Переменная нажатий
Dim Store As Byte 'Переменная для уровня ШИМ
Dim Button As Bit
Button = 1
Dim Count As Byte 'счетчик кол-ва нажатий
Dim S As Eram Byte 'Переменная, записанная в EEPROM
Dim Mmode As Byte 'Переменная установки режима работы, привязанная к переменной S Eram
'== Н А С Т Р О Й К А П О Р Т О В =======
Config Portb.0 = Output 'PWM OUT
Config Portb.3 = Output 'STATUS LED
Config Pinb.1 = Input 'TURN
Config Pinb.2 = Input 'ADJUST BUTTON
'Pinb.1 = 1
'Pinb = &B00000110 'Подтягивающие резисторы PINB.1 and PINB.4
Turn Alias Pinb.1 'Обзываем TURN для PINB.1
Btn Alias Pinb.2 'Обзываем SETUP для PINB.2
Led Alias Portb.3 'Обзываем SETUP для PINB.3
'===== Н А С Т Р О Й К А Ш И М ==========
Config Timer0 = Pwm , Prescale = 256 , Compare A Pwm = Clear Up
Start Timer0
'/// ---> НАСТРОЙКА РЕЖИМА РАБОТЫ
'До подачи питания нажимаем кнопку и держим до тех пор,
'Значение Mmode не изменится
'LED мигнет 1раз сигнализируя о том, что настройка сохранилась
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
Else 'в противном случае
If Btn = 1 Then 'если кнопку не нажимали
Waitms 500
Mmode = S 'считываем раннее записанное значение Mmode (режима)
End If 'конец условия
Wait 3
End If 'конец условия
End If 'конец условия
'=============== ПРОГРАММА =================
Main:
Do
'/// ---> ДРЕБЕЗГ ВХОДОВ
Debounce Turn , 1 , Drl_off , Sub 'Если поворотник включен (пульсирующий сигнал)
Debounce Turn , 0 , Drl_on , Sub 'Если поворотник выключен
'/// ---> УСТАНОВКА УРОВНЯ ШИМ
If Click >= 4 Then Click = 1 'Если нажали кнопку 4ый раз, тогда сбрасываем на минимум
If Click = 1 Then Pwm0a = 40 'pwm = 15%
If Click = 2 Then Pwm0a = 77 'pwm = 30%
If Click = 3 Then Pwm0a = 115 'pwm = 45%
If Button = 1 Then
If Btn = 0 Then
Button = 0
Store = Click + 1 'Увеличиваем яркость на 1 шаг
Waitms 50
V = Store 'Записываем значение ШИМ в V Eram
End If 'конец условия
End If 'конец условия
If Btn = 1 Then Button = 1
Loop
'================= О Б Р А Б О Т Ч И К П Р Е Р Ы В А Н И Й ==
'/// ---> ВЫКЛЮЧАЕМ ДХО
Drl_off: 'метка
If Mmode = 1 And Turn = 1 Then 'Если выбран Режим=1 и включен поворотник, тогда
Pwm0a = 255 'Включаем ШИМ на полную яркость
Else 'В противном случае, Режим=0 + включен поворотник, тогда
Pwm0a = 0 'Выключаем ШИМ вовсе
End If 'конец условия
Bitwait Turn , Reset 'ждем когда поворотник перестанет мигать
Return 'выходим
'/// ---> ВКЛЮЧАЕМ ДХО
Drl_on: 'метка
Pwm0a = Click
Click = Store
Store = V 'Считываем яркость из ЕЕПРОМ
Return 'выходим
'----------
'обрабатываем мигание поворотника
'Turn: 'метка
While Turn = 1 'до тех пор пока поворотник включен (мигает)
Incr Count 'увеличиваем счетчик задержки на выключение
Waitms 50 'задержка
If Count => 20 Then 'если поворотник выключен 100 мсек.
Gosub Drl_on 'переход к метке
Bitwait Turn , Reset 'ждем когда он выключится
Gosub Drl_off 'переход к метке
Goto Ext 'переход к метке
End If 'конец условия
Wend
'если мигание поворотника было менее секунды
Count = 0 'сбрасываем Count
Ext:
Return 'выходим
'----------
End 'end program
Re: BASCOM AVR в вопросах и ответах
У тиньки13 64 байта ERAM памяти.Это не 64 типа памяти, а 64 байта. В программе использовано всего 2. Причем в первом байте яркость меняется, а вот комбинацией кнопок изменить значение второго байта у меня не получилось. Это можно смотреть в отладке протеуса. Запускается эмуляция, ставится на паузу и из главного меню вызывается debug->AVR->EPROM Memory. Появляется окошко с содержимом памяти. Так что в отладке пошагово пройтись и посмотреть почему не доходит до команды запись в память.
Re: BASCOM AVR в вопросах и ответах
[uquote="vem566",url="/forum/viewtopic.php?p=3095690#p3095690"]Запускается эмуляция, ставится на паузу и из главного меню вызывается debug->AVR->EPROM Memory. Появляется окошко с содержимом памяти. Так что в отладке пошагово пройтись и посмотреть почему не доходит до команды запись в память.[/uquote]

Посмотрел, но это мне ничего не дало.
Извините, может туплю, но что мне с этим делать?
Код сохранения аналогичен тому же, что и в настойке яркости.
Посмотрел, но это мне ничего не дало.
Извините, может туплю, но что мне с этим делать?
Код сохранения аналогичен тому же, что и в настойке яркости.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Поставьте на схему кнопку с фиксацией, которая будет имитировать зажатую клавишу при включении. Теперь при включении в EEPROM меняется режим?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
[uquote="edm2007",url="/forum/viewtopic.php?p=3095765#p3095765"]Поставьте на схему кнопку с фиксацией, которая будет имитировать зажатую клавишу при включении. Теперь при включении в EEPROM меняется режим?[/uquote]
Приветствую, учитель
Это кнопка как бы с фиксацией.
Чтобы с имитировать нажатие до подачи питания, я останавливаю симуляцию, зажимаю кнопку и затем запускаю симуляцию. Отпускаю кнопку уже во время симуляции.
Состояние еепром не меняется, а вот переменная MMODE в окне AVR Variable - U2 меняется.
Приветствую, учитель
Это кнопка как бы с фиксацией.
Чтобы с имитировать нажатие до подачи питания, я останавливаю симуляцию, зажимаю кнопку и затем запускаю симуляцию. Отпускаю кнопку уже во время симуляции.
Состояние еепром не меняется, а вот переменная MMODE в окне AVR Variable - U2 меняется.