Форум РадиоКот https://radiokot.ru/forum/ |
|
Новый ARM Atmel Cortex-M0+ ATSAMD20 https://radiokot.ru/forum/viewtopic.php?f=59&t=97708 |
Страница 1 из 8 |
Автор: | Frogfot [ Пт дек 06, 2013 18:27:10 ] |
Заголовок сообщения: | Новый ARM Atmel Cortex-M0+ ATSAMD20 |
Народ здарова! В качестве приобретения опыта по работе с ARM начал курить новый Atmel-овский чип ATSAMD20. Линк на чип: http://www.atmel.com/ru/ru/products/mic ... m_d20.aspx Благо нашару досталась демоборда с программатором - Вложение: Линк на девайсину: http://store.atmel.com/PartDetail.aspx? ... escription В качестве среды разработки нужна AVR Studio 6.1 SP2, после 4.18/4.19 - куча нововведений и размер увеличился конкркетно, да и для работы машина нужна поновее - особенно ОЗУ любит - при загрузке примера почти пол Гектара кушает. Пока запускал только примеры с сайта Atmel. После AVR8 чип курится тяжко. |
Автор: | MIB [ Пт дек 06, 2013 18:35:19 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
О! А я думал что сам сижу и въезжаю в эти чипы. Изучаю регистры, биты и группы битов. Что к чему. Курится тяжело, вот на тактировании застрял, с ASF всё идёт гладко, только с understanding туго, и видно что в либах набыдлокодили нехило. Думаю со временем приведут в порядок либы. Со всеми чипами так. P.S. народ, кто разобрался с тактированием на уровне понимания. Помогите плз. |
Автор: | Frogfot [ Пт дек 06, 2013 18:47:17 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
2 MIB: у чипов, я не понял - 6 отдельных генераторов на каждый источник клока - generic clock generator (GCLKGEN)? |
Автор: | MIB [ Пт дек 06, 2013 19:01:19 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
Ну назвать их генераторами сложно. Скажем так, GCG это модули у которых на входе мукс выбирающий откуда он клок возьмёт, далее делитель который умеет делить как кратно степеням двойки, так и любым значениям вплоть до 65535, и на выходе снова мукс который задаёт куда этот GCG отдаст клок. Модуль GCG может брать клок и у другого такого же GCG, и естественно не может использовать свой же клок. Кроме всего каждый из таких модулей имеет свой пин для подачи такта и пин для выдачи такта наружу. пин активизируется переферическим муксом (определяет какая переферия работает с этим пином или это обычный пин порта ВВ). А вот самих настоящих генераторов у МК несколько. Три из них на 32 кГц. один ультра-лов-пауэр OSCULP32K - работает всегда, после ресет используется как тактировалка WDT, потом встроенный RC-генератор 32 кГц, его фишка в достаточно высокой точности и стабильности. и наконец внешний кварцевый генератор XOSC32K работает. Медленно запускается (еденицы секунд) генерит точный такт мало жрёт. Далее идёт высокочастотный RC-генератор 8 МГц (OSC8M), имеет свой предделитель. После старта генерит 1 МГц для ядрышка. Внешний кварцевый генератор 3... 30 МГц (кажись так, пишу не глядя в ДШ). И самая жирная штуковина DFLL48M - тот же PLL но цифровой. Его опора такт в 32 кГц, но при этом он может разгонять свой выход до 48 МГц. Джитер вроде как лучше чем у обычного аналогового PLL. Чем DFLL от PLL отличается я не понял. Эх. Топикстартер видимо сбежал. ДШ по ссылке - http://www.atmel.com/Images/Atmel-42129 ... asheet.pdf |
Автор: | Frogfot [ Пт дек 06, 2013 19:19:47 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
2 MIB: а как насчёт поделиться рабочим примером инита клока, пока по ни по даташиту не могу вкурить, ни разобраться в примерах с сайта Атмела через кучу *.h файлов. |
Автор: | MIB [ Пт дек 06, 2013 19:33:16 ] | ||
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 | ||
Не вАпрос. Просто решил не выкладывать на форум ничего пока не появятся те кто уже разобрался или проявляет интерес. (Незачем лишний раз загаживать ветку). own_defs.c - мои личные дефайны в моём же стиле. Чувствую сейчас полетят в меня какахи, мол, зачем тратить время если можно воспользоваться уже готовыми либами. Пишу этот файлик из-за того что-бы по максимуму почитать и разобраться. Код: //XOSC32K init инициализирую кварцевый генератор на 32 кГц SYSCTRL->XOSC32K.reg = (7 << XOSC32K_STARTUP_pos | XOSC32K_XTALEN_bm); SYSCTRL->XOSC32K.reg |= XOSC32K_ENABLE_bm; while((SYSCTRL->PCLKSR.reg & PCLKSR_XOSC32KRDY_bm) == 0){}; //Generic Clock Generator-1 init инициализирую GCG-1 (GCG-0 по умолчанию уже занят после ресета) GCLK->GENDIV.reg = GENDIV_GCG_GEN1_bg; //DIV = 1; ID = GCG1 wait_status_syncbusy_is_busy(); //wait if SYNCBUSY == 1 needed GCLK->GENDIV.reg |= (1 << GENDIV_DIV_pos); //DIV = 1; wait_status_syncbusy_is_busy(); //wait if SYNCBUSY == 1 needed GCLK->GENCTRL.reg = GENCTRL_GEN1_bg; //.. wait_status_syncbusy_is_busy(); //wait if SYNCBUSY == 1 needed GCLK->GENCTRL.reg |= (GENCTRL_SRC_XOSC32K_bg | /*GENCTRL_OE_bm |*/ //ID = GCG1; Src = OSC8MHz; OutEn.bit = 1; RUNSTDBY.bit = 1; DIVSEL.bit = 1; OOV.bit = 1; (WTF?) GENCTRL_RUNSTDBY_bm | GENCTRL_OOV_bm /*GENCTRL_IDC_bm |*/ //.. /*GENCTRL_DIVSEL_bm |*/); //.. wait_status_syncbusy_is_busy(); //wait if SYNCBUSY == 1 needed GCLK->GENCTRL.reg |= GENCTRL_GENEN_bm; //GENEN.bit = 1 wait_status_syncbusy_is_busy(); //wait if SYNCBUSY == 1 needed ТУТ ВИСНЕТ только при выборе в качестве //источника такта GENCTRL_SRC_XOSC32K_bg GCLK->CLKCTRL.reg = CLKCTRL_GEN1_bg; //ID = GCG1 GCLK->CLKCTRL.reg |= CLKCTRL_DFLL48M_ref_bg; //DFLL48M - clock receiver; GCLK->CLKCTRL.reg |= CLKCTRL_CLKEN_bm; //CLKEN.bit = 1; Подпрограмма ожидания синхронизации регистров выглядит так: Код: void wait_status_syncbusy_is_busy (void) { while(((volatile unsigned char)GCLK->STATUS.reg & STATUS_SYNCBUSY_bm) != 0){}; }; volatile влепил скорее из-за метода научного тыка, хотя он не помог, всё равно не работает. оптимизацию отключил полностью. Виснет в одном из мест где вызывается wait_status_syncbusy_is_busy(); причём если выбрать любой из уже работающих внутренних RC-генераторов, то не виснет (пример GENCTRL_SRC_OSC8M_bg, где виснет смотрите в камментах к коду, выше). А если выбрать GENCTRL_SRC_XOSC32K_bg то для GCG-1 происходит вешалка. самое интересное что XOSC32K запускается. это видно когда его отпускает while((SYSCTRL->PCLKSR.reg & PCLKSR_XOSC32KRDY_bm) == 0){}; (XOSC32KRDY бит готовности находится в PCLKSR регистре). И самое главное что на ножках 32-х кГц кварца вижу чёткое подобие синуса.
|
Автор: | Frogfot [ Пт дек 06, 2013 19:39:43 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
MIB писал(а): Чувствую сейчас полетят в меня какахи, мол, зачем тратить время если можно воспользоваться уже готовыми либами. Да готовыми либами любой дурак может воспользоваться, а чтобы самому шота вкурить и написАть - не любой ![]() |
Автор: | MIB [ Пт дек 06, 2013 19:59:41 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
Ладно, пора домой топать. Frogfot, спасибо за поддержку. Мож кто отпишется к понедельнику. Поковыряю ещё чуток этот чип, но мыслей "что же не так" уже нет. |
Автор: | Frogfot [ Вс дек 08, 2013 18:07:37 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
MIB писал(а): Внешний кварцевый генератор 3... 30 МГц (кажись так, пишу не глядя в ДШ). Я таки начал смотреть в даташит - от 11/2013 стр. 127 - правильней будет 0,4-32 МГц. На этот раз Atmel намутили чиста конкретна - раскидали тактирование и регистры генераторов по 4-м разделами 13-16 (а я мозги парю, пытаюсь вкурить по первым 2-м разделам 13-14). Не скажу что сделали плохо - просто непривычно после AVR8 туева хуча регистров. |
Автор: | MIB [ Вс дек 08, 2013 22:53:45 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
Здесь нужно просто привыкнуть. Простой сёрфинг по AVR-ким даташитам это тоже выработанная привычка. Так же и с ARM. С туевой хучей регистров ага, это сперва оно кажется избыточным. К примеру порты ВВ. Тут некислая жменька регистров. Сперва задаёшся вопросом - а нафига? Позже когда вникаешь начинаешь понимать. Ога, есть привычные регистры в который какую битовую комбинацию сунул, такая и высыпалась на выводах. Потом смотришь на регистры по соседству с этим регистром, и видишь что есть этот же регистр, но который умеет только устанавливать линии порта в лог. 1 и есть регистр который умеет только сбрасывать линии порта ВВ в лог. 0 состояние. Начинаешь въезжать что это нужно для того что-бы не делать процедуру чтение-модификация-запись. Это избавляет от необходимости использования масок для групп линий (когда из скажем 32-х линий порта нужно управлять только 8-ю, к примеру). Что имеем в результате? - меньше кода, быстрее работа с линиями портов ВВ. Кстати с портами с самого начала сразу же и разобрался. Оч. понравилось что что-бы начать работать с портом достаточно настроить его направление (на выход) и тут же уже можно что-то выписывать в порт без обращения к дополнительным регистрам которые конфигурят массу прикольных функций порта. Иначе говоря дополнительный регистр PIN CONFIG уже настроен по умолчанию так что его не нужно трогать. Ну а если уж захочется настроить подтяжку вверх, подтяжку вниз, открытый коллектор, открытый эмиттер, режим slew rate (36 Ом резистор подключенный последовательно с линией порта для устранения ВЧ звона на длинных трассах) или же просто отрубить функцию порта и задействовать одну из групп периферий находящихся на этом пине, тогда нужно обратиться к регистрам PIN CNFG и периферическим MUX регистрам. И да, в Cortex-M0+ доступ к портам ВВ однотактный. Фактически ядро работающее на 48 МГц сможет выдать на линии порта ВВ меандр частотой 24 МГц. Я компилил код, смотрел дизасм, никаких sbi или cbi инструкций как у AVR нет, но при этом видна всего одна строчка с одной асмовой инструкцией. Скажем, для старших кортексов типа М3 и М4 это слабое место, у них на "поднять линию" или "сбросить линию" уходит минимум 6 строчек, ну и естесно не менее 6-ти тактов (не знаю, все ли там инструкции однотактные). |
Автор: | dosikus [ Пн дек 09, 2013 09:46:38 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
Просмотрел камень . Atmel в своем репертуаре - аляповатый даташит . Камень жалкое подобие STM32F0xxx . Нет DMA , таймеры урезанные по самое не могу . RTC нет Backup домена и даже батарейку присобачить не куда . И все это на фоне неимоверных цен... |
Автор: | Frogfot [ Пн дек 09, 2013 14:00:16 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
2 dosikus: да ладна, какой производитель может похвастаться правильными даташитами почти сразу после выхода чипов? Просто мне нашару досталась демоборда с камнем - http://store.atmel.com/PartDetail.aspx? ... escription + 2 шилда расширения - тоже нашару: - Atmel I/O1 Xplained Pro (ATIO1-XPRO) http://store.atmel.com/PartDetail.aspx? ... escription Вложение: - Atmel OLED1 Xplained Pro (ATOLED1-XPRO) http://store.atmel.com/PartDetail.aspx? ... escription Вложение: Ну просто грех будет добру пропадать ![]() |
Автор: | AVKrobotics [ Пн дек 09, 2013 14:16:32 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
Всем добрый день. Мне тоже досталась плата Atmel® SAM D20 Xplained Pro. Народ помогите написать простенькую программу по управлению парой выводов МК. Необходимо для тестирования этой платы. Уже второй день мучаюсь, не могу разобраться с PORT PA10-PA19 EXT2 любые 2 вывода. Заранее благодарен. Мяукать пока только учусь. ![]() |
Автор: | dosikus [ Пн дек 09, 2013 14:21:19 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
Frogfot , Та ды да. Нахаляву и я бы не отказался . ![]() |
Автор: | k000858 [ Пн дек 09, 2013 14:27:34 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
предполагаю платки получены нахаляву (как и в моем случае) на прошедших семинарах атмел?) |
Автор: | MIB [ Пн дек 09, 2013 14:29:14 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
Ну что тут скажешь, ATMEL это дерево с поздними плодами, пусть хоть и сочными. Знакомый который регулярно тусит и официального дистра ATMEL грит что будет следующее развитие SAM D20 в SAM D21. Там вроде как USB добавят и DMA каналы. Ну а так, полистал даташитинку на STM32F0, ффкусные чипики с жирными плюсами, но у ATMEL вроде как тоже есть преимущества: 1) SAM D20 жрёт 150 мкА/МГц, STM32F0 250 мкА/МГц. Здесь думаю дело в технологии чипа. ST используют самую дешевую технологию 180 нм, ATMEL 90 нм, эта технология вдвое дороже 180-ти нм. (Это и отражается на стоимости чипа). Это же и отражается на токи утечек через кристалл в спящем режиме - меньше нормы - меньше токи. 2) ATMELовцы сделали универсальный модуль SERCOM который легко трансформируется в SPI, I2C или USART, таких модулей до 6-ти на кристалле (самый многоногий чип - 64 вывода). Это упрощает трассировку ПП, нет необходимости тянуть выводы в неудобно расположенным выводам SPI, I2C или USART. Как это в чипах с фиксированными модулями. Все модули SERCOM настраиваются одиннаково, это упрощает моменты "въехать как оно работает". 3) Питание SAM D20 1,63... 3,62 В против STM32F0 у которого 2... 3,6В. 4) Аппаратный QTouch (в SAM D20 почему-то называется PTC - Peripheral Touch Controller, (можно подумать что это термистор Positive Temperature Coefficient ![]() 5) Больший диапазон Flash-памяти для SAM D20 - 16... 256 кБ. У ST для M0 16... 64 кБ 6) Более новое ядро Cortex-M0+ против Cortex-M0 что добавляет такие плюшки как аппаратное умножение за 1 такт с 64-х битным результатом и 1-но тактный доступ к линиям портов ВВ. 7) Самый мелкий из лекгопаяемых корпусов TQFP-32 c шагом выводов 0,8 мм, как по мне это поудобнее будет чем TSSOP-20 с шагом 0,65 мм. В частности более эффективно использует площадь ПП, при этом такой чипок можно ставить на доски с толстым слоем фольги у которых идут ощутимые ограничения по минимальной ширине трассировок и зазоров между оными. |
Автор: | Frogfot [ Пн дек 09, 2013 14:29:16 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
2 k000858: да спасибо будет Атмелу за наше просвещение ![]() |
Автор: | MIB [ Пн дек 09, 2013 14:31:15 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
k000858 писал(а): предполагаю платки получены нахаляву (как и в моем случае) на прошедших семинарах атмел?) Ога, насеминарил ![]() |
Автор: | dosikus [ Пн дек 09, 2013 14:48:32 ] |
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 |
MIB писал(а): Ну что тут скажешь, ATMEL это дерево с поздними плодами, пусть хоть и сочными. Знакомый который регулярно тусит и официального дистра ATMEL грит что будет следующее развитие SAM D20 в SAM D21. Там вроде как USB добавят и DMA каналы. Ну а так, полистал даташитинку на STM32F0, ффкусные чипики с жирными плюсами, но у ATMEL вроде как тоже есть преимущества: Когда ATMEL разродится чем то отдаленно похожим STM32F0xx , STM снова уйдет вперед. И снова это будет лучше и дешевле. На данный момент для себя не вижу никаких стимулов, кроме как поиграться, юзать SAM D20. STMF0xx прекрасно заменили все 8ми битки в моих реализациях., даже девайсы c LED получили аппаратную поддержку ... MIB писал(а): 1-но тактный доступ к линиям портов ВВ. Ну да ну да, только софтового ногодрыга в ARM и недоставало. Как то и без ручного дрочительства обходимси - аппаратно. ![]() |
Автор: | MIB [ Пн дек 09, 2013 14:50:04 ] | ||
Заголовок сообщения: | Re: Новый ARM Atmel Cortex-M0+ ATSAMD20 | ||
AVKrobotics писал(а): Всем добрый день. Мне тоже досталась плата Atmel® SAM D20 Xplained Pro. Народ помогите написать простенькую программу по управлению парой выводов МК. Необходимо для тестирования этой платы. Уже второй день мучаюсь, не могу разобраться с PORT PA10-PA19 EXT2 любые 2 вывода. Заранее благодарен. Мяукать пока только учусь. ![]() Создайте новый проект, только с путями без кириллицы и пробелов. Файлами из архива замените main.c в том каталоге где он находится. Должно мигать. Извините, я на работе. проверить не могу на своём бордике. Мигать должно оранжевым диодом, он по умолчанию висит на PA14.
|
Страница 1 из 8 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |