Да, видимо так. И, похоже, с timer0 та же ситуация. Остается вопрос с частотой.amv2000 писал(а):Здесь очевидно прерывание занимается тем, чем и должно. В частности устанавливает флаг Z_cross_f (это же кусок из программы вероятно далее, где то используется)Gordon Shumway писал(а):Для чего введена переменная "Z_cross_f" ?
3. Для чего сконфигурирован timer0 ? Не нашел, где он используется...
BASCOM AVR в вопросах и ответах
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
С уважением,
Алексей.
Алексей.
- Реклама
- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: BASCOM AVR в вопросах и ответах
Частота МК должна быть 8Мгц при таких параметрах таймера 1
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Да, спасибо, так заработало.zero648 писал(а):Частота МК должна быть 8Мгц при таких параметрах таймера 1
Подскажите, плз, как правильно сделать защиту от дребезга кнопки ? Раньше вставлял waitms 250 - работало, но здесь почему-то при вставке waitms 250 лампа вообще перестает гореть. Вроде-ж waitms не отменяет работу прерываний ?
Код: Выделить всё
$regfile = "attiny2313.dat"
$crystal = 8000000
Config Portb.1 = Output
Config Pinb.0 = Input
Dim Level_dimmer As Byte
Dim Dimmer_on As Bit
Dim Dimmer_delay_w As Word
Dimmer_out Alias Portb.1 ' нога - выход, к оптосимистору на симистор
Key Alias Pinb.0
Config Int0 = Change ' Установка прерывания INT0 на изменение сигнала
On Int0 Z_cross_int
' Прерывание на вход датчика перехода синусоиды через ноль
Config Timer1 = Timer , Prescale = 8 ' конфигурируем таймер 1
On Ovf1 Ovf1_my Nosave : Enable Ovf1
Enable Interrupts
Enable Int0
Enable Timer1
Start Timer1
Do
While Key = 1
Wend
'WAITMS 250 <----тут пробовал
Incr Level_dimmer
If Level_dimmer = 0 Then Level_dimmer = 1
If Level_dimmer = 8 Then Level_dimmer = 1
'---------------------------------------------------------------------------------------------
Dimmer_modul: ' -------------- УПРАВЛЕНИЕ ДИММЕРОМ --------------------------
If Level_dimmer = 0 Then
Dimmer_on = 0
Disable Ovf1
Else
Dimmer_on = 1
If Level_dimmer < 8 Then Enable Ovf1
End If
If Level_dimmer > 7 Then
' Dimmer_delay_w = &HFFFC ' Ярко горит - 230v
Disable Ovf1
Dimmer_out = 1
Level_dimmer = 8 ' <<<<<<<<<<<<<<<<<<<<<<<< ограничитель
End If
If Level_dimmer = 1 Then Dimmer_delay_w = 57900 ' Тускло горит - 25v
If Level_dimmer = 2 Then Dimmer_delay_w = 58300 ' 51v
If Level_dimmer = 3 Then Dimmer_delay_w = 58700 ' 78v
If Level_dimmer = 4 Then Dimmer_delay_w = 59000 ' 85v
If Level_dimmer = 5 Then Dimmer_delay_w = 59400 ' 149v
If Level_dimmer = 6 Then Dimmer_delay_w = 59900 ' 175v
If Level_dimmer = 7 Then Dimmer_delay_w = 61100 ' 189v
Waitus 950
'WAITMS 250 <---- и тут пробовал
Loop
''===============
Ovf1_my:
If Dimmer_on = 1 Then
Dimmer_out = 1
Waitus 90
Dimmer_out = 0
Else
Dimmer_out = 0
End If
Return
' =============== Обработка прерывания по изменению на INT 0 ==================
Z_cross_int:
Timer1 = Dimmer_delay_w
Return С уважением,
Алексей.
Алексей.
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
А что делает этот цикл?
Код: Выделить всё
While Key = 1
Wend- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: BASCOM AVR в вопросах и ответах
По-моему где-то в этом месте косяк:
PINB.0 куда подтянут к плюсу или минусу? Может надо проверять на ноль когда кнопка нажата? Может в этом месте прога и зацикливается, считая не нажатую кнопку нажатой.
Да и Level_dimmer вроде как постоянно циклично инкременируется?
Код: Выделить всё
Do
While Key = 1
Wend
'WAITMS 250 <----тут пробовал
Incr Level_dimmer
If Level_dimmer = 0 Then Level_dimmer = 1
If Level_dimmer = 8 Then Level_dimmer = 1Да и Level_dimmer вроде как постоянно циклично инкременируется?
- Реклама
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Pinb.0 подтянут к плюсу, кнопка на минус. Пока pinb.0 =1, крутимся в while-wend.zero648 писал(а):По-моему где-то в этом месте косяк:
PINB.0 куда подтянут к плюсу или минусу? Может надо проверять на ноль когда кнопка нажата? Может в этом месте прога и зацикливается, считая не нажатую кнопку нажатой.Код: Выделить всё
Do While Key = 1 Wend 'WAITMS 250 <----тут пробовал Incr Level_dimmer If Level_dimmer = 0 Then Level_dimmer = 1 If Level_dimmer = 8 Then Level_dimmer = 1
Да и Level_dimmer вроде как постоянно циклично инкременируется?
Иначе - инкремируем level_dimmer и обрабатываем получившееся.
С уважением,
Алексей.
Алексей.
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
А не лучше вместо цикла использовать If, циклы отнимают больше драгоценной памяти...
Код: Выделить всё
Do
Nachalo:
If Key = 1
Incr Level_dimmer
If Level_dimmer = 0 Then Level_dimmer = 1
If Level_dimmer = 8 Then Level_dimmer = 1
Else
If Key = 0 Then Nachalo- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Мне кажется, что еще более запутаннее получается. А места в тиньке2313 еще 69 процентов свободно.amv2000 писал(а):А не лучше вместо цикла использовать If, циклы отнимают больше драгоценной памяти...Код: Выделить всё
Do Nachalo: If Key = 1 Incr Level_dimmer If Level_dimmer = 0 Then Level_dimmer = 1 If Level_dimmer = 8 Then Level_dimmer = 1 Else If Key = 0 Then Nachalo
Я про антидребезг спрашивал...
С уважением,
Алексей.
Алексей.
Re: BASCOM AVR в вопросах и ответах
Привет всем!)
А кто-нибудь работал с дисплеем Nokia 3310 в Баскоме?
А кто-нибудь работал с дисплеем Nokia 3310 в Баскоме?
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
Ага.SAU писал(а):А кто-нибудь работал с дисплеем Nokia 3310 в Баскоме?
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Мой проект "Мегатермо", работа с дисплеем nokia3310, кириллица для дисплея nokia3310, продолжение.SAU писал(а):Привет всем!)
А кто-нибудь работал с дисплеем Nokia 3310 в Баскоме?
С уважением,
Алексей.
Алексей.
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
Попробуйте сначала подтяните вход:Gordon Shumway писал(а):Я про антидребезг спрашивал...
Код: Выделить всё
Config Pinb.0 = Input
Set Portb.0- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Так у меня ж сопртивление на плюс стоит.amv2000 писал(а):Попробуйте сначала подтяните вход:Gordon Shumway писал(а):Я про антидребезг спрашивал...Код: Выделить всё
Config Pinb.0 = Input Set Portb.0
С уважением,
Алексей.
Алексей.
- amv2000
- Опытный кот
- Сообщения: 717
- Зарегистрирован: Вт апр 26, 2011 13:58:36
- Откуда: Ростовская область
Re: BASCOM AVR в вопросах и ответах
Ясно, а в каком месте у Вас кнопка обрабатывается?Gordon Shumway писал(а):Так у меня ж сопртивление на плюс стоит.
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
В цикле DO. Key - это кнопка. Пока на ней 1 - крутимся в while-wend. Иначе - инкремент и обработка...amv2000 писал(а):Ясно, а в каком месте у Вас кнопка обрабатывается?Gordon Shumway писал(а):Так у меня ж сопртивление на плюс стоит.
Код: Выделить всё
Config Pinb.0 = Input
key alias pinb.0
Do
While Key = 1
Wend
'WAITMS 250 <----тут пробовал
Incr Level_dimmer
If Level_dimmer = 0 Then Level_dimmer = 1
If Level_dimmer = 8 Then Level_dimmer = 1
'---------------------------------------------------------------------------------------------
Dimmer_modul: ' -------------- УПРАВЛЕНИЕ ДИММЕРОМ --------------------------
If Level_dimmer = 0 Then
Dimmer_on = 0
Disable Ovf1
Else
Dimmer_on = 1
If Level_dimmer < 8 Then Enable Ovf1
End If
If Level_dimmer > 7 Then
' Dimmer_delay_w = &HFFFC ' Ярко горит - 230v
Disable Ovf1
Dimmer_out = 1
Level_dimmer = 8 ' <<<<<<<<<<<<<<<<<<<<<<<< ограничитель
End If
If Level_dimmer = 1 Then Dimmer_delay_w = 57900 ' Тускло горит - 25v
If Level_dimmer = 2 Then Dimmer_delay_w = 58300 ' 51v
If Level_dimmer = 3 Then Dimmer_delay_w = 58700 ' 78v
If Level_dimmer = 4 Then Dimmer_delay_w = 59000 ' 85v
If Level_dimmer = 5 Then Dimmer_delay_w = 59400 ' 149v
If Level_dimmer = 6 Then Dimmer_delay_w = 59900 ' 175v
If Level_dimmer = 7 Then Dimmer_delay_w = 61100 ' 189v
Waitus 950
'WAITMS 250 <---- и тут пробовал
LoopС уважением,
Алексей.
Алексей.
- Секретный кот
- Поставщик валерьянки для Кота
- Сообщения: 2106
- Зарегистрирован: Ср сен 17, 2008 14:32:15
- Откуда: Старые Васюки
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Действительно, константа. Хотя компилятор и не ругается на код видаGordon Shumway писал(а):А как в Баскоме можно менять задержку в waitus ? В хелпе написано, что это константа...
Код: Выделить всё
x=100
waitus xКод: Выделить всё
x=100
for i=1 to x
waitus 1
next iДаже остановленные часы два раза в сутки показывают правильное время.
- Gordon Shumway
- Мучитель микросхем
- Сообщения: 485
- Зарегистрирован: Пн авг 20, 2007 21:35:45
- Откуда: Мытищи, Московская область
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Да, не ругался, просто неправильно работал.Секретный кот писал(а):Действительно, константа. Хотя компилятор и не ругается на код видаGordon Shumway писал(а):А как в Баскоме можно менять задержку в waitus ? В хелпе написано, что это константа...на практике оно не работает! Нужно делать например так:Код: Выделить всё
x=100 waitus xКод: Выделить всё
x=100 for i=1 to x waitus 1 next i
Спасибо, на будущее запомню.
С уважением,
Алексей.
Алексей.
Re: BASCOM AVR в вопросах и ответах
Ну вот, неправда Ваша! Вот неправда! Как-то очень давно писал прогу для бегущих огней. Так там для автоматического изменения скорости бегущего огня, как раз и использовал переменную для Waitms. А для генератора - переменную для Waitus. И все работает по сей день. О как бывает!!! Кстати, вот выдержка из "Хэлпа":Секретный кот писал(а):Действительно, константа. Хотя компилятор и не ругается на код видаGordon Shumway писал(а):А как в Баскоме можно менять задержку в waitus ? В хелпе написано, что это константа...на практике оно не работает! Нужно делать например так:Код: Выделить всё
x=100 waitus xКод: Выделить всё
x=100 for i=1 to x waitus 1 next i
Да, она вроде бы и константа, но начиная с версии 1.12.х.х - можно и как переменную!Action
Suspends program execution for a given time in uS.
Syntax
WAITUS uS
Remarks
US
The number of microseconds to wait. (1-65535)
This must be a constant. Not a variable!
In version 1.12.x.x and higher you can use a variable as well.
Цапу крутить надо!!! Ку или не ку?
- Секретный кот
- Поставщик валерьянки для Кота
- Сообщения: 2106
- Зарегистрирован: Ср сен 17, 2008 14:32:15
- Откуда: Старые Васюки
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Поменьше эмоцийIgor_67 писал(а):Ну вот, неправда Ваша! Вот неправда! Как-то очень давно писал прогу для бегущих огней. Так там для автоматического изменения скорости бегущего огня, как раз и использовал переменную для Waitms. А для генератора - переменную для Waitus. И все работает по сей день.
А я пытался сделать генератор переменной частоты, и не работало ни хрена. Частота следования импульсов с паузой waitus t никак не хотела меняться. Причём я долго не мог найти причину, пока не догадался на пробу заменить переменную константой.
Вот именно! Чёрным по английскому, как говоритсяIgor_67 писал(а):Кстати, вот выдержка из "Хэлпа":
This must be a constant. Not a variable!
Я использую версию 1.11.9.8.Igor_67 писал(а):In version 1.12.x.x and higher you can use a variable as well.
Даже остановленные часы два раза в сутки показывают правильное время.
Re: BASCOM AVR в вопросах и ответах
Ну так и вот...
Я таки был прав, т.к я использую версию 2.0.7.1! 
Цапу крутить надо!!! Ку или не ку?


