Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATxmega
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3, 4, 5, 6, 7
Kovrov
Цитата(Склихасовский @ Dec 24 2009, 21:45) *
бит Bit 2 - ACKACT: Acknowledge Action установлен в 1, после чего подается команда xx10 (Execute Acknowledge Action succeeded by a byte receive)
но ничего не передается - не принимается...

Юзайте команду 0bxxxxxx11.
Serj78
Цитата(ZVA @ Nov 14 2009, 16:01) *
2. Проверены собственные шумы АЦП в таком режиме для двух вариантов:
- выводы АЦП в диф. включении были замкнуты между собой резистором 2К и никуда не подключались, АЦП крутился в free run режиме и значения считывались асинхронно и передавались по RS485 в PC. Кроме этого в прерываниях от таймера формировалась пила на ЦАПе и моргал тестовый светодиод. Кроме собственно значений АЦП в RS485 передавались значения после фильтрации. Фильтр экспоненциальный(две строчки на С), я его обычно использую во всех задачах измерения постоянных сигналов.
Результаты без коментариев даны на рис.1

Выводы, плохой камень или нет, делайте сами.


Если вас не затруднит, испытайте пожалуйста, шумы ацп в не дифферециальном включении от хорошего опорника. с rc фильтром.
Я думаю, общественности будет интересно.

Я делал такие измерения для STM32F103R8 , для анализа линейности оверсемлинга, результатом остался доволен.
Из массива полученных данных я строю диаграмму в экселе- распределение вероятности.
По вертикальной оси сколько раз значение встречается в процентах от всей выборки, по горизонтальной оси- сами значения. При "правильной" работе АЦП должно получаться гауссовское распределение.

Я строил такие диаграммы для разных настроек ацп- частоты и времени выборки.
Как ни странно высокая(12Мгц) частота и малое время выборки (3мкс) ацп давала самые малошумящие значения, всего +-1 разряд на выборку из 3000 значений.
Но для увеличения линейности оверсемплинга лучше было уменьшать частоту до 9 Мгц и немного поднимать время выборки- - тогда значения размазывались на +-3, и после фильтрации линейность возрастала.
Шум (dithering) специально не подмешивал.
vitek101
Подскажите, пожалуйста... Область памяти, которая называется таблицей приложения. В даташите написано, что если не хранить в ней данные, то ее можно использовать под приложение. Так вот, как узнать, использую ли я ее для хранения данных? Другими словами, чтоб хранить в ней данные надо это каким-то особенным образом объявить? А если я этого не знаю, то я ее и не использую? И если я правильно понимаю все вышесказанное, то приложение можно расширить до 136КБ? А из бутлоадера эта область доступна?

Или эта таблица входит в 128КБ памяти программ?
Duhas
по идее входит в 128 )
ivainc1789
Почитал на досуге еррату на ATxmega32A4 и ужаснулся: использовать ревизию А с такими ошибками и недоработками просто стремно, плюс еще скока вылезет неожиданно... Вроде ревизий позднее А еще нет и не скоро будет...
sonycman
Цитата(ivainc1789 @ Jan 3 2010, 00:03) *
Почитал на досуге еррату на ATxmega32A4 и ужаснулся: использовать ревизию А с такими ошибками и недоработками просто стремно, плюс еще скока вылезет неожиданно... Вроде ревизий позднее А еще нет и не скоро будет...

ЧТо-же там такого страшного?
Можно например?
ivainc1789
Цитата(sonycman @ Jan 3 2010, 01:15) *
ЧТо-же там такого страшного?
Можно например?
Так там же все написано. Просто вложили крутую периферию и тут же ее "ограничили". Особенно удручают ошибки в ADC, DAC и BOD. Ну как можно было выпускать кристалл, у которого ADC "не умеет" работать выше 2.4V, а дифф входы вообще имеют диапазон обратно пропорциональный усилению??? Это выглядит даже как-то несерьезно, что ли... Лучше бы задержали релиз на пару месяцев, не позорились...
MDD
Цитата(ivainc1789 @ Jan 3 2010, 01:01) *
ADC "не умеет" работать выше 2.4V, а дифф входы вообще имеют диапазон обратно пропорциональный усилению???


