ВСЁ по прошивке и программированию AT90S2313/ATTiny2313

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Сообщение Alex_Megavolt_79 »

kret_a_v писал(а):доброго времени суток уважаемые коты форумчане

столкнулся с такой вот трудностью....

собрал часы по - http://radionet.com.ru/shem/shem842.html

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

подскажите пожалуйсто как его правильно откомилировать для тини2313

заранее благодарен...

Alex_Megavolt_79 - респект!!!! :beer:
по его совету оживил тиньки с помощью 155ла3
теперь на адаптере висит с переключателем
(внешний кварц 4мгц <-> оживить) - типа режимы работы
:)


там вообще-то AT90S2313, а тинька её замена. Я бы взял даташит на AT90S2313 и на тиньку посмотрел какие прерывания на каком адресе там и там переделал блок прерываний и посмотрел, там еще названия регистров управления таймеров посмотрел чтоб совпадали. Я пользуюсь AVRStudio в неё скопировал бы тот текстовый файл подредактировал и там же скомпилировал. Я не профессионал а только учусь, но ход действий я вижу такой. 8)
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Сообщение Alex_Megavolt_79 »

У меня такая проблема, написал прогу динамической индикации. Всё нормально работает, за основу брал местную обучалку. Решил привязать 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 кнопки на этой лини, а почему он не хочет от своих ножек прыгать?). В чём косяк не пойму. В студии при симулировании всё работает как надо. Если нужен исходник проги могу выложить.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

замени rjmp на jmp
должно помочь :wink:
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Сообщение Alex_Megavolt_79 »

GP1 писал(а):замени rjmp на jmp
должно помочь :wink:


Вот кусок кода проверки и обработки нажатия кнопки
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
Аватара пользователя
kret_a_v
Мучитель микросхем
Сообщения: 415
Зарегистрирован: Пн фев 02, 2009 15:00:33

Сообщение kret_a_v »

AI_Disable писал(а):Купил новую тиньку. Совершенно другая партия. Симптомы те же - мк не может проснуться.


я оживил по совету Alex_Megavolt_79 такой схемкой
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Сообщение Alex_Megavolt_79 »

Лучше вот полностью исходник
Вложения
Dyn_indic_key.asm
(9.42 КБ) 401 скачивание
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

Код: Выделить всё

Эти ошибки показывает на строчки 
breq Set_key5
breq Set_key6
breq Set_key7
breq Set_key8

эти команды могут переходить на +-63 слова, если точка перехода отстоит дальше чем 63 слова - возникает ошибка.
попробуй так:

Код: Выделить всё

          cpi temp,0b00100001 
          brne l_001
          jmp Set_key6
l_001: .....    ; программа дальше.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
kret_a_v
Мучитель микросхем
Сообщения: 415
Зарегистрирован: Пн фев 02, 2009 15:00:33

Сообщение kret_a_v »

Alex_Megavolt_79 писал(а): Я бы взял даташит на AT90S2313 и на тиньку посмотрел какие прерывания на каком адресе там и там переделал блок прерываний и посмотрел, там еще названия регистров управления таймеров посмотрел чтоб совпадали. Я пользуюсь AVRStudio в неё скопировал бы тот текстовый файл подредактировал и там же скомпилировал. Я не профессионал а только учусь, но ход действий я вижу такой. 8)


хм....
я тоже только только.....

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

где про прирывания пишут в даташите ?
и как я понял то это полные аналоги или наивно заблудился...
(не могу рилоить даташиты из за их размеров)

а про AVRStudio сенькс.... бум дерзать....

...наверно надо будет собрать схему именно на тини
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Сообщение Alex_Megavolt_79 »

GP1 писал(а):

Код: Выделить всё

Эти ошибки показывает на строчки 
breq Set_key5
breq Set_key6
breq Set_key7
breq Set_key8

эти команды могут переходить на +-63 слова, если точка перехода отстоит дальше чем 63 слова - возникает ошибка.
попробуй так:

Код: Выделить всё

          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
и тк далее. А почему на макетке не хочет работать????
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

