Отговори на тема  [ 6 мнения ] 
Въпрос свързан с Arduino Due 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Ное 29, 2014 10:11 am
Мнения: 774
Мнение Въпрос свързан с Arduino Due
Здравейте ,
преди няколко дни си закупих Arduino Due . Досега не съм имал допир с каквото и да е било ардуино . Писал съм някоя друга програма на С за PIC16 , PIC18 и малко PIC32 . Успешно съм подкарвал АЦП , Таймерите , хардуерния PWM , входно/изходните портове , прекъсвания .. Но това ардуино ме заби . От няколко часа се опитвам да подкарам PWM , и по точно да му променя честотата , която по дефалт явно е зададена да бъде 1kHz , но без успех .
Въпроса ми е може ли да се променя регистър , например PWM_CPRDx . Аз ли не знам къде да търся , но каквото и предложение за това да ми дава чичо гугъл , компилатора не го приема . Даташиита на тоя "звяр" няма нищо общо с пикчетата на майкрочип . Тук левела на трудност е x10 :) .


Съб Ное 29, 2014 10:47 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Въпрос свързан с Arduino Due
Виж тук: http://www.kerrywong.com/2014/09/21/on- ... frequency/
Виж дали с това: http://www.ebay.com/itm/Mini-USB-Nano-V ... 3f411ed087 трудността не е по-малка.
С класическо ардуино ще можеш да намериш много повече примери: http://playground.arduino.cc/Code/PwmFrequency

_________________
Warriors of the Night, ASSEMBLER!!!


Съб Ное 29, 2014 10:52 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Ное 29, 2014 10:11 am
Мнения: 774
Мнение Re: Въпрос свързан с Arduino Due
Благодаря , с тоя код мога да променям честотата . А да ви попитам ако си взема нещо по старо като Arduino Mega 2560 , ще може ли да пиша нормален код . Т.е. без да използвам готови библиютеки , както в случая с PWM . Или това ардуиното не позволява такива "волности" :) .


Съб Ное 29, 2014 3:31 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Въпрос свързан с Arduino Due
Arduino е Arduino платка - контролер с бутлоадер.
Arduino е Arduino IDE написано на JAVA за да изглежда под Уиндоус, Линукс и Мак еднакво.
Arduino е Arduino библиотека (Arduino.h) която дефинира main() функцията, както и другите Arduino функции като: digitalWrite(), digitalRead(), analogRead() и т.н. И всичкото това го подава на компилатора, който е за съответната архитектура/контолер.
Например тук: http://www.kerrywong.com/2014/09/21/on- ... frequency/
Показват как можеш да замениш:
digitalWrite(8, HIGH);
digitalWrite(8, LOW);
с
g_APinDescription[8].pPort -> PIO_SODR = g_APinDescription[8].ulPin;
g_APinDescription[8].pPort -> PIO_CODR = g_APinDescription[8].ulPin;

Или с други думи вътре в setup() и loop() можеш да си пишеш директно C код за контолера който имаш: ATSAM3x8E, ATmega2560 или ATmega328p

_________________
Warriors of the Night, ASSEMBLER!!!


Съб Ное 29, 2014 9:05 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Ное 29, 2014 10:11 am
Мнения: 774
Мнение Re: Въпрос свързан с Arduino Due
Благодаря Ви отново за разясненията. Питането ми е има ли някакъв гуаид за тоя атмел . Че аз нещо не мога да намеря. Това нещо примерно g_APinDescription[8].pPort -> него разбирам. От къде идва първата част g_APinDescription .И на тази -> стрелка не и разбирам смисъла. Ако може да дадете някакво линкче с примерни подобни програми или пък фрагменти от такава с обяснения.
Просто ако взема да пиша програма както я пиша за PIC микроконтролер компилатора плюе грешки.


Пон Дек 01, 2014 10:36 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Въпрос свързан с Arduino Due
От всички колеги, аз най-малко ги разбирам нещата и не е правилно аз да ги разяснявам, но ще се опитам.
Тези 32 битови кортекси са с много повече чаркове от простите 8 битови pic16, за това и програмирането им е малко по-странно. От ардуино се опитват да го прикрият
като се ползват простите функции, като digitalWrite(8, HIGH) обаче тази функция digitalWrite в крайна сметка пак вика g_APinDescription[8].pPort -> PIO_SODR = g_APinDescription[8].ulPin;
Ако цъкнеш търсене в папката на ардуино ще ти изскочи, че g_APinDescription
е дифинирано в: arduino-1.5.8\hardware\arduino\sam\cores\arduino\Arduino.h
Код:
/* Types used for the tables below */
typedef struct _PinDescription
{
  Pio* pPort ;
  uint32_t ulPin ;
  uint32_t ulPeripheralId ;
  EPioType ulPinType ;
  uint32_t ulPinConfiguration ;
  uint32_t ulPinAttribute ;
  EAnalogChannel ulAnalogChannel ; /* Analog pin in the Arduino context (label on the board) */
  EAnalogChannel ulADCChannelNumber ; /* ADC Channel number in the SAM device */
  EPWMChannel ulPWMChannel ;
  ETCChannel ulTCChannel ;
} PinDescription ;

/* Pins table to be instanciated into variant.cpp */
extern const PinDescription g_APinDescription[] ;



A за смисъла на стрелката -> прочети тук: http://www.cplusplus.com/doc/tutorial/structures/
Цитат:
The arrow operator (->) is a dereference operator that is used exclusively with pointers to objects that have members. This operator serves to access the member of an object directly from its address. For example, in the example above:


pmovie->title


is, for all purposes, equivalent to:


(*pmovie).title


Both expressions, pmovie->title and (*pmovie).title are valid, and both access the member title of the data structure pointed by a pointer called pmovie.

_________________
Warriors of the Night, ASSEMBLER!!!


Пон Дек 01, 2014 1:32 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 6 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни