Технический форум по робототехнике.
space » 02 июл 2009, 21:07
Собсна ошибка в строчке:
- Код: Выделить всё • Развернуть
Compare0a = 555 : Compare0b = 555
А здесь проблем нет:
- Код: Выделить всё • Развернуть
Compare1a = 555 : Compare1b = 555
Подскажите как написать так чтобы таймер0 работал также как таймер1. Прога под 4 ик-бампера как бы, если конечно получится настроить тамер0. Если нет тогда под 2
, а мне минимум их 3 надо
- Код: Выделить всё • Развернуть
'************************
$regfile = "attiny2313.dat" 'используем ATtiny2313
$crystal = 16000000 'частота кварцевого резонатора 16mHz
'************************
'*******************************************
'Генерация частоты 36kHz
'Настраиваем Timer0 и Timer1
Config Timer0 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle , Compare B = Toggle
Config Timer1 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle , Compare B = Toggle
'*******************************************
'*******************************************
'Расчитываем Compare
'тактовая частота (kHz) / частота TSOPa (kHz) / 2 = Compare
Compare0a = 555 : Compare0b = 555
Compare1a = 555 : Compare1b = 555
'*******************************************
'**********************
'Настраиваем порты
'выход сигнала (на плате ик -бампера вывод обозначен In):
Config Pind.5 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.4 = Output
'**********************
'*******************************************
'Для считывания состояния TSOPa (на плате ик-бампера вывод обозначен Out):
Config Pind.4 = Output : помеха_п Alias Pind.4
Config Pind.6 = Output : помеха_л Alias Pind.6
Config Pinb.0 = Output : помеха_зп Alias Pinb.0
Config Pinb.1 = Output : помеха_зл Alias Pinb.1
'*******************************************
'*******************************************
'Выходной сигнал на основной мк:
Config Pind.0 = Output : Sig0 Alias Pind.0
Config Pind.1 = Output : Sig1 Alias Pind.1
Config Pind.2 = Output : Sig2 Alias Pind.2
Config Pind.3 = Output : Sig3 Alias Pind.3
'*******************************************
'***************************
'Запускаем таймер0 и таймер1
Start Timer0
Start Timer1
'***************************
'*******************************************
'Начало цикла основной программы
Do
If помеха_п = 0 Then : Sig0 = 0 : Else : Sig0 = 1 : End If
If помеха_л = 0 Then : Sig1 = 0 : Else : Sig1 = 1 : End If
If помеха_зп = 0 Then : Sig2 = 0 : Else : Sig2 = 1 : End If
If помеха_зл = 0 Then : Sig3 = 0 : Else : Sig3 = 1 : End If
Loop
End
'*******************************************
MiBBiM » 02 июл 2009, 21:16
он ж восьмибитный всегда был. максимальное значение - 255.
как задержку подобрать - смотри в сторону прескалера
Добавлено спустя 5 минут 41 секунду:сори, у него вообще нет регистра переполнения, только старт и стоп (см. справку)
Добавлено спустя 1 минуту 38 секунд:ну, или только в баскоме нет
space » 02 июл 2009, 21:21
максимальное значение не причем. второй таймер работает отлично. ик-датчик препятствие аж на 50см обнаружить может. чёрного цвета гдет 45см
что это прескалера
Добавлено спустя 35 секунд:MiBBiM писал(а):сори, у него вообще нет регистра переполнения, только старт и стоп (см. справку)
ок. ещё покапаюсь
MiBBiM » 02 июл 2009, 21:27
space писал(а):максимальное значение не причем
со вторым чистое везение (мб засветка от первого), если компилятор не вывел ошибку, то скорее всего сдвинул биты; нельзя поместить в 8битовую переменную значение 10битовой (минимальное число бит, чтобы закодировать числа множества 0..555).
а зачем вообще таймеров много? повесь все светики на один шим хардварно, да разнеси по сторонам
space » 02 июл 2009, 21:38
ну смотри надо мне 4 бампера. 2 спереди и 2 сзади. надо соответственно определять где препятствие справа или слева чтоб повернуть куда надо. А поставить один ик и вокруг него ик-диоды не получится. Точней можно но без определения или я чего то не знаю
Добавлено спустя 3 минуты 50 секунд:MiBBiM писал(а):со вторым чистое везение (мб засветка от первого)
ды нет. первый раз я на меге делал 16. и прога была другой:
- Код: Выделить всё • Развернуть
$regfile = "m16def.dat" 'используем Mega16
$crystal = 16000000 'частота кварцевого резонатора 16mHz
'Генерация частоты 36kHz
'Настраиваем Timer1
Config Timer1 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle
' Расчитываем Compare1a
' тактовая частота (kHz) / частота TSOPa (kHz) / 2 = Compare
Compare1a = 555
'PortB.1 - выход сигнала
'PinC.0 - считываем состояние TSOPa
'Portd.0 - сигнальный светодиод
Config Pinb.1 = Output
Config Portd.0 = Output
Config Pinc.0 = Input
Start Timer1
Do
If Pinc.0 = 0 Then
Portd.0 = 1
Else
Portd.0 = 0
End If
Loop
End
могу показать на видео как работает, если надо
MiBBiM » 02 июл 2009, 21:44
одна ножка выходная, потом транзистор и дальше параллельно светики. смотри вот в схеме минибота:
- 12321.GIF (3.92 КиБ) Просмотров: 4983
но если аппаратная часть готова, то можно в прерывании от любого из таймеров дрыгать ножками всех диодов, позже код скину
Добавлено спустя 2 минуты 29 секунд:space писал(а):ды нет. первый раз я на меге делал 16. и прога была другой
да в этом исходнике второй таймер работает на полную катушку
space » 02 июл 2009, 22:06
так спасибо. теперь еще переварить эт надо
Добавлено спустя 19 минут 28 секунд:мне на схеме заменить просто BS170 на BC817
этойВыходная ножка PWM на таймер иль отдельно на другую ножку мк?
MiBBiM » 02 июл 2009, 22:26
ножку PWM на таймер, все верно.
насчет транзюка: за что купил, за то и продаю; у EdGull'a BC817 вытягивает 5 диодов стабильно, в модуле по ссылке только два и не факт, что сможет больше
avr123.nm.ru » 02 июл 2009, 23:01
bc817 и bc337 прекрасны, но есть еще и irlml2803
ИМХО - ОЧЕВИДНО что каждому светодиоду свой резистор лучше поставить.
space » 02 июл 2009, 23:36
В принципе был еще вариант. Это сделать всё на тиньке15. Там как раз один таймер есть(OC1A). его будет достаточно. Добавлю мк на ту схему и всё.
Тока я с такими ни когда не работал. Там нет ножек XTAL1 и XTAL2. Я так понимаю работает тока на внутреннем кварце. Как мне фьюзы выставить для 16мГц? Кто знает скажите
space » 03 июл 2009, 09:59
неужели ни кто не знает как их поставить?
avr123.nm.ru » 03 июл 2009, 10:01
space писал(а):на тиньке15. Как мне фьюзы выставить для 16мГц?
ХОТЯБЫ !!! обложку даташита позырить.
Последний раз редактировалось
avr123.nm.ru 03 июл 2009, 10:10, всего редактировалось 1 раз.
SERGEY_M » 03 июл 2009, 10:08
вот до чего народ ленивый
space » 03 июл 2009, 11:10
упс. забыл про
даташит Внутренний у него Internal 1.6 MHz System Clock
А про фьюзы не понятно толком. Всё что было при них:
- Код: Выделить всё • Развернуть
Fuse Bits The ATtiny15L has six Fuse bits (BODLEVEL, BODEN, SPIEN, RSTDSBL, and
CKSEL1..0). All the Fuse bits are programmable in both High-voltage and Low-voltage
Serial Programming modes. Changing the Fuses does not have effect while in programming
mode.
• The BODLEVEL Fuse selects the Brown-out Detection level and changes the startup
times. See “Brown-out Detection” on page 17. See Table 5 on page 15. Default
value is programmed “0”.
• When the BODEN Fuse is programed “0”, the Brown-out Detector is enabled. See
“Brown-out Detection” on page 17. Default value is unprogrammed “1”.
• When the SPIEN Fuse bit is programmed “0”, Low-voltage Serial Program and Data
Downloading is enabled. Default value is programmed “0”. Unprogramming this fuse
while in the Low-voltage Serial Programming mode will disable future In-System
downloading attempts.
• When the RSTDISBL Fuse is programmed “0”, the External Reset function of pin
PB5 is disabled(1). Default value is unprogrammed “1”. Programming this fuse while
in the Low-voltage Serial Programming mode will disable future In-System
downloading attempts.
• CKSEL1..0 Fuses: See Table 5 on page 15 for which combination of CKSEL1..0 to
use. Default value is “00”, 64 ms + 18 CK.
The status of the Fuse bits is not affected by Chip Erase.
Note: 1. If the RSTDISBL Fuse is programmed, then the programming hardware should apply
+12V to PB5 while the ATtiny15L is in Power-on Reset. If not, the part can fail to enter
Programming mode caused by drive contention on PB0 and/or PB5.
Похода заводские оставить надо для работы с внутреннем кварцем и все. Поправьте, если не прав
SERGEY_M » 03 июл 2009, 13:01
для начала фузы в тиньке ваще не трогай