там вообще-то AT90S2313, а тинька её замена. Я бы взял даташит на AT90S2313 и на тиньку посмотрел какие прерывания на каком адресе там и там переделал блок прерываний и посмотрел, там еще названия регистров управления таймеров посмотрел чтоб совпадали. Я пользуюсь AVRStudio в неё скопировал бы тот текстовый файл подредактировал и там же скомпилировал. Я не профессионал а только учусь, но ход действий я вижу такой.kret_a_v писал(а):доброго времени суток уважаемые коты форумчане
столкнулся с такой вот трудностью....
собрал часы по - http://radionet.com.ru/shem/shem842.html
да вот только когда стал пробовать прошить обнаружил что там в архиве только исходник который могу только блокнотом открыть
подскажите пожалуйсто как его правильно откомилировать для тини2313
заранее благодарен...
Alex_Megavolt_79 - респект!!!!![]()
по его совету оживил тиньки с помощью 155ла3
теперь на адаптере висит с переключателем
(внешний кварц 4мгц <-> оживить) - типа режимы работы
ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
- Реклама
У меня такая проблема, написал прогу динамической индикации. Всё нормально работает, за основу брал местную обучалку. Решил привязать 8 кнопок собрав в матрицу. 2 линии по 4 колонки, на колонки взял с разрядов динамической индикации. В одной линии кнопки обрабатываются, а только добавляю в обработчик прерывания по таймеру ещё кусок кода с обработкой 2 линии студия ругается и не хочет компилировать, сообщения при этом такое:
D:\avr\Dyn_indic_key\Dyn_indic_key.asm(275): error: Relative branch out of reach
D:\avr\Dyn_indic_key\Dyn_indic_key.asm(279): error: Relative branch out of reach
D:\avr\Dyn_indic_key\Dyn_indic_key.asm(283): error: Relative branch out of reach
D:\avr\Dyn_indic_key\Dyn_indic_key.asm(287): error: Relative branch out of reach
как раз на остальные 4 кнопки. И ещё момент когда делаю всего на 4 кнопках ассемблирую прошиваю мк не реагирует на нажатия. Осциллографом проверяю на выводы скана по линии если нажимаю кнопки этой линии то импульсы с разрядов приходят. Но если я тупо сажу вывод скана линии на корпус (у меня 0 активный) изменения происходят быстрое смена показаний на всех индикаторах (по идее так и должно, так как пока я держу 0 на выводе скана мк определяет что нажаты все 4 кнопки на этой лини, а почему он не хочет от своих ножек прыгать?). В чём косяк не пойму. В студии при симулировании всё работает как надо. Если нужен исходник проги могу выложить.
D:\avr\Dyn_indic_key\Dyn_indic_key.asm(275): error: Relative branch out of reach
D:\avr\Dyn_indic_key\Dyn_indic_key.asm(279): error: Relative branch out of reach
D:\avr\Dyn_indic_key\Dyn_indic_key.asm(283): error: Relative branch out of reach
D:\avr\Dyn_indic_key\Dyn_indic_key.asm(287): error: Relative branch out of reach
как раз на остальные 4 кнопки. И ещё момент когда делаю всего на 4 кнопках ассемблирую прошиваю мк не реагирует на нажатия. Осциллографом проверяю на выводы скана по линии если нажимаю кнопки этой линии то импульсы с разрядов приходят. Но если я тупо сажу вывод скана линии на корпус (у меня 0 активный) изменения происходят быстрое смена показаний на всех индикаторах (по идее так и должно, так как пока я держу 0 на выводе скана мк определяет что нажаты все 4 кнопки на этой лини, а почему он не хочет от своих ножек прыгать?). В чём косяк не пойму. В студии при симулировании всё работает как надо. Если нужен исходник проги могу выложить.
замени rjmp на jmp
должно помочь
должно помочь
Вот кусок кода проверки и обработки нажатия кнопкиGP1 писал(а):замени rjmp на jmp
должно помочь
Check_key:
ldi XL,Low(Key) ;борьба с дребезгом
ldi XH,High(Key)
inc temp2
andi temp2,0b00000111 ;будем блокировать для борьбы
add XL,temp2 ;с дребезгом 8 кнопок
ld temp2,X
cpi temp2,0
breq PC+3
dec temp2
st X,temp2
in temp,PIND
andi temp,0b00110000
cpi temp,0b00110000
breq End_Decoder_key
add temp,counter
cpi temp,0b00010000
breq Set_key1
cpi temp,0b00010001
breq Set_key2
cpi temp,0b00010010
breq Set_key3
cpi temp,0b00010011
breq Set_key4
cpi temp,0b00100000
breq Set_key5
cpi temp,0b00100001
breq Set_key6
cpi temp,0b00100010
breq Set_key7
cpi temp,0b00100011
breq Set_key8
End_Decoder_key:
ret
;обработчик действия кнопок
Set_key1:
lds temp,Key
cpi temp,0
breq PC+2
ret
ldi temp,64
sts Key,temp
lds temp,Digit
inc temp
cpi temp,10
brne PC+2
ldi temp,0
sts Digit,temp
ret
Set_key2:
lds temp,Key+1
cpi temp,0
breq PC+2
ret
ldi temp,64
sts Key+1,temp
lds temp,Digit+1
inc temp
cpi temp,10
brne PC+2
ldi temp,0
sts Digit+1,temp
ret
Set_key3:
lds temp,Key+2
cpi temp,0
breq PC+2
ret
ldi temp,64
sts Key+2,temp
lds temp,Digit+2
inc temp
cpi temp,10
brne PC+2
ldi temp,0
sts Digit+2,temp
ret
Set_key4:
lds temp,Key+3
cpi temp,0
breq PC+2
ret
ldi temp,64
sts Key+3,temp
lds temp,Digit+3
inc temp
cpi temp,10
brne PC+2
ldi temp,0
sts Digit+3,temp
ret
Set_key5:
lds temp,Key
cpi temp,0
breq PC+2
ret
ldi temp,64
sts Key,temp
lds temp,Digit
dec temp
cpi temp,255
brne PC+2
ldi temp,9
sts Digit,temp
ret
Set_key6:
lds temp,Key+1
cpi temp,0
breq PC+2
ret
ldi temp,64
sts Key+1,temp
lds temp,Digit+1
dec temp
cpi temp,255
brne PC+2
ldi temp,9
sts Digit+1,temp
ret
Set_key7:
lds temp,Key+2
cpi temp,0
breq PC+2
ret
ldi temp,64
sts Key+2,temp
lds temp,Digit+2
dec temp
cpi temp,255
brne PC+2
ldi temp,9
sts Digit+2,temp
ret
Set_key8:
lds temp,Key+3
cpi temp,0
breq PC+2
ret
ldi temp,64
sts Key+3,temp
lds temp,Digit+3
dec temp
cpi temp,255
brne PC+2
ldi temp,9
sts Digit+3,temp
ret
Эти ошибки показывает на строчки
breq Set_key5
breq Set_key6
breq Set_key7
breq Set_key8
- Сообщения: 415
- Зарегистрирован: Пн фев 02, 2009 15:00:33
- Реклама
Код: Выделить всё
Эти ошибки показывает на строчки
breq Set_key5
breq Set_key6
breq Set_key7
breq Set_key8попробуй так:
Код: Выделить всё
cpi temp,0b00100001
brne l_001
jmp Set_key6
l_001: ..... ; программа дальше.- Сообщения: 415
- Зарегистрирован: Пн фев 02, 2009 15:00:33
хм....Alex_Megavolt_79 писал(а): Я бы взял даташит на AT90S2313 и на тиньку посмотрел какие прерывания на каком адресе там и там переделал блок прерываний и посмотрел, там еще названия регистров управления таймеров посмотрел чтоб совпадали. Я пользуюсь AVRStudio в неё скопировал бы тот текстовый файл подредактировал и там же скомпилировал. Я не профессионал а только учусь, но ход действий я вижу такой.
я тоже только только.....
пока на уровне повтореня
про программироване с стыдом молчу
с английским к сожалению и стыду слабовато...
где про прирывания пишут в даташите ?
и как я понял то это полные аналоги или наивно заблудился...
(не могу рилоить даташиты из за их размеров)
а про AVRStudio сенькс.... бум дерзать....
...наверно надо будет собрать схему именно на тини
Век живи век учись, спасибо большое заработалоGP1 писал(а):эти команды могут переходить на +-63 слова, если точка перехода отстоит дальше чем 63 слова - возникает ошибка.Код: Выделить всё
Эти ошибки показывает на строчки breq Set_key5 breq Set_key6 breq Set_key7 breq Set_key8
попробуй так:Код: Выделить всё
cpi temp,0b00100001 brne l_001 jmp Set_key6 l_001: ..... ; программа дальше.
только я так сделал, но это одно и тоже
cpi temp,0b00010000
breq PC+2
jmp Set_key1
cpi temp,0b00010001
breq PC+2
jmp Set_key2
и тк далее. А почему на макетке не хочет работать????
kret_a_v
не совсем полный аналог.
у тиньки расширены функции управления таймерами, названия регистров другое, но...
90% программ написанных для 90S2313 без каких либо переделок работают на тиньке, но не наоборот!!!
не совсем полный аналог.
у тиньки расширены функции управления таймерами, названия регистров другое, но...
90% программ написанных для 90S2313 без каких либо переделок работают на тиньке, но не наоборот!!!
не совсем одно и тоже, я бы сказал даже наоборотAlex_Megavolt_79 писал(а):Век живи век учись, спасибо большое заработалоGP1 писал(а):эти команды могут переходить на +-63 слова, если точка перехода отстоит дальше чем 63 слова - возникает ошибка.Код: Выделить всё
Эти ошибки показывает на строчки breq Set_key5 breq Set_key6 breq Set_key7 breq Set_key8
попробуй так:Код: Выделить всё
cpi temp,0b00100001 brne l_001 jmp Set_key6 l_001: ..... ; программа дальше.
только я так сделал, но это одно и тоже
cpi temp,0b00010000
breq PC+2
jmp Set_key1
cpi temp,0b00010001
breq PC+2
jmp Set_key2
и тк далее. А почему на макетке не хочет работать????
у тебя переход на установку Set_keyX был по равенству temp и константы, а теперь переход будет по неравенству
посмотри внимательно мой код, я же заменил breq на brne
Последний раз редактировалось GP1 Вс ноя 22, 2009 19:08:35, всего редактировалось 1 раз.
kret_a_v
если проблемы с английским, как у мняу
скачай,а лучше купи книги А.В.Евстифеева:
1. Микроконтроллеры AVR семейства classic фирмы ATMEL - здесь по AT90S....
2.Микроконтроллеры AVR семейства tiny фирмы ATMEL
3.Микроконтроллеры AVR семейства mega фирмы ATMEL
и не ленись читать иначе удачи не видать
если проблемы с английским, как у мняу
скачай,а лучше купи книги А.В.Евстифеева:
1. Микроконтроллеры AVR семейства classic фирмы ATMEL - здесь по AT90S....
2.Микроконтроллеры AVR семейства tiny фирмы ATMEL
3.Микроконтроллеры AVR семейства mega фирмы ATMEL
и не ленись читать иначе удачи не видать
Последний раз редактировалось GP1 Вс ноя 22, 2009 19:09:02, всего редактировалось 1 раз.
в силуляторе гонял?
что кажет?
что кажет?
В самой студии происходит увеличение или уменьшение значений индикатора. А на макетке нет. Вот я раньше писал:GP1 писал(а):в силуляторе гонял?
что кажет?
Alex_Megavolt_79 писал(а):.....И ещё момент когда делаю всего на 4 кнопках ассемблирую прошиваю мк не реагирует на нажатия. Осциллографом проверяю на выводы скана по линии если нажимаю кнопки этой линии то импульсы с разрядов приходят. Но если я тупо сажу вывод скана линии на корпус (у меня 0 активный) изменения происходят быстрое смена показаний на всех индикаторах (по идее так и должно, так как пока я держу 0 на выводе скана мк определяет что нажаты все 4 кнопки на этой лини, а почему он не хочет от своих ножек прыгать?). В чём косяк не пойму. В студии при симулировании всё работает как надо. ....
честно говоря копаться в чужих косяках нет ни желания ни времени, но направить в нужное русло попробую, только схемку бы увидеть.
на вскидку - при опросе клавы, индикаторы надо отключать.
я обыно проверяю клаву после вывода всех цифр на индикатор по прерыванию в котором формируется время индикации 1-го разряда.
на вскидку - при опросе клавы, индикаторы надо отключать.
я обыно проверяю клаву после вывода всех цифр на индикатор по прерыванию в котором формируется время индикации 1-го разряда.
и организуй отдельную тему, так потом проще искать будет.
зы: а обучалку читал? там все по полочкам разложено.
зы: а обучалку читал? там все по полочкам разложено.
Здравствуйте. Подскажите пожалуйста в чем я ошибся? Недавно собрал таймер на ATtiny2313, написал программу на С в WinAVR (код представлен ниже) но вроде все бы да ничего но каждый час он опаздывает где то на 1мин. 20сек. примерно. Прерывания вроде все правильно рассчитал (кварц 4МГц, 65535 - (4000000/1024)=61628=F0BCh - начало отсчета таймера). Может в коде где то ошибся?
- Вложения
-
- main.rar
- (2.36 КБ) 215 скачиваний
Немного нервов и девайс готов