А как Вы хотели иначе с диапазоном диффвходов? Там имеется ввиду дифференциальное напряжение. Естественно чем больше усиление, тем меньше допустимый максимальный сигнал на входе. Кстати, здесь в теме кто-то проверял синфазное напряжение, вроде работает до тех же 2.4В.
А вот померить Vсс напрямую похоже уже никогда не удастся. В последней версии даташита появилось максимальное значение для Vref=Vcc-0.6V. Это конечно неудобно.
А вообще, даже с такой ерратой жить можно. Многие обещанные фичи там весьма приятны и сделаны изначально прямо smile.gif
MDD
А не пробовал ли кто-нибудь встроенный температурный сенсор? Не скажу, что много от него хотел бы. Но в качестве показометра не помешал бы. В даташитах этот сенсор описан крайне скупо. В атмеловском сапорте на вопрос о типовых характеристиках молчат как партизаны.
Попробовал включить "втемную" - намеряет напряжение около 0.6В. Можно было бы предположить, что это обычный диод. Но вот незадача - при изменении температуры с +20 до -10 показания практически не меняются. При этом в калибровочных байтах что-то записано, причем значения разные для разных чипов. Может я что-нибудь упустил...
Spider
Цитата
An internal temperature reference is available. Measuring the voltage on this will give an ADC
result representing the current temperature in the microcontroller. The temperature, T, is given
as:
T = TBD ⋅ ADCRESULT + TBD

А вот кто такой TBD я что-то не понял...
МП41
Цитата(Alexey Belyaev @ Jan 28 2010, 15:50) *
А вот кто такой TBD я что-то не понял...

TBD (сокр. от To Be Determined) = подлежит определению. Короче, в следующих ревизиях значение возможно появится.
MDD
С температурным сенсором ситуация начинает проясняться. Оказывается я малость протупил - кроме переключения мультиплексора этот сенсор еще надо включать специальным битом в регистре REFCTRL.
А тут и ответ от Atmel подоспел:
Цитата
The internal temperature sensor is ideally linear from 0°K to the measured value in the production. The temperature reference value in the signature row which the measurement is done at is 85°C (358°K) but with an inaccuracy of +- 5 degrees. This deviation will result in some error when measuring at other temperatures. The measurement stored in the signature row is done in unsigned mode with 12-bit resolution and the internal 1V reference. The ADC setup has to be the same if this value is going to be used in the application. The stored value can be used for a 2-point calibration where the second point will be 0°K and the ADC value will be 0.
vasya1
Добрый день. Кто нибудь работал с таймерами. Я использую Xmegу 128A и появился вопрос. Когда включаю таймер/счетчик в режиме захвата(настраиваю на событие по появлению фронтов с пина), то удается работать только с каналом A. На остальных(B, C и D) прерываний не возникает. Может так и должно быть, но в datasheet ничего не нашел?
МП41
Кто-нибудь работал с внешней SRAM на Xmega? До конца не понятно, сигнал ALE инвертированный или нет. Если да, то что вместо регистра-защёлки типа 573 можно использовать? Инвертор на ALE лепить не хочется.
Spider
Ничего не надо. Подключал на прямую.
Код
// Initialize EBI.
    EBI_Enable( EBI_SDDATAW_8BIT_gc,
                EBI_LPCMODE_ALE1_gc,
                EBI_SRMODE_NOALE_gc,
                EBI_IFMODE_3PORT_gc );

    // Initialize SRAM
    EBI_EnableLPC ( &EBI.CS1,               // Chip Select 1.
                    EBI_CS_ASPACE_128KB_gc, // 128 KB Address space.
                    (void *) SRAM_ADDR,     // Base address.
                    EBI_CS_SRWS_0CLK_gc );
MDD
Цитата(МП41 @ Jan 29 2010, 15:35) *
Инвертор на ALE лепить не хочется.


