ВСЁ по прошивке и программированию AT90S2313/ATTiny2313
-
Valera_112
- Родился
- Сообщения: 18
- Зарегистрирован: Чт фев 19, 2009 20:55:10
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
2Кирилл
Подключать можно к любому порту.
Обработка примерно такая(кнопка на PD0):
Подключать можно к любому порту.
Обработка примерно такая(кнопка на PD0):
Код: Выделить всё
reset:
ldi Tmp, RamEnd ; инициализация стэка
out SPL, Tmp
cbi PORTD, 0 ; подтяжка откл
cbi DDRD, 0 ; линия на ввод
forever:
sbiс PIND, 0 ; пропустить следующую команду если PD0 сброшен
rcall lable ; перейти, если PD0 установлен
rjmp forever
lable:
nop
ret
доброго времени суток! имеется такая проблема.- ATtiny2313 успешно распознается и шьется прогой AvrOsp_II_400. только вот при загрузке ЛЮБОЙ прошивки он на 19 ногу выдает 5 вольт а на остальные 3 вольта. программки для него брал и из обучалки где просто некоторые светодиоды засветить и свою писал, все одна и та же реакция. кварц я не ставил, но и заводские фьюзы не менял, т.е. по идее он должен работать от внутреннего генератора. как быть?
прошивка самая любая, например вот эта
та что была с самого начала зашита- в приложении. (должна опрашивать датчики и включать светодиоды)
Код: Выделить всё
.include "C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler\Appnotes\tn2313def.inc"
.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20
.cseg
.org 0
ldi Temp, 0b11111111 ;присвоение константы
out DDRB,Temp ;вывод
;выводим число 11010010 на светодиоды
ldi Temp,0b11010010 ;присвоение константы
out PortB,Temp ;вывод на индикацию
та что была с самого начала зашита- в приложении. (должна опрашивать датчики и включать светодиоды)
- Вложения
-
- submarine.asm
- (974 байт) 358 скачиваний
вот это как называется? утро вечера мудреннее? я его забыл на ночь из розетки вытащить так он раскачался, щас заново прошил- вроде работает. только почемуто не в том порядке (заказываю 11010010 а выдает 01001011 если считать с ножки PB0).да еще и не прямым сигналом а на 500 килогерцовой частоте и довольно хитрой формы(может потому что я его от нокиевского зарядника питаю?). можно это какнибудь исправить? а та прога которую я в приложении к предыдущему сообщению выложил все таки не работает. на 19 ноге есть сигнал на остальных нету. независимо от состояния входов. в симуляторе AVR studio все работает на ура
- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
Я бы сделал вот так:
Код: Выделить всё
.include "C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler\Appnotes\tn2313def.inc"
.def Temp=R16
.def Temp1=R17
.def Temp2=R18
.def Temp3=R19
.def Temp4=R20
.cseg
.org 0
;reset:
rjmp start
; Начальная инициализация
Start:
ldi Temp, 0b11111111 ;присвоение константы
out DDRB,Temp ;вывод
;выводим число 11010010 на светодиоды
ldi Temp,0b11010010 ;присвоение константы
out PortB,Temp ;вывод на индикацию
; Бесконечный цикл.
; Если его не будет, то очень сложно предположить, что контроллер
; будет делать дальше
Forever:
nop
rjmp Forever- Pooher
- Мучитель микросхем
- Сообщения: 491
- Зарегистрирован: Вс янв 07, 2007 01:45:48
- Откуда: Российская Федерация, будь она неладна...
По поводу программы из приложения:
ret-это команда возвращения из подпрограммы.
Подпрограмма вызывается командами типа call, при выполнении которых содержимое счётчика программ (PC) помещается в стэк(который у Вас,к стати, даже не инициализирован).
Команда ret извлекает PC из стэка, и возвращает программу в соответствующее место.
Как думаете, в Вашем случае что и откуда извлекает ret?
Инициализация стэка:
ЗЫ: Срочно в обучалку.
Код: Выделить всё
breq del1
.......................
del1:
ldi Temp2,0b0001000
out Portb,Temp2
ret;??!! ret-это команда возвращения из подпрограммы.
Подпрограмма вызывается командами типа call, при выполнении которых содержимое счётчика программ (PC) помещается в стэк(который у Вас,к стати, даже не инициализирован).
Команда ret извлекает PC из стэка, и возвращает программу в соответствующее место.
Как думаете, в Вашем случае что и откуда извлекает ret?
Инициализация стэка:
Код: Выделить всё
ldi tmp, LOW(RAMEND); младший байт адреса конца RAM в tmp
out SPL, tmp ; tmp в младший байт указателя стэка
; если RAM>256 байт, то надо инициализировать SPH
ldi tmp, HIGH(RAMEND); старший байт адреса конца RAM в tmp
out SPH, tmp ; tmp в старший байт указателя стэкаЗЫ: Срочно в обучалку.
Такого рода проблема:
Прошил тини2313 простенько прошивочкой аля бегущие огоньки:
И что было замечено... Первый N-циклов всё хорошо работает. Но после начинается сбой: приблизительно раз в 2-3 цикла, не доходя до конца затухания, диоды тухнут и снова начинают зажигаться. Пройдя 2-3 раза - снова та же история.
Частота выставлена на внутрений генератор 8МГц. Fuse SUT0..1 00.
Побывал и на 4-х МГц ... Так же.
Программно (в плане прошивки) нет ошибок.
При моделировании в Протеусе - предупреждение. Что-то не так со сторожевым таймером. Но продолжает работать.
Кто что подскажет?
Прошил тини2313 простенько прошивочкой аля бегущие огоньки:
Код: Выделить всё
PORTB.0=1;
delay_ms(200);
PORTB.1=1;
delay_ms(200);
PORTB.2=1;
delay_ms(200);
...
//начинаем потихоньку тухнуть
PORTB.0=0;
delay_ms(200);
PORTB.1=0;
delay_ms(200);
PORTB.2=0;
delay_ms(200);
...
И что было замечено... Первый N-циклов всё хорошо работает. Но после начинается сбой: приблизительно раз в 2-3 цикла, не доходя до конца затухания, диоды тухнут и снова начинают зажигаться. Пройдя 2-3 раза - снова та же история.
Частота выставлена на внутрений генератор 8МГц. Fuse SUT0..1 00.
Побывал и на 4-х МГц ... Так же.
Программно (в плане прошивки) нет ошибок.
При моделировании в Протеусе - предупреждение. Что-то не так со сторожевым таймером. Но продолжает работать.
Кто что подскажет?
Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного.
- sachok
- Опытный кот
- Сообщения: 849
- Зарегистрирован: Сб янв 05, 2008 11:05:15
- Откуда: Україна м.Луцьк
- Контактная информация:
Вот так я отключал в Atmega16. Но протеус продолжает ругаться, такой вот он дурак:) собрал все в железе и никаких проблем.
- Вложения
-
- wh.jpeg
- ст.42 datasheet
- (3.43 КБ) 304 скачивания
Я не Сашок!!!
Вроде бы как вылечено строчками:
5 минут полёт нормальный
Код: Выделить всё
#asm ("wdr")
/* Write logical one to WDTOE and WDE */
WDTCR |= 0x18; //(1<<WDTOE) | (1<<WDE);
/* Turn off WDT */
WDTCR = 0x00;5 минут полёт нормальный
Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного.
AT90S2313/ATTiny2313
AT90S2313/ATTiny2313
памагите !!!!
Гуру помогите новичку
сделал стк200/300
а как к нему присобачить AT90S2313/ATTiny2313 ????
за ранее мяу
памагите !!!!
Гуру помогите новичку
сделал стк200/300
а как к нему присобачить AT90S2313/ATTiny2313 ????
за ранее мяу
Re: AT90S2313/ATTiny2313
kret_a_v писал(а):помогите новичку
сделал стк200/300
а как к нему присобачить AT90S2313/ATTiny2313 ????
за ранее мяу
Скажем проще...
Если собирал по ЭТОЙ статье, что там есть приатаченый архив со схемой программатора и плат расширения. Одна из плат - плата для тини2313/90s2313. Делаешь, подключаешь, горя не знаешь
Только одно НО! Если будешь запускать от внешнего генератора (кварц), то нужно убрать перемычку от 5-й ноги к порту х2.
Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного.