Конверсия софта с AT90S1200 на attiny2313

8-битные микроконтроллеры AVR (AT90, ATtiny, ATmega) от Atmel (в настоящий момент принадлежит Microchip)

Moderator: Shaos

Konstantin18
Maniac
Posts: 325
Joined: 15 Jan 2019 15:48
Location: Украина, Луганская обл.

Re: Конверсия софта с AT90S1200 на attiny2313

Post by Konstantin18 »

rw6hrm wrote: работать явно не будет.
Почему такой вывод ?

Описание процесса из даташита на 2313 (doc8246.pdf)

Code: Select all

Before writing data to EEPROM the target location must be erased. This can be done either in
the same operation or as part of a split operation. Writing to an unerased EEPROM location will
result in corrupted data.
To write an EEPROM memory location follow the procedure below:
• Poll the EEPROM Program Enable bit (EEPE) in EEPROM Control Register (EECR) to make sure no other EEPROM operations are in process. If set, wait to clear.
• Set mode of programming by writing EEPROM Programming Mode bits (EEPM0 and EEPM1) in EEPROM Control Register (EECR). Alternatively, data can be written in one operation or the write procedure can be split up in erase, only, and write, only.
• Write target address to EEPROM Address Registers (EEARH/EEARL).
• Write target data to EEPROM Data Register (EEDR).
• Enable write by setting EEPROM Master Program Enable (EEMPE) in EEPROM Control Register (EECR). 
Within four clock cycles, start the write operation by setting the EEPROM 
Program Enable bit (EEPE) in the EEPROM Control Register (EECR). During the write 
operation, the CPU is halted for two clock cycles before executing the next instruction.
The EEPE bit remains set until the write operation has completed. 
While the device is busy with programming, it is not possible to do any other EEPROM operations.
Пример из даташита:
в моей редакции :ebiggrin:

Code: Select all

EEPROM_write:
; Wait for completion of previous write
    sbic 0x1C, 1
    rjmp EEPROM_write 
; Set Programming mode
    ldi   r16, (0<<5)|(0<<4)
    out 0x1C, r16
; Set up address (r17) in address registers
    out 0x1E, r17
; Write data (r18) to data register
    out 0x1D, r18
; Write logical one to EEMPE
    sbi 0x1C, 2
; Start eeprom write by setting EEPE
    sbi 0x1C, 1

Теперь ищем разницу :esmile:

1. Нужно установить режим программирования
ldi r16, (0<<EEPM1)|(0<<EEPM0)
out 0x1C, r16


ВСЕ !!! :rotate:
Konstantin18
Maniac
Posts: 325
Joined: 15 Jan 2019 15:48
Location: Украина, Луганская обл.

Re: Конверсия софта с AT90S1200 на attiny2313

Post by Konstantin18 »

И шо сказали ?
Ошибка на этапе компиляции или компилится, но не работает?
Konstantin18
Maniac
Posts: 325
Joined: 15 Jan 2019 15:48
Location: Украина, Луганская обл.

Re: Конверсия софта с AT90S1200 на attiny2313

Post by Konstantin18 »

Замените этот кусок

Code: Select all

EEPROM_write:
; Wait for completion of previous write
    sbic 0x1C, 1
    rjmp EEPROM_write 
на тупую 10 mS задержку.
User avatar
Icer
Senior
Posts: 163
Joined: 21 Aug 2018 07:39
Location: Кемеровская обл.

Re: Конверсия софта с AT90S1200 на attiny2313

Post by Icer »

rw6hrm wrote:компилится норм, но в работе, при нажатии на кнопки (обращение к п/п записи), чип улетает в небеса, выдавая произвольное число на индикацию, и виснет...
Похоже на срыв стека. Можете выложить исправленный вами код?
dvarkin
Fanat
Posts: 87
Joined: 05 Jul 2020 14:08
Location: Ижевск

Re: Конверсия софта с AT90S1200 на attiny2313

Post by dvarkin »

А зачем флагу приравнивать регистр?
User avatar
Icer
Senior
Posts: 163
Joined: 21 Aug 2018 07:39
Location: Кемеровская обл.

Re: Конверсия софта с AT90S1200 на attiny2313

Post by Icer »

dvarkin прав - "TOV0" это флаг и он уже в инклуде прописан и компилятор про это пишет.
.def TOV0 =r4; - это что то вроде команды автозамены
в тексте где встретится "TOV0" компилятор подставит "r4", что не верно

для установки флага нужно использовать команду

Code: Select all

sbi TIFR,TOV0
интересно так проканает?

Code: Select all

.def set_TOV0 = sbi TIFR,TOV0
не уверен что стоит устанавливать бит без таблицы прерываний
у вас в коде встречается такая конструкция

Code: Select all

