roboforum.ru

Технический форум по робототехнике.

Как настроить таймер0 на ATtiny2313?

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Как настроить таймер0 на ATtiny2313?

Сообщение space » 02 июл 2009, 21:07

Собсна ошибка в строчке:
Код: Выделить всёРазвернуть
Compare0a = 555 : Compare0b = 555

А здесь проблем нет:
Код: Выделить всёРазвернуть
Compare1a = 555 : Compare1b = 555

Подскажите как написать так чтобы таймер0 работал также как таймер1. Прога под 4 ик-бампера как бы, если конечно получится настроить тамер0. Если нет тогда под 2 :cry: , а мне минимум их 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
'*******************************************
Аватара пользователя
space
 
Сообщения: 565
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Как настроить таймер0 на ATtiny2313?

Сообщение MiBBiM » 02 июл 2009, 21:16

он ж восьмибитный всегда был. максимальное значение - 255.
как задержку подобрать - смотри в сторону прескалера

Добавлено спустя 5 минут 41 секунду:
сори, у него вообще нет регистра переполнения, только старт и стоп (см. справку)

Добавлено спустя 1 минуту 38 секунд:
ну, или только в баскоме нет :D
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Как настроить таймер0 на ATtiny2313?

Сообщение space » 02 июл 2009, 21:21

максимальное значение не причем. второй таймер работает отлично. ик-датчик препятствие аж на 50см обнаружить может. чёрного цвета гдет 45см
что это прескалера

Добавлено спустя 35 секунд:
MiBBiM писал(а):сори, у него вообще нет регистра переполнения, только старт и стоп (см. справку)

ок. ещё покапаюсь
Аватара пользователя
space
 
Сообщения: 565
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Как настроить таймер0 на ATtiny2313?

Сообщение MiBBiM » 02 июл 2009, 21:27

space писал(а):максимальное значение не причем

со вторым чистое везение (мб засветка от первого), если компилятор не вывел ошибку, то скорее всего сдвинул биты; нельзя поместить в 8битовую переменную значение 10битовой (минимальное число бит, чтобы закодировать числа множества 0..555).
а зачем вообще таймеров много? повесь все светики на один шим хардварно, да разнеси по сторонам
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Как настроить таймер0 на ATtiny2313?

Сообщение space » 02 июл 2009, 21:38

ну смотри надо мне 4 бампера. 2 спереди и 2 сзади. надо соответственно определять где препятствие справа или слева чтоб повернуть куда надо. А поставить один ик и вокруг него ик-диоды не получится. Точней можно но без определения или я чего то не знаю :crazy:

Добавлено спустя 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

могу показать на видео как работает, если надо
Аватара пользователя
space
 
Сообщения: 565
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Как настроить таймер0 на ATtiny2313?

Сообщение MiBBiM » 02 июл 2009, 21:44

одна ножка выходная, потом транзистор и дальше параллельно светики. смотри вот в схеме минибота:
12321.GIF
12321.GIF (3.92 КиБ) Просмотров: 4992

но если аппаратная часть готова, то можно в прерывании от любого из таймеров дрыгать ножками всех диодов, позже код скину

Добавлено спустя 2 минуты 29 секунд:
space писал(а):ды нет. первый раз я на меге делал 16. и прога была другой

да в этом исходнике второй таймер работает на полную катушку :lol: :lol:
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Как настроить таймер0 на ATtiny2313?

Сообщение space » 02 июл 2009, 22:06

так спасибо. теперь еще переварить эт надо

Добавлено спустя 19 минут 28 секунд:
мне на схеме заменить просто BS170 на BC817 этой
Выходная ножка PWM на таймер иль отдельно на другую ножку мк?
Аватара пользователя
space
 
Сообщения: 565
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Как настроить таймер0 на ATtiny2313?

Сообщение MiBBiM » 02 июл 2009, 22:26

ножку PWM на таймер, все верно.
насчет транзюка: за что купил, за то и продаю; у EdGull'a BC817 вытягивает 5 диодов стабильно, в модуле по ссылке только два и не факт, что сможет больше :oops:
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Как настроить таймер0 на ATtiny2313?

Сообщение avr123.nm.ru » 02 июл 2009, 23:01

bc817 и bc337 прекрасны, но есть еще и irlml2803

ИМХО - ОЧЕВИДНО что каждому светодиоду свой резистор лучше поставить.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Как настроить таймер0 на ATtiny2313?

Сообщение space » 02 июл 2009, 23:36

В принципе был еще вариант. Это сделать всё на тиньке15. Там как раз один таймер есть(OC1A). его будет достаточно. Добавлю мк на ту схему и всё.
Тока я с такими ни когда не работал. Там нет ножек XTAL1 и XTAL2. Я так понимаю работает тока на внутреннем кварце. Как мне фьюзы выставить для 16мГц? Кто знает скажите
Аватара пользователя
space
 
Сообщения: 565
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Как настроить таймер0 на ATtiny2313?

Сообщение space » 03 июл 2009, 09:59

неужели ни кто не знает как их поставить? :(
Аватара пользователя
space
 
Сообщения: 565
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Как настроить таймер0 на ATtiny2313?

Сообщение avr123.nm.ru » 03 июл 2009, 10:01

space писал(а):на тиньке15. Как мне фьюзы выставить для 16мГц?


ХОТЯБЫ !!! обложку даташита позырить.
Последний раз редактировалось avr123.nm.ru 03 июл 2009, 10:10, всего редактировалось 1 раз.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: Как настроить таймер0 на ATtiny2313?

Сообщение SERGEY_M » 03 июл 2009, 10:08

вот до чего народ ленивый :o
Аватара пользователя
SERGEY_M
 
Сообщения: 682
Зарегистрирован: 20 мар 2009, 12:45
Откуда: Украина, Одесса
ФИО: Сергей

Re: Как настроить таймер0 на ATtiny2313?

Сообщение space » 03 июл 2009, 11:10

упс. забыл про даташит :crazy:
Внутренний у него 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.

Похода заводские оставить надо для работы с внутреннем кварцем и все. Поправьте, если не прав
Аватара пользователя
space
 
Сообщения: 565
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Как настроить таймер0 на ATtiny2313?

Сообщение SERGEY_M » 03 июл 2009, 13:01

для начала фузы в тиньке ваще не трогай
Аватара пользователя
SERGEY_M
 
Сообщения: 682
Зарегистрирован: 20 мар 2009, 12:45
Откуда: Украина, Одесса
ФИО: Сергей

След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5