Arduino Due + AVR Studio 6.1 = друзья :)

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

Прикупил себе Arduin Due, попробовал поиграться со стандартными библиотеками от дуино... да все красиво, все легко... НО мощь SAM3X засунута в самую ж-у... написал обычную мигалку штатным светодиодом, без задержки, ну думаю ща едак на 50Мгц или около как замигает, ага ща... стандартная digitalWrite() замигала на 2.5мкс(400кГц). Думал м/б фигня с программой какая нить, вставил внутрь цикла еще один, который щитал с инкрементом от 1 до 100000, делил, и еще какую то операцию...в результате диод так на 400кГц и продолжал мигать, т.е. математику SAM3X тянул на ура, а вот аппаратная часть просто ужасна.

Короче стал чесать репу, к чему бы прикрутиться с due: Keil, IAR ARM ну и т.к атмел МК AVR Studio. Первые 2 платные(как бы :) ), студия с регистрацией бесплатная.

Keil, IAR поставил, нахрапом написать мигалку не получилось :), хз чо там и где выставлять  и подключать

Последним решил попробовать студию и о чудо товарищи:

студия поддерживает Arduino due. Почисал лапки от удовольствия и продолжил:

ну там как обычно main.c и на второй вкладке походу прикольная штука ASF Wizard(Atmel software framework). Это набор библиотек для работы с ядром SAM3X или др МК.Список там большой. К каждой библиотеке есть описание функций.

Завтра попробую на работе, помигать на дуинке со студии

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013
mihart
Offline
Зарегистрирован: 14.05.2013

Я правильно понял, что для отладки приложений нужно еще одно com подключение?

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

пока не знаю. Сегодня попробую, плата на работе лежит...

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

поставил студию, установил тулсах Arduino IDE for AVR Studio...

В Файл, создаем Arduino Project. Здесь используются стандартные библиотеки от ардуино, но синтаксис подсвечивается и табом вставляются готовые функции. Зашивается программа в платку по F5 (Главно не ставить флажок "Upload Using Programmer")

Все работает, залил обычную мигалку с выводм на Com порт. В мониторинге порта все видно.

byte l = 1;
int k = 0;
void setup()
{
  /* add setup code here */
  pinMode(13,OUTPUT);
  Serial.begin(9600);
}

void loop()
{
	while (1)
	{
		l = !l;
		digitalWrite(13,l);
		delay(1000);
		k++;
		Serial.print(k);
	}
  /* add main program code here */

}

Единственное не понял пока, версия етой примочки триал на 30 дней. То ли ето для отладки или прошивка тоже потом отвалится

__Alexander
Offline
Зарегистрирован: 24.10.2012

ну и насколько быстрее замигало?

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

да программа таже. Это просто порт IDE ардуины в студию..Используются теже библиоеки что и в родной IDE.

походу зашивать программу, построенную на Atmel software framework(ASF) нужно чем то типа STK500, покрайней мере ета сволоч его очень хочет видеть. Плата прошивается, только когда создаешь проект ардуино, а не стандартный студийный. В станадартном менюшка отключена.

Ща сижу ищу чего бы такого подпихнуть вместо STK.

Если бы прикрутить как нить ASF к ардуинке, было бы просто шикарно

 

__Alexander
Offline
Зарегистрирован: 24.10.2012

у меня есть STK500, заезжай.  :)

а ваще просто интересно какую частоту можно выжать программным битбэнгом.

 

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

та аналог STK я нашел уже и плату и прошивку, но народ пишет, что студия 6 нос воротит от левых программаторов :(

на родном форуме ардуино народ тоже голову ломает как бы прилепить ASF к ардуино...

CMSIS можно и в ардуино подключить(все есть), но там, я так глянул, пока только символьые обозначения регистров, а в ASF наклепали удобных функций для работы с железом

не знаю как в атмеловских армах но вот в STM32(тоже на кортексе 3 которые) у них есть флаг скорости работы порта и там макс скорость 50МГц

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

Все получилось. Теперь можно писать в AVRStudio, используя ASF для ардуины, прошивать с помощью самбы.

Что надо:

1. AVR Studio 6.1 (тут пишем програмки);

2. Файл bossac.exe(лежит в C:\ARM\arduino-1.5.2\hardware\tools\). С помощью него будем заливать программу в ардуину

Пример командной строки: c:\ARM\arduino-1.5.2\hardware\tools\bossac.exe --port=COM3 -U false -e -w -v -b c:\ARM\Work\blink\blink_led\blink_led\Debug\blink_led.bin -R

3. Чтобы запускать загрузчик из меню студии надо сделать следующее: идем в Tools->Extrenal tools....

    В появившемся окне заполняем поля:

         Title - тут вписываем название макроса;

         Command - тут жмем на ... и указываем расположение bossac.exe

         Arguments - тут вбиваем: --port=COM3 -U false -e -w -v -b $(TargetDir)$(TargetName).bin -R

   Ставим галочку на Use Output Window. Все оболчка готова прошить нашу ардуинку.

4. Аппаратная часть. Подключаем USB-шнурок в program-порт и в комп. Верстаем программу. Жмем кнопку Erase на плате и потом Reset. Жмем в менюшке по подготовленному макросу и видим в логе такую же картинку как и в Arduino IDE при прошивке платы.

Радуемся жизни :)

 

 

 

mihart
Offline
Зарегистрирован: 14.05.2013

А что по поводу отладки?

Я пока нашел такую штуку:Simple Dumping Monitor for Arduino

Как ей пользоваться: Отладка скетчей Arduino.

Мне отладки не хватало, а так отладка идет достаточно удобно.

На сайте ничего про отладку не нашел, неужели никто ей не пользуется?

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

ну дык  то, что вы нашли ето для семейства меги:

  • ATmega48P/88P/168P/328P (Arduino Uno etc.)
  • ATmega640/1280/1281/2560/2561 (Arduino MEGA etc.)
  • ATmega16U4/32U4 (Arduino Leonardo etc.)
  • ATmega164A/PA/324A/PA/644A/PA/1284/P (Sanguino, Daiduino etc.)

А Arduino Due, ето уже ARM контроллер.

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

сделал мигалку в ASF, код получился в 3 раза меньше дуиновского

#include <asf.h>

int main (void)
{
	board_init();
	sysclk_init();
	delay_init(sysclk_get_cpu_hz());
	ioport_init();
	
	
	while(1)
	{
		gpio_toggle_pin(LED0_GPIO);
		delay_ms(50);
	}

	// Insert application code here, after the board has been initialized.
}

кстати, дерганье ногой без задежки в ASF медленней, но это, мне кажется, надо в gpio настройки правильные делать, там я одним глазом видел что то типа времни отклика порта. Буду сидеть разбираться с ASF, т.к. цель запихнуть RTOS в дуину

vladimir_orl
Offline
Зарегистрирован: 10.01.2014

Здравствуйте.

Вот у меня сейчас arduino 2013 есть. Пишу код в авр студии 6. Затем переношу без изменений в arduino ide - и всё нормально компилится. А для arduino duе подобная вещь может пройти?

Michal
Michal аватар
Offline
Зарегистрирован: 26.04.2013

если используете примочку от Arduino для аврстудио, то все спокойно переносится.

vladimir_orl
Offline
Зарегистрирован: 10.01.2014

Спасибо. Надо будет попробовать. Честно говоря больше всего в ардуино радует быстрая инициализация. В авр студии конечно есть SystemInit для SAM3. Но ардуиновские библиотеки конечно дружелюбнее. А критичные места можно и на чистом си написать. Можно даже ассемблерные вставки попробовать будет.

poskotinov_av
Offline
Зарегистрирован: 20.12.2014

В итоге ?

На чем писать чтобы не тормозило?

Maverik
Offline
Зарегистрирован: 12.09.2012

а в CodeBlocks for Arduino IDE не пробовал работать ?

poskotinov_av
Offline
Зарегистрирован: 20.12.2014

Установил, но попробовать не получилось. Нет там моей DUE.