Кстати, на портах Хмеги есть такая фича, как Inverted I/O. Включается соответствующим битом в регистрах PINnCTRL. Если посмотреть на структурную схему портов, то она должна действовать и на альтернативные функции портов. Сейчас ради интереса проверил на COM порте - инвертирует! А ведь иногда это действительно удобно.
МП41
Alexey Belyaev, 573 использовали?
MDD, инверсию на портах видел, но то, что она действует - хорошая новость.
Zlumd
Обновились даташиты для XMega128A1
http://www.atmel.com/dyn/products/product_...sp?part_id=4298
Zlumd
Никак не могу понять, может ли EBI тактироваться тактовой частотой 64 MHz.
С одной стороны в мануале на Xмегу на странице 268 написано:
Цитата
The EBI is clocked from the Fast Peripheral clock, running up to two times faster than the CPU and supporting speeds of up to 64 MHz.
Но с другой стороны в даташите на XMega128A1 в эл. характеристиках на странице 69 написано, что ClkSYS 32 MHz максимум. И если взглянуть на схему распределения тактовых сигналов в мануале на Xмегу на странице 77, то видно, что единственный PLL стоит до ClkSYS и вроде бы больше неоткуда взять удвоенную частоту.
И еще в мануале на Xмегу на странице 270 упоминается сигнал Clk2PER, которого нет на схеме дистрибуции клока. Мне интересно, Atmel просто перепутал и вместо ClkPER2 написал Clk2PER, или сигнал Clk2PER действительно существует, но просто нигде не описан?
Зайцев Иван
Всем доброго дня
Начал юзать Xmegu. С портами проблем не возникло
А вот с UART затык
Привожу код

Код
#define    CPU_FREQ                2000000
#define    BAUD_RATE                9600
#define BRREG_VALUE                12

// definition for UART control
#define UART_PORT                PORTF
#define UART_TX_PIN                PIN7_bm
#define BAUD_RATE_LOW_REG        USARTF1.BAUDCTRLA
#define UART_CONTROL_REG        USARTF1.CTRLB
#define ENABLE_TRANSMITTER_BIT    USART_TXEN_bp
#define ENABLE_RECEIVER_BIT        USART_RXEN_bp
#define UART_STATUS_REG            USARTF1.STATUS
#define TRANSMIT_COMPLETE_BIT    USART_TXCIF_bp
#define DATA_REG_EMPTY_BIT        USART_DREIF_bp
#define RECEIVE_COMPLETE_BIT    USART_RXCIF_bp
#define UART_DATA_REG            USARTF1.DATA

/******************************************************************************
* Функция            :
* Описание            :
* Вх. параметры    :
* Возвр. значение    :
*****************************************************************************/
void UART_Init(void)
     {
       UART_PORT.DIRSET |= UART_TX_PIN;
       BAUD_RATE_LOW_REG = BRREG_VALUE;
       UART_CONTROL_REG  = (1<<ENABLE_RECEIVER_BIT)|
                           (1<<ENABLE_TRANSMITTER_BIT);
     }
/******************************************************************************
* Функция            :
* Описание            :
* Вх. параметры    :
* Возвр. значение    :
*****************************************************************************/
void UART_Tx(u08 D)
     {
       UART_DATA_REG = D;
       while(!(UART_STATUS_REG &(1<<TRANSMIT_COMPLETE_BIT)));
       UART_STATUS_REG |= (1<<TRANSMIT_COMPLETE_BIT);
     }
/******************************************************************************
* Функция            :
* Описание            :
* Вх. параметры    :
* Возвр. значение    :
*****************************************************************************/
u08  UART_Rx(void)
     {
       u08 ret=0;
       while(!(UART_STATUS_REG&(1<<RECEIVE_COMPLETE_BIT)));
       //while(bit_is_clear());
       ret = UART_DATA_REG;
       return ret;
     }


int main(void)
     {
       u08 val=0;
      
       //PORTF.DIR = (1<<6) | (1<<7);
       //PORTF.OUT = (1<<6) | (1<<7);
      
       UART_Init();
       for(;;)
         {
          
           val = UART_Rx();
           if(val=='a')
             {
               UART_Tx('Y');
             }
           else if(val=='A')
             {
               UART_Tx('N');
             }
          
           //UART_Tx('*');
         }
     }

Прошиваю и получаю тиши
Мож я не доконча вкулил мануал?
Прошу помочь
MDD
USART работает нормально и по опросу, и по прерываниям.
Как по мне, у Вас в инициализации не хватает установки регистра USARTx.CTRLC для задания протокола. Например, для асинхронного 8N1 там дожно быть 0x03.
Зайцев Иван
Цитата(MDD @ Feb 3 2010, 15:05) *
USART работает нормально и по опросу, и по прерываниям.
Как по мне, у Вас в инициализации не хватает установки регистра USARTx.CTRLC для задания протокола. Например, для асинхронного 8N1 там дожно быть 0x03.

Спасибо
Зайцев Иван
Начал работать с EBI, и впал в ступор.
Задумка следующая - прицепить циклок как внешкюю память
По мануалу есть режим без использования адресной защелки ALE


По ногам получаеться следующее:
PH0 WE
PH1 RE
PH2 ALE - не использую
PH3
PH4 CS0/A16
PH5 CS1/A17
PH6 CS2/A18
PH7 CS3/A19

PJ0..PJ7 -> D0..D7
PR0..PR7 -> A0..A7/A8..A15

а вот с конфигурированием регистров встал...
ALE должен использоваться всегда получаеться
Zlumd
Цитата(Зайцев Иван @ Feb 5 2010, 16:09) *
Начал работать с EBI, и впал в ступор.
Задумка следующая - прицепить циклок как внешкюю память
а вот с конфигурированием регистров встал...
ALE должен использоваться всегда получаеться
Если ALE не использовать, то можно адресовать максимум 256 байт внешней SRAM. А у тебя SRAM какого размера?
Зайцев Иван
Так мне и не надо пока много
суть такая что к плисине цепляеться 6 АЦП, которые непрывно молотят данные
И эти данные складыаються в внтренюю память плисины
Zlumd
Цитата(Зайцев Иван @ Feb 5 2010, 17:11) *
Так мне и не надо пока много
суть такая что к плисине цепляеться 6 АЦП, которые непрывно молотят данные
И эти данные складыаються в внтренюю память плисины
Ну и каков размер памяти внутренней плисины? Больше или меньше 256 байт?
Зайцев Иван
6 каналов х 16бит = 256 байт
Zlumd
Цитата(Зайцев Иван @ Feb 5 2010, 17:19) *
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;
Склихасовский
Вопрос по поводу софтового программирования 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 - если правильно понял
так похожая проблема - решается введением проц в идле режим.
V_G
А у вас STSI - макрос какой-то? Там ведь жесткие временные рамки между записью в регистр защиты и выполнением SPM!
Я весь ваш текст не штудировал, но вот кусок из моего рабочего бутлоадера

CODE
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
Склихасовский
STSI =
LDI temp,@0
sts @1,temp
Чтоб лишнее не писать...
В вашем коде есть место:
ldi r16, NVM_CMD_WRITE_APP_PAGE_gc
STS NVM_CMD,r16
RCALL _WAIT_FOR_SPM
Даете команду запись страницы в область апликухи
после чего !!! Ждете готовности NVM контроллера
у меня этого нет- с чем это свзяано?
может в этом фатал?
V_G
Цитата(Склихасовский @ Feb 18 2010, 15:22) *
Даете команду запись страницы в область апликухи
после чего !!! Ждете готовности NVM контроллера
у меня этого нет- с чем это свзяано?
может в этом фатал?

Сейчас не вспомню, быстрее Вам наверное, попробовать.
Единственно, второе ожидание у меня идет под меткой Do_SPM, и у меня туда идут ссылки из нескольких мест. А в любом случае перед SPM надо подождать завершений всех операций NVM.
Это тянется у меня еще с бутлоадера Меги32, пример софта на ассемблере еще тогда висел на атмеле (сейчас все эти дела снабжаются примерами на Си).

Да, и еще рекомендуют прерывания запретить во время таких операций. У меня в бутлоадере они запрещены постоянно, а у Вас?
Склихасовский
нет прерывания разрешены, но это не для бут лодыря,
Просто хочу сохранять таблицу в 1 килобайт в области флеш памяти. Вот и все желание
Да вот ещё что.... У вас кристалл какой?
Дело в том что на А3 - в еррате нехорошие моменты написаны на этот счет..
Сейчас попробую с ожиданием готовности...
V_G
1. Прерывания хотя бы на время прошивки флэша стоит запретить
2. Atxmega32A4
3. Почитайте повнимательней заметки-инструкции по прошивке флэша. Там, по моему, application перепрошивать можно только из bootloader section. Хотя могу ошибаться, не вникал. И еще во флэше application table есть, там тоже наверное, свои правила есть, в них тоже не вникал
Склихасовский
Прерывания запретил пытаюсь стирать командой
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 команд работы с флешем напрямую я не нашел...
Склихасовский
Цитата(V_G @ Feb 18 2010, 10:43) *
Там, по моему, application перепрошивать можно только из bootloader section. Хотя могу ошибаться, не вникал. И еще во флэше application table есть, там тоже наверное, свои правила есть, в них тоже не вникал

Да в этом и были мои грабли :-)
пытался стереть страничку - в программной секции , причем код был там же
когда перенёс код в боот секцию - прграммная начала без проблем стираться - писаться..
Только не получилось стереть странички в боот секции находясь в программной секции. комнада NVM_CMD_ERASE_BOOT_PAGE_gc
;
Кстати ждать готовности после отправки команды на стирание или запись не обязательно. Прерывания запрещеть тоже. все и так работает.
;
Посему остался один затык на стриание боот секции.
V_G
Цитата(Склихасовский @ Feb 19 2010, 00:28) *
Посему остался один затык на стриание боот секции.

А это принципиально, или так, ради науки? Где-то на здесь форуме по boot-секции кто-то отписывался.
По-любому лучше внимательно почитать мануал, причем последнюю версию (бывает, что-то новенькое и интересное добавляют). У меня скачанный с Атмела мануал от 12/09 на 445 страниц.
Ну, и на application table во флэше там посмотрите. Если требуется сохранять данные, а не перепрошивать программу, то table, по-моему, как раз для этого дела.

Да, и этот мануал общий для всех xmeг, так что версия чипа вроде как не очень принципиальна.
saniok
Добрый день.
Извините за возможно ламерский вопрос, но явно упоминаний не нашел нигде:
Хочу попробовать использовать микроконтроллер atxmega 128a1, в наличии имею jtag ice mkI (первый который на com) последняя avrstudio вроде как поддерживает эту микросхему только с jtag ice mkII ну и dragon вроде бы.
Но я собираюсь использовать IAR, там отдельно можно выбрать и первый дебагер и процессор указать xmega 128.
Смогу ли я зашить xmega моим дебагером... а может даже и отладка заработает вдруг ? rolleyes.gif
Скорость не принципиальна в настоящий момент, интересует вообще возможно ли это ?

Спасибо.
SAWushka
Цитата(saniok @ Mar 15 2010, 21:29) *
Смогу ли я зашить xmega моим дебагером...

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

Для отладки только: AVR Dragon; AVR JTAGICE mkII или AVR ONE
Для программирования AVRISP mkII
Кроме того можно собрать клон
Плюс автор этого программатора обещал что будет поддержка xmega, но прошивки пока что не выложил.
Склихасовский
Такое наблюдение.
кристалл XMEGA 32 A4
наблюдаю нестабильную работу (слишком слабая амплитуда генерации) с внешним кварцем 16,000 мгц.
Конденсаторы в обвязке ставил от 7 пф... 29 пф... (10 пф навернное оптимал - что соответсвует ДШ)
Характер генерации оличается на разных кристаллах одной серии. на некторых набюлюдаю низкочастотную составляющую.
грязь, непромыв итд исключен.
сам кварц менял (правда из одной партии) - но на обычных мегах, амплитуда генерации всё ок.
с 8,000 никаких проблем.
никто не сталкивался?
МП41
А чем смотрели? И как вообще обнаружилось, что проблема с кварцем?
P.S. Жду свои ATXmega32A4.
Duhas
а на кой вам кварц на 16? ставьте 8 и радуйтесь...
V_G
Биты FRQRANGE, XOSCSEL в XOSCCTRL выставили для 16 МГц? Я помню, и для простой меги надо было выставлять полную амплитуду для такой частоты.
Еще Appnote AVR1003 стоит почитать для этого дела. Сам, правда, не вникал, у меня либо внешний источник 18.432 МГц, либо встроенный генератор.
MDD
Цитата(Склихасовский @ Mar 25 2010, 16:11) *
кристалл XMEGA 32 A4
наблюдаю нестабильную работу (слишком слабая амплитуда генерации) с внешним кварцем 16,000 мгц.


Имел дело с кристаллами выпуска 0922 и 0925.
Проблем со стабильностью на 16МГц не возникало. Кварц GEYER KX-3H. Конденсаторы 20пФ.
Сигнал на кварце за ненадобностью не изучал.
МП41
Из-за входной ёмкости осциллографа размах мог упасть.
Склихасовский
Цитата(МП41 @ Mar 25 2010, 17:59) *
А чем смотрели? И как вообще обнаружилось, что проблема с кварцем?
P.S. Жду свои ATXmega32A4.