kret_a_v
не совсем полный аналог.
у тиньки расширены функции управления таймерами, названия регистров другое, но...
90% программ написанных для 90S2313 без каких либо переделок работают на тиньке, но не наоборот!!!
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Сообщение Alex_Megavolt_79 »

GP1 писал(а):kret_a_v
не совсем полный аналог.
у тиньки расширены функции управления таймерами, названия регистров другое, но...
90% программ написанных для 90S2313 без каких либо переделок работают на тиньке, но не наоборот!!!

Да я и сказал по этому что надо проверить по даташитам
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

Alex_Megavolt_79 писал(а):
GP1 писал(а):

Код: Выделить всё

Эти ошибки показывает на строчки 
breq Set_key5
breq Set_key6
breq Set_key7
breq Set_key8

эти команды могут переходить на +-63 слова, если точка перехода отстоит дальше чем 63 слова - возникает ошибка.
попробуй так:

Код: Выделить всё

          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 раз.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

kret_a_v
если проблемы с английским, как у мняу :)))
скачай,а лучше купи книги А.В.Евстифеева:
1. Микроконтроллеры AVR семейства classic фирмы ATMEL - здесь по AT90S....
2.Микроконтроллеры AVR семейства tiny фирмы ATMEL
3.Микроконтроллеры AVR семейства mega фирмы ATMEL

и не ленись читать иначе удачи не видать :beer:
Последний раз редактировалось GP1 Вс ноя 22, 2009 19:09:02, всего редактировалось 1 раз.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Сообщение Alex_Megavolt_79 »

УПС... Действительно, уже махнул.
У меня остался второй вопрос не решённым. Почему не получается на макетке
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

в силуляторе гонял?
что кажет?
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Сообщение Alex_Megavolt_79 »

GP1 писал(а):в силуляторе гонял?
что кажет?

В самой студии происходит увеличение или уменьшение значений индикатора. А на макетке нет. Вот я раньше писал:

Alex_Megavolt_79 писал(а):.....И ещё момент когда делаю всего на 4 кнопках ассемблирую прошиваю мк не реагирует на нажатия. Осциллографом проверяю на выводы скана по линии если нажимаю кнопки этой линии то импульсы с разрядов приходят. Но если я тупо сажу вывод скана линии на корпус (у меня 0 активный) изменения происходят быстрое смена показаний на всех индикаторах (по идее так и должно, так как пока я держу 0 на выводе скана мк определяет что нажаты все 4 кнопки на этой лини, а почему он не хочет от своих ножек прыгать?). В чём косяк не пойму. В студии при симулировании всё работает как надо. ....
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

честно говоря копаться в чужих косяках нет ни желания ни времени, но направить в нужное русло попробую, только схемку бы увидеть.
на вскидку - при опросе клавы, индикаторы надо отключать.
я обыно проверяю клаву после вывода всех цифр на индикатор по прерыванию в котором формируется время индикации 1-го разряда.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Alex_Megavolt_79
Грызет канифоль
Сообщения: 262
Зарегистрирован: Пт окт 30, 2009 22:33:56
Откуда: Санкт-Петербург

Сообщение Alex_Megavolt_79 »

Сегодня нарисую скину
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Сообщение GP1 »

и организуй отдельную тему, так потом проще искать будет.

зы: а обучалку читал? там все по полочкам разложено.
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
Vergilium
Грызет канифоль
Сообщения: 260
Зарегистрирован: Ср фев 13, 2008 14:41:32
Откуда: Украина, Николаев

Сообщение Vergilium »

Здравствуйте. Подскажите пожалуйста в чем я ошибся? Недавно собрал таймер на ATtiny2313, написал программу на С в WinAVR (код представлен ниже) но вроде все бы да ничего но каждый час он опаздывает где то на 1мин. 20сек. примерно. Прерывания вроде все правильно рассчитал (кварц 4МГц, 65535 - (4000000/1024)=61628=F0BCh - начало отсчета таймера). Может в коде где то ошибся?
Вложения
main.rar
(2.36 КБ) 214 скачиваний
Немного нервов и девайс готов
Ответить

Вернуться в «AVR»