mov TOV0,r18 // неверно
out 0x38,TOV0 // верно
у вас спортивный интерес (хотите добить сами прогу на асме) или нужно просто рабочую программу?
dvarkin
Fanat
Posts: 87
Joined: 05 Jul 2020 14:08
Location: Ижевск

Re: Конверсия софта с AT90S1200 на attiny2313

Post by dvarkin »

Очень сильно сомневаюсь, что дело (было) в ненадёжности ATTiny.
И разве поведение с пальцем не означает недостаток pull up? КМОП входы, как никак.

Кстати, некоторое время уже посматриваю на частотомер с ВЕ31 и ИВ-28. (ред.: не ИВ-18, хотя на нём тоже какой-то похожий есть).
Last edited by dvarkin on 23 Jul 2020 00:00, edited 1 time in total.
User avatar
Icer
Senior
Posts: 163
Joined: 21 Aug 2018 07:39
Location: Кемеровская обл.

Re: Конверсия софта с AT90S1200 на attiny2313

Post by Icer »

rw6hrm wrote:Просто пролетающий мимо палец (ёмкость) уже даёт сбой.
Входа подтянуть резюками 5-10кОм.
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Re: Конверсия софта с AT90S1200 на attiny2313

Post by VituZz »

dvarkin wrote:Кстати, некоторое время уже посматриваю на частотомер с ВЕ31 и ИВ-18.
Из "Радиолюбителя"? Есть прошивка ПЗУ?
dvarkin
Fanat
Posts: 87
Joined: 05 Jul 2020 14:08
Location: Ижевск

Re: Конверсия софта с AT90S1200 на attiny2313

Post by dvarkin »

Icer wrote:Входа подтянуть резюками 5-10кОм.
Или хотя бы проверить, включены ли internal pull up.

Прошивка частотомера должна быть и в самом журнале, но много материала по ЧМ я вижу и здесь, например.
Konstantin18
Maniac
Posts: 325
Joined: 15 Jan 2019 15:48
Location: Украина, Луганская обл.

Re: Конверсия софта с AT90S1200 на attiny2313

Post by Konstantin18 »

rw6hrm wrote: придётся перейти на PIC, они гораздо стабильнее в работе в жёстких условиях.
:exclaim: :exclaim: :exclaim:
СТОПУДОВО
:dj:
dvarkin
Fanat
Posts: 87
Joined: 05 Jul 2020 14:08
Location: Ижевск

Re: Конверсия софта с AT90S1200 на attiny2313

Post by dvarkin »

Konstantin18 wrote:
rw6hrm wrote: придётся перейти на PIC, они гораздо стабильнее в работе в жёстких условиях.
:exclaim: :exclaim: :exclaim:
СТОПУДОВО
:dj:
:o :o :o
ПОЯСНИТЕ
:neutral:
Konstantin18
Maniac
Posts: 325
Joined: 15 Jan 2019 15:48
Location: Украина, Луганская обл.

Re: Конверсия софта с AT90S1200 на attiny2313

Post by Konstantin18 »

Многолетний опыт эксплуатации готовых конструкций (собственной разработки, если что :esmile: )
показывает гораздо более высокую надежность и помехоустойчивость MICROCHIP в сравнении с ATMEL.
Сравнивались 8 битные контроллеры.
10 миллиметровая искра на расстоянии 10 см. от контроллера гарантировано "сбивает с толку" 8ю МЕГУ, а 16й ПИК работает без проблем.
dvarkin
Fanat
Posts: 87
Joined: 05 Jul 2020 14:08
Location: Ижевск

Re: Конверсия софта с AT90S1200 на attiny2313

Post by dvarkin »

Сравнивались 8 битные контроллеры.
Конечно же хочется узнать подробные условия испытаний. "Сбивает с толку" может означать частый неконтролируемый сброс? Был ли активирован /MCLR на ПИКе?
В любом случае, проблемы ТС вряд ли в надёжности.
Konstantin18
Maniac
Posts: 325
Joined: 15 Jan 2019 15:48
Location: Украина, Луганская обл.

Re: Конверсия софта с AT90S1200 на attiny2313

Post by Konstantin18 »

dvarkin wrote:
Сравнивались 8 битные контроллеры.
Конечно же хочется узнать подробные условия испытаний.
Извините, подробно описывать лениво. Методика испытаний не была строго научной. :ebiggrin:
dvarkin wrote:"Сбивает с толку" может означать частый неконтролируемый сброс? Был ли активирован /MCLR на ПИКе?
именно "частый неконтролируемый сброс", а при длительном воздействии ( часами ) искажение памяти программ в Flash контроллера
dvarkin wrote: В любом случае, проблемы ТС вряд ли в надёжности.
Полностью согласен.