смотрел осцилографом - сравнивая амплитуды с мегой.
разница более чем в 5 раз
обнаружилось супернестабильностью - даже при прикосновении пальцем к кварцу - полный сбой в генерации.
на 8 мгц все идеально.
зануление корпуса кварца несколько решает проблему, но все равно допускать в работу такое устройство нельзя.
---


Цитата(V_G @ Mar 26 2010, 08:30) *
Биты FRQRANGE, XOSCSEL в XOSCCTRL выставили для 16 МГц? Я помню, и для простой меги надо было выставлять полную амплитуду для такой частоты.
Еще Appnote AVR1003 стоит почитать для этого дела. Сам, правда, не вникал, у меня либо внешний источник 18.432 МГц, либо встроенный генератор.

да все стоит, помимо прочего, долгое время игрался с настройками в это секции
на всяк случай код

Код
;*********************************************************
; set XOSC Control Register
    STSI    OSC_XOSCCTRL,0B11001011;Oscillator frequency range selection + External Oscillator selection and Startup Time
;*********************************************************
; SET CTRL - Oscillator Control Register
    LDS        TEMP,OSC_CTRL;; //Кварц(12-16),16К циклов
    ORI        TEMP,0x08
    STS        OSC_CTRL,TEMP
; WAIT READY osc
W_OSC_READY:
    LDS        TEMP,OSC_STATUS
    SBRS    TEMP,3
    RJMP    W_OSC_READY
;*********************************************************
    STSI    OSC_PLLCTRL,0B11000010; PLL=x2
;*********************************************************
    LDS        TEMP,OSC_CTRL;//Включаем PLL
    ORI        TEMP,$10
    STS        OSC_CTRL,TEMP
;
W_PLL_READY:
    LDS        TEMP,OSC_STATUS
    SBRS    TEMP,4
    RJMP    W_PLL_READY
;
; ENABLE MODIFI PROTECTED I\O REGISTER
    STSI    CPU_CCP,0xD8; ENABLE PROTECTED IO

; SET System Clock Control Register
    STSI    CLK_CTRL,0B00000100; PLL CLOCK
;
    STSI    OSC_CTRL,0x18        ;выключаем все генераторы, кроме кварца и PLL


Цитата(МП41 @ Mar 26 2010, 10:13) *
Из-за входной ёмкости осциллографа размах мог упасть.

да я это отлично понимаю - отдаю себе отчет..


Цитата(MDD @ Mar 26 2010, 09:45) *
Проблем со стабильностью на 16МГц не возникало. Кварц GEYER KX-3H. Конденсаторы 20пФ.
Сигнал на кварце за ненадобностью не изучал.

вот как раз вчера заказл именно такие для пробы...
V_G
А после приведенного кода (криминала я не увидел) на эмуляторе наблюдали, все реально выставилось?
Ежели нет эмулятора, надо как-то постараться прочитать те регистры, хоть тестовой прогой через компорт или параллельный. В хmege вечно какие-то защиты включаются...
Склихасовский
В режиме отладки все выставленные настройки соответствуют...
пока работаю на 8 МГЦ х 4
есть кристаллы из недавне привезенной партии взял 100 штук
на след изделиях попробую...
хотя хочу верить, что может проблема в кварцах...
MDD
Цитата(Склихасовский @ Mar 26 2010, 09:27) *
обнаружилось супернестабильностью - даже при прикосновении пальцем к кварцу - полный сбой в генерации.

Подобное я наблюдал на ATxmega128A1, когда она у меня была распаяна проводками на макетке. При касании корпуса кварца генерация полностью не срывалась, но каким-то образом модулировалась сетью. Все сигналы, которые генерировал контроллер, начинали "размазываться", а в звуковом сигнале отчетливо было слышно гудение...
Ничего подобного на двухслойной печатной плате с ATxmega32 не наблюдаю. Корпус кварца не заземлен, но с обратной стороны платы под ним есть земляной полигон.
МП41
У меня эффект, подобный возникающему у MDD, был на ATmega8, но касался я уже не корпуса, а прямо выводов кварца, чтобы проверить "устойчивость" генератора. При приличном усилии генерация останавливалась, но это вполне нормально в моём случае.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.