Помогите перейти с 90s1200 На Attiny23
-
srqemiko
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Ср сен 26, 2007 10:30:45
- Откуда: киев
- Контактная информация:
Помогите перейти с 90s1200 На Attiny23
Доброго времени суток!!!! Вот на днях возникла проблема, нужно заменить 90S1200 на ATtiny2313. Есть код прошивки для 90S1200 который тактируется от внешнего генератора, как его переделать для ATtiny2313? Кроме замены первой строки .include "2313def.inc" на соответствующую. А далее не знаю, может еще что нужно поменять. какие выставить фузы? Подскажите пожалуйста. Очень хочу разобраться, но пока нет соответствующих навыков. Схему и исходник прилагаю. Очень расчитываю на вашу помощь. Заранее благодарю.
- Вложения
-
- asm – Clock.txt
- (23 КБ) 235 скачиваний
-
- Безымянный.JPG
- (93.75 КБ) 529 скачиваний
- Реклама
Re: Помогите перейти с 90s1200 На Attiny23
Для начала перевести tiny2313 в режим работы от внутреннего Watchdog генератора переводом FUSE-бит CKSEL3...0 0110. При этом схема начнет работать примерно в 4 раза быстрее необходимого. Затем, когда убедитесь в ее работоспособности? нужно перевести в нормальный режим, установкой CKSEL3...0 0000.
Дополнение
CKDIV нужно перевести в 1
Ну и приведите в соответствие таблицу векторов.
Дополнение
CKDIV нужно перевести в 1
Ну и приведите в соответствие таблицу векторов.
Код: Выделить всё
.CSEG ;НАЧАЛО КОДОВОГО СЕГМЕНТА
.ORG 0
RJMP RESET ;ПЕРЕХОД ПО reset
NOP ;ПЕРЕХОД ПО int
;***************************************************************************
; для tiny2313 вектор переполнения TIM0
.ORG $06
INC SS ;НАРАСТИМ СЕКУНДУ (ПРЕРЫВАНИЕ ОТ TMR0)
;NOP ;ПРЕРЫВАНИЕ ОТ compare
-
borys
- Держит паяльник хвостом
- Сообщения: 927
- Зарегистрирован: Вт сен 07, 2010 19:27:48
- Откуда: Ташкент
Re: Помогите перейти с 90s1200 На Attiny23
Как правило, hex-файл для AT90S1200 (AT90S2313) можно заливать в ATtiny2313 и будет рабо-
тать. Естественно, надо для ATtiny2313 правильно выставить фьюзы.
тать. Естественно, надо для ATtiny2313 правильно выставить фьюзы.
-
srqemiko
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Ср сен 26, 2007 10:30:45
- Откуда: киев
- Контактная информация:
Re: Помогите перейти с 90s1200 На Attiny23
Сегодня попробывал перекомпелировать и залить прошивку в ATtiny2313 и оставить прерывания от внутреннего генератора. После включения индикаторы заработали но счета времени нет. Подскажите возможно это из-за того что в 90s1200 некоторые функции апаратные, а у ATtiny2313 програмные которые нужно правельно включить
Re: Помогите перейти с 90s1200 На Attiny23
Скорее всего так и есть, а по сему
-чем компилируете
-чем программируете
-приведите состояние FUSE-бит
-что показывают индикаторы. Должна быть 00 01
90S1200 был стартовым контроллером семейства, а вот tiny2313 уже довольно много режимов тактирования, задаваемых пользователем при помощи FUSE-бит
И вообще, для более полных ответов давайте как можно больше информации
-чем компилируете
-чем программируете
-приведите состояние FUSE-бит
-что показывают индикаторы. Должна быть 00 01
90S1200 был стартовым контроллером семейства, а вот tiny2313 уже довольно много режимов тактирования, задаваемых пользователем при помощи FUSE-бит
- Реклама
-
srqemiko
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Ср сен 26, 2007 10:30:45
- Откуда: киев
- Контактная информация:
Re: Помогите перейти с 90s1200 На Attiny23
компилирую avr studio, программирую внутрисхемным программатором skt-200/300, fuse-биты устанавлевал по вашему совету на внутренний генератор CKSEL3...0 0110 и CKDIV8 =1 индикаторы засветились со значением 00:01 и на это вся его работа прекращается. Так же пробывал устанавливать и от внешнего генератора установкой FUSE-битов в следующем порядко CKSEL3...0 0000 CKDIV8=1 результат остался прежним 00:01 и дальше никакого счета времени. И еще подскажите такую штуку вычитал в даташите что в 90s1200 есть такая апаратная штука как стек который я так понемаю смотрит за работой рабочего региста "А", а в ATtiny2313 он програмный и я так полагаю по умолчанию он отключет. Возможно ли из-за этого он и не хочет нормально работать зарание спасибо
Re: Помогите перейти с 90s1200 На Attiny23
Правильно, из-за этого и не работает.
Также студия не хочет писать в EEPROM, т.к.
Код: Выделить всё
;********************************************************************
;ИНСТАЛЯЦИЯ
;********************************************************************
RESET:
LDI A,RAMEND
OUT SPL,AКод: Выделить всё
OUT EEAR,A ;УКАЖЕМ НОМЕР ЗАПИСЫВАЕМОЙ ЯЧЕЙКИ
OUT EEDR,DS ;ПОДГОТОВИМ ДАННЫЕ К ЗАПИСИ
[color=#FF4000] SBI EECR,EEMWE ;!!!!!!!!!!!!этой команды нет[/color]
SBI EECR,EEWE ;НАЧАТЬ ПРОЦЕДУРУ ЗАПИСИ
WERR:
-
srqemiko
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Ср сен 26, 2007 10:30:45
- Откуда: киев
- Контактная информация:
Re: Помогите перейти с 90s1200 На Attiny23
Огромное спасибо за совет все получилось!!!!!!. И еще если вас не затруднит подскажите пожалуйста, я хотел бы еще добавить разделяющюю точку которая индицирует секунды реализовав её следующим образом:
перенести кнопку из порта РВ4 на порт РВ1 чтобы он индицировал и параллельно опрашивал кнопку так, как это сделано на порте РВ0. который индицирует и параллельно следит за напряжением от блока питания, а разделяющюю точку реализовать на порте РВ4. Если это возможно то как это реализовать програмно зарание спасибо.
перенести кнопку из порта РВ4 на порт РВ1 чтобы он индицировал и параллельно опрашивал кнопку так, как это сделано на порте РВ0. который индицирует и параллельно следит за напряжением от блока питания, а разделяющюю точку реализовать на порте РВ4. Если это возможно то как это реализовать програмно зарание спасибо.
Re: Помогите перейти с 90s1200 На Attiny23
Вот и ладушки.
По вопросу: по мне, пока лучше ничего не менять, а воспользоваться тем, что tiny2313 работает от внешнего тактирования и лапа XTAL2/PA1 свободна и ей можно моргать сегментом h во время индикации единиц часов
По вопросу: по мне, пока лучше ничего не менять, а воспользоваться тем, что tiny2313 работает от внешнего тактирования и лапа XTAL2/PA1 свободна и ей можно моргать сегментом h во время индикации единиц часов
Код: Выделить всё
.
.
.
LDI A,0B00000010
OUT TIMSK,A ;РАЗРЕШИМ ПРЕРЫВАНИЯ ОТ ТАИМЕРА/СЧЕТЧИКА
;*************************************************
CBI PORTA,1 ; ВЫВОД ПОГАСШЕГО СЕКУНДНОГО РАЗДЕЛИТЕЛЯ,
SBI DDRA,1 ; ПОДКЛЮЧЕННОГО К XTAL2/PA1
;*************************************************
.
.
.
.
;********************************************************************
;ПРОЦЕДУРА ВЫВОДИТ НА ИНДИКАТОРЫ ТЕКУЩЕЕ ВРЕМЯ
;********************************************************************
CLOCK:
.
.
.
MOV A,H ;ПОДГОТОВИМ К ОТОБРАЖЕНИЮ ЧАСЫ
RCALL DECOD ;ПЕРЕКОДИРУЕМ ЧИСЛО
;***************************************************************************
IN A,TCNT0
CPI A,224+16
CBI PORTA,1
BRCC SEC_METKA
SBI PORTA,1
SEC_METKA:
;***************************************************************************
CBI PORTB,1 ;ВКЛЮЧИМ РАЗРЯД ЧАСОВ
RCALL PAUSAA ;ЗАДЕРЖКА
SBI PORTB,1 ;ПОТУШИМ РАЗРЯД ЧАСОВ
CBI PORTA,1
;***************************************************************************
-
srqemiko
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Ср сен 26, 2007 10:30:45
- Откуда: киев
- Контактная информация:
Re: Помогите перейти с 90s1200 На Attiny23
Огромное вам спасибо akl все работает
вот тока мне не дает спокойствия еще то что при работе иногда подмигивают индикаторы и при нажатии одной из кнопок установок индикаторы так же подмигивают скажите в чем может быть проблема
Re: Помогите перейти с 90s1200 На Attiny23
Возможно, играет роль особенность семейства AVR. В отличие от других семейств, при входе в прерывание состояние статус-регистра не запоминается в стеке аппаратно, а при выходе не восстанавливается. В этой программе нет синхронизации отсчета секундного интервала и всем остальным, что на фоне низкой тактовой частоты будет создавать описанные эффекты. Можно попробовать заменить обработчик секундного интервала тем, что ниже. В любом случае, хуже не будет.
Код: Выделить всё
; для tiny2313 вектор переполнения TIM0
.ORG $06
IN R13,SREG ; запомнить состояние флагов при входе в прерывание
INC SS ;НАРАСТИМ СЕКУНДУ (ПРЕРЫВАНИЕ ОТ TMR0)
;********************************************************************
;ОБРАБОТКА ПРЕРЫВАНИЯ ОТ ТАЙМЕРА\СЧЕТЧИКА (ЧЕРЕЗ 1024х200 ТАКТА ГЕНЕРАТ.)
;********************************************************************
TMR0:
LDI B,224
OUT TCNT0,B ;ТАЙМЕР СЧИТАЕТ ДО 32 (256-224=32)
CPI SS,60 ;SS=60?
BREQ T2 ;ЕСЛИ ДА ТОГДА ПЕРЕХОД НА Т2,ИНАЧЕ ИДЕМ ДАЛЕЕ
OUT SREG,R13 ; вернуть состояние флагов при выходе из прерывания
RETI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
T2: CLR SS ;СБРОСИМ SS
INC M ;УВЕЛИЧИМ МИНУТЫ
CPI M,10 ;МИНУТЫ ДОСТИГЛИ 10?
BREQ T3 ;ЕСЛИ ДА ТОГДА ПЕРЕХОД НА Т3,ИНАЧЕ ИДЕМ ДАЛЕЕ
OUT SREG,R13 ; вернуть состояние флагов при выходе из прерывания
RETI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
T3: CLR M ;СБРОСИМ M
INC MM ;УВЕЛИЧИМ ДЕСЯТКИ МИНУТ
CPI MM,6 ;ДЕСЯТКИ МИНУТ ДОСТИГЛИ 6?
BREQ T4 ;ЕСЛИ ДА ТОГДА ПЕРЕХОД НА Т4,ИНАЧЕ ИДЕМ ДАЛЕЕ
OUT SREG,R13 ; вернуть состояние флагов при выходе из прерывания
RETI
T4: CLR MM ;СБРОСИМ ММ
INC H ;УВЕЛИЧИМ ЧАСЫ
CPI H,4 ;ЧАСЫ ДОСТИГЛИ 4?
BREQ T5 ;ЕСЛИ ДА ТОГДА ПЕРЕХОД НА Т5,ИНАЧЕ ИДЕМ ДАЛЕЕ
CPI H,10 ;ЧАСЫ ДОСТИГЛИ 10?
BREQ T9 ;ЕСЛИ ДА ТОГДА ПЕРЕХОД НА Т9,ИНАЧЕ ИДЕМ ДАЛЕЕ
OUT SREG,R13 ; вернуть состояние флагов при выходе из прерывания
RETI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
T5: CPI HH,2 ;ДЕСЯТКИ ЧАСОВ ДОСТИГЛИ 2?
BREQ T6 ;ЕСЛИ ДА ТОГДА ПЕРЕХОДИМ НА Т6,ИНАЧЕ ИДЕМ ДАЛЕЕ
CPI H,10 ;ЧАСЫ ДОСТИГЛИ 10?
BREQ T7 ;ЕСЛИ ДА ТОГДА ПЕРЕХОД НА Т7,ИНАЧЕ ИДЕМ ДАЛЕЕ
OUT SREG,R13 ; вернуть состояние флагов при выходе из прерывания
RETI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
T6: CLR HH ;СБРОСИМ ДЕСЯТКИ ЧАСОВ
CLR H ;СБРОСИМ ЧАСЫ
INC D ;УВЕЛИЧИМ ДНИ
MOV B,D
CPI B,8 ;ДНИ ДОСТИГЛИ 8?
BREQ T8 ;ЕСЛИ ДА ТОГДА ПЕРЕХОДИМ НА Т8,ИНАЧЕ ИДЕМ ДАЛЕЕ
OUT SREG,R13 ; вернуть состояние флагов при выходе из прерывания
RETI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
T7: CLR H ;СБРОСИМ ЧАСЫ
INC HH ;УВЕЛИЧИМ ДЕСЯТКИ ЧАСОВ
OUT SREG,R13 ; вернуть состояние флагов при выходе из прерывания
RETI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
T8: LDI B,1
MOV D,B
OUT SREG,R13 ; вернуть состояние флагов при выходе из прерывания
RETI ;УСТАНОВИТЬ ДНИ И ВЫХОД ИЗ ПРЕРЫВАНИЯ
T9: CLR H ;СБРОСИМ ЧАСЫ
INC HH ;УВЕЛИЧИТЬ ДЕСЯТКИ ЧАСОВ
OUT SREG,R13 ; вернуть состояние флагов при выходе из прерывания
RETI ;ВЫХОД ИЗ ПРЕРЫВАНИЯ
;********************************************************************
;ИНСТАЛЯЦИЯ
;********************************************************************
-
srqemiko
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Ср сен 26, 2007 10:30:45
- Откуда: киев
- Контактная информация:
Re: Помогите перейти с 90s1200 На Attiny23
Проблема мерцания индикаторов при нажатии кнопок решилась путем удаления програмы задержки от дребезга и её элементов
и изменив обработчик секундного интервала тем, что вы посоветовали все стало работать как нужно;********************************************************************
;ЗАДЕРЖКА ОТ ДРЕБЕЗГА
;********************************************************************
PAUSA:
LDI A,100
PAU: DEC A
BREQ PAUS
RJMP PAU
PAUS: RET
;_______________________
-
srqemiko
- Открыл глаза
- Сообщения: 47
- Зарегистрирован: Ср сен 26, 2007 10:30:45
- Откуда: киев
- Контактная информация:
Re: Помогите перейти с 90s1200 На Attiny23
Добрый вечер. А подскажите еще по одному вопросу который заключается в следующем реализацией в них счета даты, месяца и года. Я так полагаю что их счет идет по аналогии самого времени но вот не могу понять, как он должен просчитывает количество дней месяца и высокосного года зарание благодарен


