Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Въпрос свързан с Arduino Due
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=13386
Страница 1 от 1

Автор:  s7ama7 [ Съб Ное 29, 2014 10:47 am ]
Заглавие:  Въпрос свързан с Arduino Due

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

Автор:  ike [ Съб Ное 29, 2014 10:52 am ]
Заглавие:  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

Автор:  s7ama7 [ Съб Ное 29, 2014 3:31 pm ]
Заглавие:  Re: Въпрос свързан с Arduino Due

Благодаря , с тоя код мога да променям честотата . А да ви попитам ако си взема нещо по старо като Arduino Mega 2560 , ще може ли да пиша нормален код . Т.е. без да използвам готови библиютеки , както в случая с PWM . Или това ардуиното не позволява такива "волности" :) .

Автор:  ike [ Съб Ное 29, 2014 9:05 pm ]
Заглавие:  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

Автор:  s7ama7 [ Пон Дек 01, 2014 10:36 am ]
Заглавие:  Re: Въпрос свързан с Arduino Due

Благодаря Ви отново за разясненията. Питането ми е има ли някакъв гуаид за тоя атмел . Че аз нещо не мога да намеря. Това нещо примерно g_APinDescription[8].pPort -> него разбирам. От къде идва първата част g_APinDescription .И на тази -> стрелка не и разбирам смисъла. Ако може да дадете някакво линкче с примерни подобни програми или пък фрагменти от такава с обяснения.
Просто ако взема да пиша програма както я пиша за PIC микроконтролер компилатора плюе грешки.

Автор:  ike [ Пон Дек 01, 2014 1:32 pm ]
Заглавие:  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.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/