Jump to content
    

Так мне и не надо пока много

суть такая что к плисине цепляеться 6 АЦП, которые непрывно молотят данные

И эти данные складыаються в внтренюю память плисины

Ну и каков размер памяти внутренней плисины? Больше или меньше 256 байт?

Share this post


Link to post
Share on other sites

6 каналов х 16бит = 256 байт
Вообще-то 6 каналов х 16бит = 6 каналов х 2 байта = 12 байт

Но в любом случае вот так вроде надо конфигурировать:

 EBI.CTRL = EBI_LPCMODE_ALE1_gc | EBI_SRMODE_NOALE_gc | EBI_IFMODE_3PORT_gc;
EBI.CS2.CTRLB = EBI_CS_SRWS_0CLK_gc;
EBI.CS2.BASEADDR = ( BASE_ADDR >>8)&0xFFF0;
EBI.CS2.CTRLA = EBI_CS_ASPACE_256B_gc | EBI_CS_MODE_SRAM_gc;

Share this post


Link to post
Share on other sites

Вопрос по поводу софтового программирования FLASH памяти

не могу заставить NVM контроллер ни то что записать - стреть не могу.

 

Хочу держать кило таблицы в памяти программ Xmega128a3

3 часа бъюсь? ни каких реакций от контроллера NVM

Для теста пытаюсь тупо очистить страницу памяти по адресу 0 (пускай затрет код - мне для теста)

---------------

.macro wait_nvm
_wait_nvm:
lds temp,NVM_STATUS
sbrc temp,NVM_NVMBUSY_bp
rjmp _wait_nvm
stsi NVM_CMD,0
.endm
--------------
Код
LDZ 0X0000; addr page
CLR TEMP
OUT CCP_RAMPZ,TEMP
WAIT_NVM
STSI NVM_CMD,$2b;NVM_CMD_ERASE_WRITE_FLASH_PAGE_gc;2F
STSI CPU_CCP,CCP_SPM_gc
SPM 
RET

--------------

И тишина - не пишет не стирает ничего!!!

Контролирую все это дело из студии - есть сомнение:

а рельно ли в окне PROGRAM данные берутся из камня?

может тупо из хекса идет отбражение?

---------

Вот ещё полистал, как всегда в последнюю очередь, ERRATA

правда вроде касается xmega256а3 - если правильно понял

так похожая проблема - решается введением проц в идле режим.

Edited by Склихасовский

Share this post


Link to post
Share on other sites

А у вас STSI - макрос какой-то? Там ведь жесткие временные рамки между записью в регистр защиты и выполнением SPM!

Я весь ваш текст не штудировал, но вот кусок из моего рабочего бутлоадера

 

WriteFlashPage:
RCALL	_WAIT_FOR_SPM
RCALL	Word2ByteAddr
ldi 	r16, NVM_CMD_WRITE_APP_PAGE_gc
STS	NVM_CMD,r16
RCALL	_WAIT_FOR_SPM
LDI	r16,CCP_SPM_gc
STS	CPU_CCP,r16		
spm

Edited by V_G

Share this post


Link to post
Share on other sites

STSI =

LDI temp,@0

sts @1,temp

Чтоб лишнее не писать...

В вашем коде есть место:

ldi r16, NVM_CMD_WRITE_APP_PAGE_gc

STS NVM_CMD,r16

RCALL _WAIT_FOR_SPM

Даете команду запись страницы в область апликухи

после чего !!! Ждете готовности NVM контроллера

у меня этого нет- с чем это свзяано?

может в этом фатал?

Edited by Склихасовский

Share this post


Link to post
Share on other sites

Даете команду запись страницы в область апликухи

после чего !!! Ждете готовности NVM контроллера

у меня этого нет- с чем это свзяано?

может в этом фатал?

Сейчас не вспомню, быстрее Вам наверное, попробовать.

Единственно, второе ожидание у меня идет под меткой Do_SPM, и у меня туда идут ссылки из нескольких мест. А в любом случае перед SPM надо подождать завершений всех операций NVM.

Это тянется у меня еще с бутлоадера Меги32, пример софта на ассемблере еще тогда висел на атмеле (сейчас все эти дела снабжаются примерами на Си).

 

Да, и еще рекомендуют прерывания запретить во время таких операций. У меня в бутлоадере они запрещены постоянно, а у Вас?

Share this post


Link to post
Share on other sites

нет прерывания разрешены, но это не для бут лодыря,

Просто хочу сохранять таблицу в 1 килобайт в области флеш памяти. Вот и все желание

Да вот ещё что.... У вас кристалл какой?

Дело в том что на А3 - в еррате нехорошие моменты написаны на этот счет..

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

Share this post


Link to post
Share on other sites

1. Прерывания хотя бы на время прошивки флэша стоит запретить

2. Atxmega32A4

3. Почитайте повнимательней заметки-инструкции по прошивке флэша. Там, по моему, application перепрошивать можно только из bootloader section. Хотя могу ошибаться, не вникал. И еще во флэше application table есть, там тоже наверное, свои правила есть, в них тоже не вникал

Share this post


Link to post
Share on other sites

Прерывания запретил пытаюсь стирать командой

NVM_CMD_ERASE_FLASH_PAGE_gc

толку 0

    WAIT_NVM
    ldz        0
    clr        temp
    out        cpu_rampz,temp
    cli
    STSI    NVM_CMD,NVM_CMD_ERASE_FLASH_PAGE_gc  ;NVM_CMD_ERASE_APP_PAGE_gc; $2b;NVM_CMD_ERASE_WRITE_FLASH_PAGE_gc;2F
    wait_nvm
    STSI    CPU_CCP,CCP_SPM_gc
    SPM
    sei    
    RET

что характерно - в A1 команд работы с флешем напрямую я не нашел...

Edited by Склихасовский

Share this post


Link to post
Share on other sites

Там, по моему, application перепрошивать можно только из bootloader section. Хотя могу ошибаться, не вникал. И еще во флэше application table есть, там тоже наверное, свои правила есть, в них тоже не вникал

Да в этом и были мои грабли :-)

пытался стереть страничку - в программной секции , причем код был там же

когда перенёс код в боот секцию - прграммная начала без проблем стираться - писаться..

Только не получилось стереть странички в боот секции находясь в программной секции. комнада NVM_CMD_ERASE_BOOT_PAGE_gc

;

Кстати ждать готовности после отправки команды на стирание или запись не обязательно. Прерывания запрещеть тоже. все и так работает.

;

Посему остался один затык на стриание боот секции.

Edited by Склихасовский

Share this post


Link to post
Share on other sites

Посему остался один затык на стриание боот секции.

А это принципиально, или так, ради науки? Где-то на здесь форуме по boot-секции кто-то отписывался.

По-любому лучше внимательно почитать мануал, причем последнюю версию (бывает, что-то новенькое и интересное добавляют). У меня скачанный с Атмела мануал от 12/09 на 445 страниц.

Ну, и на application table во флэше там посмотрите. Если требуется сохранять данные, а не перепрошивать программу, то table, по-моему, как раз для этого дела.

 

Да, и этот мануал общий для всех xmeг, так что версия чипа вроде как не очень принципиальна.

Share this post


Link to post
Share on other sites

Добрый день.

Извините за возможно ламерский вопрос, но явно упоминаний не нашел нигде:

Хочу попробовать использовать микроконтроллер atxmega 128a1, в наличии имею jtag ice mkI (первый который на com) последняя avrstudio вроде как поддерживает эту микросхему только с jtag ice mkII ну и dragon вроде бы.

Но я собираюсь использовать IAR, там отдельно можно выбрать и первый дебагер и процессор указать xmega 128.

Смогу ли я зашить xmega моим дебагером... а может даже и отладка заработает вдруг ? :rolleyes:

Скорость не принципиальна в настоящий момент, интересует вообще возможно ли это ?

 

Спасибо.

Share this post


Link to post
Share on other sites

Смогу ли я зашить xmega моим дебагером...

Нет, не сможете.

 

Для отладки только: AVR Dragon; AVR JTAGICE mkII или AVR ONE

Для программирования AVRISP mkII

Кроме того можно собрать клон

Плюс автор этого программатора обещал что будет поддержка xmega, но прошивки пока что не выложил.

Share this post


Link to post
Share on other sites

Такое наблюдение.

кристалл XMEGA 32 A4

наблюдаю нестабильную работу (слишком слабая амплитуда генерации) с внешним кварцем 16,000 мгц.

Конденсаторы в обвязке ставил от 7 пф... 29 пф... (10 пф навернное оптимал - что соответсвует ДШ)

Характер генерации оличается на разных кристаллах одной серии. на некторых набюлюдаю низкочастотную составляющую.

грязь, непромыв итд исключен.

сам кварц менял (правда из одной партии) - но на обычных мегах, амплитуда генерации всё ок.

с 8,000 никаких проблем.

никто не сталкивался?

Share this post


Link to post
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...