Да да, я понял Пост свой поправлял, а Вы уже ответили
Плюсую...
Тут Вы используете прерывание, чтобы сменить оставшееся время задержки. Но ведь можно это делать и внутри цикла, не правда ли ?
Мозговая атака продолжается...
8 кнопок и 8 светиков. Для каждого из них делаем такую задержку, но независимо друг от друга. Т.е. пока один любой канал работает, другой любой может включаться/отключаться в любое время.
Config Porta = Input
Config Portd = Output
Dim D0 As Long
D0 = 0
Dim D1 As Long
D1 = 0
Dim D2 As Long
D2 = 0
Dim D3 As Long
D3 = 0
Dim D4 As Long
D4 = 0
Dim D5 As Long
D5 = 0
Dim D6 As Long
D6 = 0
Dim D7 As Long
D7 = 0
Dim A As Byte
Dim B As Long
Do
If D0 > 1 Then
D0 = D0 - 1
Else
Portd.0 = 0
End If
If D1 > 1 Then
D1 = D1 - 1
Else
Portd.1 = 0
End If
If D2 > 1 Then
D2 = D2 - 1
Else
Portd.2 = 0
End If
If D3 > 1 Then
D3 = D3 - 1
Else
Portd.3 = 0
End If
If D4 > 1 Then
D4 = D4 - 1
Else
Portd.4 = 0
End If
If D5 > 1 Then
D5 = D5 - 1
Else
Portd.5 = 0
End If
If D6 > 1 Then
D6 = D6 - 1
Else
Portd.6 = 0
End If
If D7 > 1 Then
D7 = D7 - 1
Else
Portd.7 = 0
End If
Waitms 1
If Pina.0 = 1 Then
A = 0
Gosub Trig
D0 = B
Waitms 200
End If
If Pina.1 = 1 Then
A = 1
Gosub Trig
D1 = B
Waitms 200
End If
If Pina.2 = 1 Then
A = 2
Gosub Trig
D2 = B
Waitms 200
End If
If Pina.3 = 1 Then
A = 3
Gosub Trig
D3 = B
Waitms 200
End If
If Pina.4 = 1 Then
A = 4
Gosub Trig
D4 = B
Waitms 200
End If
If Pina.5 = 1 Then
A = 5
Gosub Trig
D5 = B
Waitms 200
End If
If Pina.6 = 1 Then
A = 6
Gosub Trig
D6 = B
Waitms 200
End If
If Pina.7 = 1 Then
A = 7
Gosub Trig
D7 = B
Waitms 200
End If
Loop
Trig:
If Portd.a = 0 Then
Portd.a = 1
B = 5000
Else
B = 0
End If
BASCOM AVR 2.07.8 пришлось переустановить-глючить начал,теперь
1)закрываю программу,запускаю снова-приходиться по новой ставить русский интерфейс,настраивать тип программатора
2)каждый раз когда нажимаю равно (=) вылазит ошибка "There was an error during the execution of this program.
The application might become unstable and even useless.
It's recommended that you save your work and close this application.
Access violation at address 008D7965 in module 'bascavr.exe'. Read of address 00000000.",перевод гугл-Была ошибка во время выполнения этой программы.
Приложение могло бы стать нестабильным и даже бесполезным.
Рекомендуется, чтобы Вы сохранили свою работу и закрыли это приложение.
Нарушение прав доступа в адресе 008D7965 в модуле 'bascavr.exe'. Чтение адреса 00000000.
3)при компиляции все норм,при прошивке иногда сбои(хоть ардуино,хоть усбасп)-зависает программа,а потом баском авр автоматом закрывается и все по новой(пункт 1)
пробовал переустановить еще 2 раза-все то же
что может быть?
до этого пользовался ею же полгода гдето и никаких проблем не было
добавил позже-
видимо никто не сталкивался
откатился назад(восстановление системы),восстановилась прежняя версия баском(которой пользовался полгода),пусть тупит,но мороки нет
'* * * ПЕРЕМЕННЫЕ
Dim C As Byte
Dim Seco As Byte
Dim Mine As Byte
Dim Hour As Byte
Dim Day As Byte
Dim Dat As Byte
Dim Month As Byte
Dim Year As Byte
Dim S As String * 5 ' ?????????? ??? ?????? ? UART
Print " ds1307 clock"
' ПРЕДУСТАНОВКА
Seco = 5
Mine = 5
Hour = 10
Seco = Makebcd(seco)
Mine = Makebcd(mine)
Hour = Makebcd(hour)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte Seco
I2cwbyte Mine
I2cwbyte Hour
I2cstop
Print "Hello, world!"
плата arduino uno,там частота фиксирована 16 МГц,фузы правильные
попробую на другие порты перекинуть
это лишь небольшой кусок кода всей программы,именно он и выносит мозг,между тем SDA SCL работают корректно-на нем сидит тв тюнер и прекрасно работает(исходник выше-сильно укорочен,для лучшего понимания)
добавил-переключил так
Config Sda = Portb.4 '???????????? ?????? I2c
Config Scl = Portb.5
все прекрасно работает,а почему на Portc.4 и Portc.5 не работает???
точно счас голова лопнет
Novice user писал(а):плата arduino uno,там частота фиксирована 16 МГц,фузы правильные
попробую на другие порты перекинуть
это лишь небольшой кусок кода всей программы,именно он и выносит мозг,между тем SDA SCL работают корректно-на нем сидит тв тюнер и прекрасно работает(исходник выше-сильно укорочен,для лучшего понимания)
добавил-переключил так
Config Sda = Portb.4 '???????????? ?????? I2c
Config Scl = Portb.5
все прекрасно работает,а почему на Portc.4 и Portc.5 не работает???
точно счас голова лопнет
Я так делаю, всё работает (пример из проекта):
Config Sda = Portc.1
Config Scl = Portc.0
Config Twi = 400000
I2cinit
Waitms 5
так в том то и дело что если назначить другие порты то работает,а если именно Portc.4 и Portc.5 то не работает!!!придется переразать дорожки и назначать другие порты!Portc.4 и Portc.5 не для и2с(анекдот блин)
главное и пример часов из ардуино загружаю(там именно сда=.4 и сцл=с.5)-не работает!!!но должен!
пробовал моргать всем порт.с-прекрасно переключаются в ноль и 1
Sergik07-читайте выше-все подтянуто
перекинул PORTC.4 на PORTC.3,PORTC.5 так и остался на месте= Scl,все работает как надо
просто удивляет что PORTC.4=Sda не работает как надо-при обращении к тюнеру KSH148 все отлично,а вот DS1307 не работает
всем спасибо!
у меня нет такой библиотеки
Если пишите, что в протеусе всё работает, то осциллограф Вам в помощь.
А вообще заюзать отдельно только часы, больше ни чего.
Если у Вас ардуино, какую ножку перерезать?
У меня и на Меге 328, и на 48 и на 168 с библиотекой всё отлично работает, на тех же портах.
Все делают ошибки, только мудрецы - новые, а дураки - старые.
Radan писал(а):На этих пинах находится железный I2C.
Библиотека подключена?
$lib "i2c_twi.lbx" ' we do not use software emulated I2C but the TWI
У меня работало на этих портах без проблем и без указанной библиотеки
Спойлер'configure the scl and sda pins
Config I2cdelay = 5
Config Sda = Portc.4
Config Scl = Portc.5
Интересно глянуть что там за библиотека. А то я как-то без нее обходился
Хотя стараюсь все-же кидать периферию на предназначенные ей места. SDA, SCL для I2C, кнопки на внешние прерывания, даже если их не использую.
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Всем Здравствуйте!
За два месяца (нога в гипсе) прочитал всю тему с переходами по ссылкам, но вопросы остались. Хочу переделать управление объективом "микроскопа", сейчас ручное -на ШД и регулируемых стабилизаторах.
Block Lens (объектив) на борту имеет:
1 - ШД "Zoom" - проверил в Proteus, упр. энкодером, код не мой, я только сделал из шага полушаг и пару строк добавил чтоб не дергался при включении.
2 - ШД - "Shutter" - Вот вопрос первый, Ему надо на отк./закр. 120 шагов, и отработать всего два раза - держим 3-5 сек. кнопку (не энкодера, она занята входом и выбором в "MENU") проснулся МК, открыл затвор и дал питание на камеру, и обратно по выключению. Есть на затворе 2 концевика, но у меня не получилось и шаг сделать без энкодера. Как сделать?
3 - тоже ШД, но обмотки параллельно и умеют делать только один шаг на 90'(защелки) - это два фильтра "T*" и "Gr", тут вроде понятно, тем же энкодером перебираем 4 варианта 1,1+2,2,Off. осталось только прикрутить к меню.
4 - А теперь самое интересное и пожалуй ГЛАВНЫЙ ВОПРОС: Привод линзы "Focus". Дело в том, что это не мотор, это больше похоже на стрелочный мА, только без возвратной пружинки, т.е. где встал там и стоит или куда наклонишь туда и линза поехала, ему чтоб двигаться надо очень плавно от -1,50 до +1,50 вольт, понимаю, что тут поможет только DAC, что то типа TLC7528, но как реализовать, и чтоб МК после настройки через меню помнил держал позицию линзы, да и все настройки тоже?
Спасибо.
P.S. Из МК есть Atmega 103, 128. 8515. LCD - 16x1, 16x2 и целая гора всяких телефонных.
в програмировании делаю первые шаг. Покопался - не нашёл...элементарый вопрос : имеется переменная,двоично-десятичная.Как её послать в порт? Есть только 4 ноги одного порта.
я делал так(надо было для частотомера,чтоб при необходимости сегменты индикаторов можно было легко переназначать)
dim n as byte-переменная
config portb=otput-порт
n=5-тут понятно,5=(bin)00001001
portb.0=n.0 1
portb.1=n.1 0
portb.2=n.2 0
portb.3=n.3 1
Здравствуйте товарищи у меня есть пару вопросов по режиму энергосбережения Idle:
из периферии у меня включены только таймер и внешние прерывания, для наименьшего потребления мне необходимо перед уходом в idle отключить таймер и нужно-ли отключать остальные плюшки типа АЦП, компаратор и т.д.? контроллер мега8