16-разрядный ЦПУ, макс. частота 16 МГц, 16 кБ Flash, 512B RAM, 16 GPIO, 2 16-битных таймера, I2C, SPI, UART, 8 10-битных АЦП каналов
16-разрядный ЦПУ, макс. частота 16 МГц, 8 кБ Flash, 256B RAM, 16 GPIO, 1 16-битный таймер, I2C, SPI, 8 10-битных АЦП каналов
/*****************************************/После чего нажать на изображение стрелочки в левом верхнем углу, дождаться окончания загрузки и наслаждаться моргающим светодиодом.
//Эта функция выполняется при запуске МК
void setup() {
//Указываем, что пин светодиода — это выход
pinMode(RED_LED, OUTPUT);
}
//Основная функция, которая будет вызываться каждый раз,
//пока микроконтроллер работает
void loop() {
//Зажигаем светодиод
digitalWrite(RED_LED, HIGH);
//Ждём 1000 мс, т.е. 1 секунду
delay(1000);
//гасим светодиод
digitalWrite(RED_LED, LOW);
//Ждём 1 секунду
delay(1000);
}
/*****************************************/
/*****************************************/Ну и получаем результат:
//Загружаем описание нашего микроконтроллера
#include «io430.h»
//номер пина, к которому подключен красный светодиод
// в лаунчпаде это первый пин, который является нулевым битом
#define LEDPIN BIT0
int main( void ) {
WDTCTL = WDTPW + WDTHOLD; //отключаем сторожевой таймер
//устанавливаем внутренний генератор
//на частоту 1 МГц, можно конечно и 16,
//но для обычного моргания нам одного за глаза хватит.
DCOCTL = CALDCO_1MHZ;
BCSCTL1 = CALBC1_1MHZ;
P1DIR |= LEDPIN; //Говорим, что наш пин — это выход
//Бесконечный цикл
while(1) {
//Меняем бит светодиода на противоположный
P1OUT ^= LEDPIN;
//Задержка в 1 миллион циклов, при скорости процессора 1 Мгц
//получаем 1 секунду
__delay_cycles(1e6);
}
}
/*****************************************/
/*****************************************/И вот результат на выходе:
void setup() {
pinMode(RED_LED, OUTPUT);
}
void loop() {
digitalWrite(RED_LED, HIGH);
digitalWrite(RED_LED, LOW);
}
/*****************************************/
/*****************************************/На выходе получаем:
#include «io430.h»
#define LEDPIN BIT0
int main( void ) {
WDTCTL = WDTPW + WDTHOLD;
//устанавливаем внутренний генератор на максимальную частоту 16 МГц
DCOCTL = CALDCO_16MHZ;
BCSCTL1 = CALBC1_16MHZ;
P1DIR |= LEDPIN;
P1OUT = 0;
while(1) {
//зажигаем светодиод
P1OUT = LEDPIN;
//гасим светодиод
P1OUT = 0;
}
}
/*****************************************/
energia-0101E0009\hardware\msp430\cores\msp430К примеру, в файле wiring_digital.c можно посмотреть, как реализована функция digitalWrite и сразу станет понятно, куда уходит столько времени на её выполнение.
#include «io430.h»
#define LEDPIN BIT0
#define BUTTON BIT3
int main( void )
{
//Отключаем сторожевой таймер
WDTCTL = WDTPW + WDTHOLD;
//Ставим максимальную частоту процессора
DCOCTL = CALDCO_16MHZ;
BCSCTL1 = CALBC1_16MHZ;
//Указываем, что пин со светодиодом — это выход
P1DIR |= LEDPIN;
//Указываем, что пин с кнопкой — это вход
P1DIR &= ~BUTTON;
//Включаем внутренний резистор подтяжки для кнопки
P1REN |= BUTTON;
//Подтягиваем резистором к плюсу, т.к. наша кнопка сажает пин на землю
P1OUT |= BUTTON;
//Гасим светодиод
P1OUT &= ~LEDPIN;
//Устанавливаем прерывание по заднему фронту, т.к. при нажатии уровень
//изменится с 1 до 0
P1IES |= BUTTON;
//Сбрасываем флаг прерывания
P1IFG &= ~BUTTON;
//Разрешаем прерывание для кнопки
P1IE |= BUTTON;
//Разрешаем глобальные прерывания
__bis_SR_register(__SR_GIE);
//Можно усыпить контроллер до тех пор, пока не нажата кнопка,
//но на его пробуждение понадобится некое время, поэтому пусть ждёт так
//__low_power_mode_4();
//Бесконечный цикли
while(1) {
}
}
//Это функция обработки прерывания по нажатию нашей кнопки
#pragma vector=PORT1_VECTOR
__interrupt void onP1ISR(void) {
//Запрещаем прерывания для кнопки, что бы пока функция не отработала,
//ещё раз она не вызывалась
P1IE &= ~BUTTON;
//Сбрасываем флаг прерывания
P1IFG &= ~BUTTON;
//Зажигаем светодиод
P1OUT |= LEDPIN;
//разрешаем прерывания для кнопки
P1IE |= BUTTON;
}
— 32-разрядный ЦПУ;
— Частота до 60 МГц;
— 20 GPIO;
— 12-битный АЦП 7 каналов;
— 8 каналов ШИМ;
— I2C, SPI, UART
— 3 32-битных таймера;
— 64 KB Flash;
— 12 KB RAM.
C:\ti\controlSUITE\development_kits\C2000_LaunchPad\f2802x_examplesВсе примеры используют готовый набор функций, упрощающий разработку программы, но конечно немного замедляющий её.
C:\ti\controlSUITE\development_kits\C2000_LaunchPad\f2802x_common\source
#include «DSP28x_Project.h»И получаем:
#include «f2802x_common/include/clk.h»
#include «f2802x_common/include/gpio.h»
#include «f2802x_common/include/pie.h»
#include «f2802x_common/include/pll.h»
#include «f2802x_common/include/wdog.h»
void main()
{
CLK_Handle myClk;
GPIO_Handle myGpio;
PIE_Handle myPie;
CPU_Handle myCpu;
PLL_Handle myPll;
WDOG_Handle myWDog;
//Инициализируем наши переменные
//Функции часов
myClk = CLK_init((void *)CLK_BASE_ADDR, sizeof(CLK_Obj));
//Процессор
myCpu = CPU_init((void *)NULL, sizeof(CPU_Obj));
//Входы/выходы
myGpio = GPIO_init((void *)GPIO_BASE_ADDR, sizeof(GPIO_Obj));
//прерывания
myPie = PIE_init((void *)PIE_BASE_ADDR, sizeof(PIE_Obj));
//Фазовая автоподстройка частоты
myPll = PLL_init((void *)PLL_BASE_ADDR, sizeof(PLL_Obj));
//сторожевой таймер
myWDog = WDOG_init((void *)WDOG_BASE_ADDR, sizeof(WDOG_Obj));
// Отключаем сторожевой таймер
WDOG_disable(myWDog);
//Частота будет браться в внутреннего генератора
CLK_setOscSrc(myClk, CLK_OscSrc_Internal);
// Устанавливаем плл на 60МГц. 10Мг(внетренний генератор) * 12 / 2 = 60
PLL_setup(myPll, PLL_Multiplier_12, PLL_DivideSelect_ClkIn_by_2);
// Сбрасываем все прерывания
PIE_disable(myPie);
PIE_disableAllInts(myPie);
CPU_disableGlobalInts(myCpu);
CPU_clearIntFlags(myCpu);
// Если программа на флэше, переписываем её в RAM
#ifdef _FLASH
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
#endif
// Настраиваем наши выходы
//Выходы с 0 по 3 будут выполнять свою главную роль — дискретные входы/выходы
GPIO_setMode(myGpio, GPIO_Number_0, GPIO_0_Mode_GeneralPurpose);
GPIO_setMode(myGpio, GPIO_Number_1, GPIO_0_Mode_GeneralPurpose);
GPIO_setMode(myGpio, GPIO_Number_2, GPIO_0_Mode_GeneralPurpose);
GPIO_setMode(myGpio, GPIO_Number_3, GPIO_0_Mode_GeneralPurpose);
//Наши пины — это выходы
GPIO_setDirection(myGpio, GPIO_Number_0, GPIO_Direction_Output);
GPIO_setDirection(myGpio, GPIO_Number_1, GPIO_Direction_Output);
GPIO_setDirection(myGpio, GPIO_Number_2, GPIO_Direction_Output);
GPIO_setDirection(myGpio, GPIO_Number_3, GPIO_Direction_Output);
//Бесконечный цикл
while(1) {
//Светодиод загорается от 0 и гаснет от 1, поэтому подаём low, что бы зажечь, и high, что бы погасить
GPIO_setHigh(myGpio, GPIO_Number_0);
GPIO_setHigh(myGpio, GPIO_Number_1);
GPIO_setHigh(myGpio, GPIO_Number_2);
GPIO_setLow(myGpio, GPIO_Number_3);
//Ждём 1млн мксекунд. т.е 1 секунду
DELAY_US(1E6);
GPIO_setHigh(myGpio, GPIO_Number_0);
GPIO_setHigh(myGpio, GPIO_Number_1);
GPIO_setLow(myGpio, GPIO_Number_2);
GPIO_setHigh(myGpio, GPIO_Number_3);
DELAY_US(1E6);
GPIO_setHigh(myGpio, GPIO_Number_0);
GPIO_setLow(myGpio, GPIO_Number_1);
GPIO_setHigh(myGpio, GPIO_Number_2);
GPIO_setHigh(myGpio, GPIO_Number_3);
DELAY_US(1E6);
GPIO_setLow(myGpio, GPIO_Number_0);
GPIO_setHigh(myGpio, GPIO_Number_1);
GPIO_setHigh(myGpio, GPIO_Number_2);
GPIO_setHigh(myGpio, GPIO_Number_3);
DELAY_US(1E6);
}
}
C:\ti\controlSUITE\development_kits\C2000_LaunchPad\f2802x_common\source\gpio.cи посмотрим, что можно выкинуть из функций GPIO_setHigh и GPIO_setLow
…
void GPIO_setHigh(GPIO_Handle gpioHandle, const GPIO_Number_e gpioNumber)
{
GPIO_Obj *gpio = (GPIO_Obj *)gpioHandle;
ENABLE_PROTECTED_REGISTER_WRITE_MODE;
if(gpioNumber < GPIO_Number_32)
{
gpio->GPASET = (uint32_t)1 << gpioNumber;
}
else
{
gpio->GPBSET = (uint32_t)1 << (gpioNumber — GPIO_Number_32);
}
DISABLE_PROTECTED_REGISTER_WRITE_MODE;
return;
} // end of GPIO_setHigh() function
void GPIO_setLow(GPIO_Handle gpioHandle, const GPIO_Number_e gpioNumber)
{
GPIO_Obj *gpio = (GPIO_Obj *)gpioHandle;
ENABLE_PROTECTED_REGISTER_WRITE_MODE;
if(gpioNumber < GPIO_Number_32)
{
gpio->GPACLEAR = (uint32_t)1 << gpioNumber;
}
else
{
gpio->GPBCLEAR = (uint32_t)1 << (gpioNumber — GPIO_Number_32);
}
DISABLE_PROTECTED_REGISTER_WRITE_MODE;
return;
} // end of GPIO_setLow() function
...
#include «DSP28x_Project.h»
#include «f2802x_common/include/clk.h»
#include «f2802x_common/include/gpio.h»
#include «f2802x_common/include/pie.h»
#include «f2802x_common/include/pll.h»
#include «f2802x_common/include/wdog.h»
void main()
{
CLK_Handle myClk;
GPIO_Handle myGpio;
PIE_Handle myPie;
CPU_Handle myCpu;
PLL_Handle myPll;
WDOG_Handle myWDog;
//Инициализируем наши переменные
//Функции часов
myClk = CLK_init((void *)CLK_BASE_ADDR, sizeof(CLK_Obj));
//Процессор
myCpu = CPU_init((void *)NULL, sizeof(CPU_Obj));
//Входы/выходы
myGpio = GPIO_init((void *)GPIO_BASE_ADDR, sizeof(GPIO_Obj));
//прерывания
myPie = PIE_init((void *)PIE_BASE_ADDR, sizeof(PIE_Obj));
//Фазовая автоподстройка частоты
myPll = PLL_init((void *)PLL_BASE_ADDR, sizeof(PLL_Obj));
//сторожевой таймер
myWDog = WDOG_init((void *)WDOG_BASE_ADDR, sizeof(WDOG_Obj));
// Отключаем сторожевой таймер
WDOG_disable(myWDog);
//Частота будет браться в внутреннего генератора
CLK_setOscSrc(myClk, CLK_OscSrc_Internal);
// Устанавливаем плл на 60МГц. 10Мг(внутренний генератор) * 12 / 2 = 60
PLL_setup(myPll, PLL_Multiplier_12, PLL_DivideSelect_ClkIn_by_2);
// Сбрасываем все прерывания
PIE_disable(myPie);
PIE_disableAllInts(myPie);
CPU_disableGlobalInts(myCpu);
CPU_clearIntFlags(myCpu);
// Если программа на флэше, переписываем её в RAM
#ifdef _FLASH
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
#endif
GPIO_Obj *gpio = (GPIO_Obj *)myGpio;
//разрешаем управление портами
EALLOW;
//Все порты делаю входами/выходами, что б не болтались без дела
gpio->GPAMUX1 = (uint16_t)0;
gpio->GPAMUX2 = (uint16_t)0;
gpio->GPBMUX1 = (uint16_t)0;
//Все порты делаю выходами
gpio->GPADIR = (uint16_t)0xFFFF;
gpio->GPBDIR = (uint16_t)0xFFFF;
//Сбросим все выходы
gpio->GPADAT = (uint16_t)0;
gpio->GPBDAT = (uint16_t)0;
//Конец работы с портами
EDIS;
//Бесконечный цикл
while(1) {
//разрешаем управление портами, без него порты будут работать криво,
//поэтому перед управлением разрешили, а после закрыли
EALLOW;
//устанавливаю 1 в GPIO 0
gpio->GPASET = (uint32_t)1;
//Завершаю управление портами
EDIS;
//Начинаю управление портами
EALLOW;
//Сбрасываю GPIO 0 в ноль
gpio->GPACLEAR = (uint32_t)1;
//Завершаю управление портами
EDIS;
}
}
…И вот, что получил:
while(1) {
gpio->GPASET = (uint32_t)1;
gpio->GPACLEAR = (uint32_t)1;
gpio->GPASET = (uint32_t)1;
gpio->GPACLEAR = (uint32_t)1;
}
...
#include «DSP28x_Project.h»И сам результат:
#include «f2802x_common/include/clk.h»
#include «f2802x_common/include/gpio.h»
#include «f2802x_common/include/pie.h»
#include «f2802x_common/include/pll.h»
#include «f2802x_common/include/wdog.h»
interrupt void buttonISR(void);
GPIO_Handle myGpio;
PIE_Handle myPie;
GPIO_Obj *gpio;
void main()
{
CLK_Handle myClk;
CPU_Handle myCpu;
PLL_Handle myPll;
WDOG_Handle myWDog;
//Инициализируем наши переменные
//Функции часов
myClk = CLK_init((void *)CLK_BASE_ADDR, sizeof(CLK_Obj));
//Процессор
myCpu = CPU_init((void *)NULL, sizeof(CPU_Obj));
//Входы/выходы
myGpio = GPIO_init((void *)GPIO_BASE_ADDR, sizeof(GPIO_Obj));
//прерывания
myPie = PIE_init((void *)PIE_BASE_ADDR, sizeof(PIE_Obj));
//Фазовая автоподстройка частоты
myPll = PLL_init((void *)PLL_BASE_ADDR, sizeof(PLL_Obj));
//сторожевой таймер
myWDog = WDOG_init((void *)WDOG_BASE_ADDR, sizeof(WDOG_Obj));
// Отключаем сторожевой таймер
WDOG_disable(myWDog);
gpio = (GPIO_Obj *)myGpio;
//Частота будет браться в внутреннего генератора
CLK_setOscSrc(myClk, CLK_OscSrc_Internal);
// Устанавливаем плл на 60МГц. 10Мг(внетренний генератор) * 12 / 2 = 60
PLL_setup(myPll, PLL_Multiplier_12, PLL_DivideSelect_ClkIn_by_2);
// Сбрасываем все прерывания
PIE_disable(myPie);
PIE_disableAllInts(myPie);
CPU_disableGlobalInts(myCpu);
CPU_clearIntFlags(myCpu);
// Если программа на флэше, переписываем её в RAM
#ifdef _FLASH
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
#endif
EALLOW;
//Все порты делаю входами/выходами, что б не болтались без дела
gpio->GPAMUX1 = (uint16_t)0;
gpio->GPAMUX2 = (uint16_t)0;
gpio->GPBMUX1 = (uint16_t)0;
//Все порты делаю выходами
gpio->GPADIR = (uint16_t)0xFFFF;
gpio->GPBDIR = (uint16_t)0xFFFF;
//Сбросим все выходы
gpio->GPADAT = (uint16_t)0;
gpio->GPBDAT = (uint16_t)0;
//Конец работы с портами
EDIS;
// Настраиваем наши выходы
//Выход 0 будет выполнять свою главную роль — дискретные входы/выходы
GPIO_setMode(myGpio, GPIO_Number_0, GPIO_0_Mode_GeneralPurpose);
//Наш пин 12 тоже будет выполнять обычную функция ввода/вывода
GPIO_setMode(myGpio, GPIO_Number_12, GPIO_12_Mode_GeneralPurpose);
//Отключаем подтяжку, т.к. по схеме наша кнопка даёт положительный уровень
GPIO_setPullUp(myGpio, GPIO_Number_12, GPIO_PullUp_Disable);
//Привязываем нажатие кнопки к прерыванию CPU_ExtIntNumber_1
GPIO_setExtInt(myGpio, GPIO_Number_12, CPU_ExtIntNumber_1);
//Наш пин 0 — это выход
GPIO_setDirection(myGpio, GPIO_Number_0, GPIO_Direction_Output);
//Наш пин 12 (кнопка) — это вход
GPIO_setDirection(myGpio, GPIO_Number_12, GPIO_Direction_Input);
//Гасим светодиод
GPIO_setLow(myGpio, GPIO_Number_0);
//Включаем прерывания
PIE_enable(myPie);
//Указываем нашу функцию-обработчик прерываний
PIE_registerPieIntHandler(myPie, PIE_GroupNumber_1, PIE_SubGroupNumber_4, (intVec_t)&buttonISR);
//Указываем, что прерывание должно срабатывать по переднему фронту
PIE_setExtIntPolarity(myPie, CPU_ExtIntNumber_1, PIE_ExtIntPolarity_RisingEdge);
//Разрешаем прерывания нашей кнопки
PIE_enableExtInt(myPie, CPU_ExtIntNumber_1);
CPU_enableInt(myCpu, CPU_IntNumber_1);
//Разрешаем глобальные прерывания
CPU_enableGlobalInts(myCpu);
//Разрешаем писать в регистры
ENABLE_PROTECTED_REGISTER_WRITE_MODE;
//Бесконечный цикл
while(1) {
}
}
//Наше прерывания по нажатию кнопки
interrupt void buttonISR(void)
{
//Подаём 1 на выход
gpio->GPASET = (uint32_t)1;
//Сбрасываем флаг прерываний
PIE_clearInt(myPie, PIE_GroupNumber_1);
}
— Stellaris LaunchPad Демонстрационная плата
— USB Micro-B USB-кабель
— Руководство по эксплуатации
— Микроконтроллер: 32-битный Cortex ™-M4F LM4F120H5QR;
— Скорость до 80 МГц;
— 256 КБ Flash/ 32 КБ SRAM / 2 КБ EEPROM
— 2 12-битных АЦП;
— 6 64-битных и 6 32-битных таймеров;
— 8 UART;
— 4 SSI;
— 4 I2C;
— CAN 2.0;
— USB 2.0.
void setup() {Для остальных сред разработки нужно посетить страницу «Stellaris® LM4F120 LaunchPad Evaluation Board Software» и скачать StellarisWare под свою среду.
// Указываем, что наши пины со светодиодами — это выход
pinMode(RED_LED, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(BLUE_LED, OUTPUT);
}
void loop() {
//Зажигаем красный светодиод
digitalWrite(RED_LED, HIGH);
//Ждём 200мс
delay(200);
//Гасим красный светодиод
digitalWrite(RED_LED, LOW);
//Ждём секунду
delay(1000);
//Проделываем тоже самое с зелёным светодиодом
digitalWrite(GREEN_LED, HIGH);
delay(200);
digitalWrite(GREEN_LED, LOW);
delay(1000);
//И синем
digitalWrite(BLUE_LED, HIGH);
delay(200);
digitalWrite(BLUE_LED, LOW);
delay(1000);
}
C:\StellarisWare\boards\ek-lm4f120xlДля моргания светодиодом я взял за основу «project0» из папки с примерами и вот, что получилось:
#include «inc/hw_types.h»В итоге получаем следующее:
#include «inc/hw_memmap.h»
#include «driverlib/sysctl.h»
#include «driverlib/gpio.h»
//задаём псевдонимы для RED_LED — это пин 1, синий — 2, зелёный — 3
#define RED_LED GPIO_PIN_1
#define BLUE_LED GPIO_PIN_2
#define GREEN_LED GPIO_PIN_3
int main(void) {
//Устанавливаем системные часы на 16МГц
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ);
//Включаем канал F, на котором установлены светодиоды
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
//Указываем, что пины RED_LED|BLUE_LED|GREEN_LED — это выходы
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, RED_LED|BLUE_LED|GREEN_LED);
//
//Бесконечный цикл
//
while(1) {
//Зажигаем красный светодиод
GPIOPinWrite(GPIO_PORTF_BASE, RED_LED|BLUE_LED|GREEN_LED, RED_LED);
//Эта функция делает задержку в 3 цикла, в итоге получаем 0,3 сек.
SysCtlDelay(1e5);
//Гасим все светодиоды
GPIOPinWrite(GPIO_PORTF_BASE, RED_LED|BLUE_LED|GREEN_LED, 0);
//Ждём ~1сек.
SysCtlDelay(5e6);
//Всё тоже самое проделываем с зелёным и синем светодиодом
GPIOPinWrite(GPIO_PORTF_BASE, RED_LED|BLUE_LED|GREEN_LED, GREEN_LED);
SysCtlDelay(1e5);
GPIOPinWrite(GPIO_PORTF_BASE, RED_LED|BLUE_LED|GREEN_LED, 0);
SysCtlDelay(5e6);
GPIOPinWrite(GPIO_PORTF_BASE, RED_LED|BLUE_LED|GREEN_LED, BLUE_LED);
SysCtlDelay(1e5);
GPIOPinWrite(GPIO_PORTF_BASE, RED_LED|BLUE_LED|GREEN_LED, 0);
SysCtlDelay(5e6);
}
}
C:\StellarisWare\driverlibТам же лежат исходные коды всех наших функций, упрощающих жизнь.
…
void
GPIOPinWrite(unsigned long ulPort, unsigned char ucPins, unsigned char ucVal)
{
//
// Check the arguments.
//
ASSERT(GPIOBaseValid(ulPort));
//
// Write the pins.
//
HWREG(ulPort + (GPIO_O_DATA + (ucPins << 2))) = ucVal;
}
...
#include «inc/lm4f120h5qr.h»Зашиваем программу в контроллер, подключаем осциллограф и видим следующее:
#include «inc/hw_types.h»
#include «inc/hw_memmap.h»
#include «driverlib/sysctl.h»
#include «driverlib/gpio.h»
int main(void) {
//Устанавливаем внутренний генератор на максимальную частоту 80МГц
SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
SYSCTL_OSC_MAIN);
// Включаем порт F
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
//Указываем, что наш пин 2 — это выход
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2);
//
// Бесконечный цикл
//
while(1) {
//Передаём 1 на выход 2
HWREG(GPIO_PORTF_BASE + (GPIO_PIN_2 << 2)) = GPIO_PIN_2;
//Передаём 0 на выход 2
HWREG(GPIO_PORTF_BASE + (GPIO_PIN_2 << 2)) = 0;
}
}
#include «inc/hw_types.h»И ещё, главное не забыть подправить файл «startup_ewarm.c», объявив вначале нашу функцию
#include «inc/hw_gpio.h»
#include «inc/hw_ints.h»
#include «inc/hw_memmap.h»
#include «driverlib/sysctl.h»
#include «driverlib/gpio.h»
#include «driverlib/rom.h»
#include «driverlib/interrupt.h»
void __GPIOF_ISR(void);
int main(void) {
ROM_FPUEnable();
ROM_FPULazyStackingEnable();
//Устанавливаем внутренний генератор на максимальную частоту 80МГц
ROM_SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|
SYSCTL_OSC_MAIN);
// Включаем порт F
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
//Делаем пин 1 выходом
ROM_GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1);
//Делаем пин 0 входом
ROM_GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_0);
//Разблокируем регистр PF0, что бы его можно было использовать в качестве входа
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY_DD;
HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= 0x01;
HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;
//Подключаем подтяжку к плюсу
ROM_GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_0,
GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
//Прерывание срабатывает по заднему фронту
ROM_GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_FALLING_EDGE);
//Включаем прерывания
ROM_GPIOPinIntEnable(GPIO_PORTF_BASE, GPIO_PIN_0);
//Включаем глобальные прерывания
ROM_IntMasterEnable();
ROM_IntEnable(INT_GPIOF);
//
// Бесконечный цикл
//
while(1) {
}
}
//Наш обработчик прерывания
void __GPIOF_ISR(void) {
//Подаём на выход 1
HWREG(GPIO_PORTF_BASE + (GPIO_PIN_1 << 2)) = GPIO_PIN_1;
unsigned long ulStatus;
//Получаем статус текущего прерывания
ulStatus = ROM_GPIOPinIntStatus(GPIO_PORTF_BASE, true);
//Сбрасываем флаг прерывания
ROM_GPIOPinIntClear(GPIO_PORTF_BASE, ulStatus);
}
…и указать её в списках обработчиков прерываний:
extern void __GPIOF_ISR(void);
...
…После загрузки в контроллер получаем следующее:
IntDefaultHandler, // FLASH Control
__GPIOF_ISR, // GPIO Port F
IntDefaultHandler, // GPIO Port G
...
— Stellaris® LM4F120 LaunchPad User Manual (En);
— Начало программирования в Code Composer Studio;
— Начало программирования в IAR;
— Stellaris® LM4F120H5QR DATA SHEET (En);
— Прочая документация.
— Tiva C Series отладочная плата;
— USB Micro-B USB-кабель;
— Руководство по быстрому старту.
— Микроконтроллер: 32-битный ARM Cortex-M4 TM4C123GH6PM;
— Скорость до 80 МГц;
— 256 КБ Flash/ 32 КБ SRAM / 2 КБ EEPROM
— 2 12-битных АЦП;
— 6 64-битных и 6 32-битных таймеров;
— 8 UART;
— 4 SSI;
— 4 I2C;
— CAN 2.0;
— USB 2.0.
— Tiva™ C Series EK-TM4C123GXL LaunchPad User's Guide (En);
— Tiva™ TM4C123GH6PM Microcontroller DATA SHEET (En);
— Начало программирования в Code Composer Studio;
— Начало программирования в Keil™ RealView®;
— Начало программирования в Sourcery CodeBench™;
— Прочая документация.
— Микроконтроллер: TMS570LS0432 (Dual ARM Cortex – R4);Hercules RM42X Launchpad
— Встроенная самопроверка для ЦП и RAM;
— Контроль часов и напряжения;
— Характеристики МК: 80MHz
384kB Flash со встроенными средствами обнаружения и коррекции ошибок (ECC);
32kB RAM с ECC;
16kB flash c ECC для эмуляции EEPROM;
16 12-битных АЦП;
19-пиновый программируемый High-End Timer (N2HET);
SPI;
LIN/SCI (UART);
GIO пины;
— Микроконтроллер: RM42L432 (Dual ARM Cortex – R4);В общем я взял побаловаться Hercules RM42X Launchpad.
— Встроенная самопроверка для ЦП и RAM;
— Контроль часов и напряжения;
— Характеристики МК: 100MHz
384kB Flash со встроенными средствами обнаружения и коррекции ошибок (ECC);
32kB RAM с ECC;
16kB flash c ECC для эмуляции EEPROM;
16 12-битных АЦП;
19-пиновый программируемый High-End Timer (N2HET);
SPI;
LIN/SCI (UART);
GIO пины;
— Hercules RM42x отладочная плата;
— USB Micro-B USB-кабель;
— Руководство по быстрому старту.
— RM42L432 DataSheet;
— Схема Hercules LaunchPad;
— Страница на wiki
— Прочая документация.
+23 |
1589
52
|
+145 |
3333
42
|
+45 |
2374
83
|
Если не ошибаюсь TI — тот самый магазин, где можно попросить ламантину в цилиндре?
Я могу в это поверить, тк постоянно общаюсь с людьми не обделёнными чю )) Думаю, будь я продом, я тоже нарисовал бы по мере своих художественных возможностей ))
Ланчпады они отправляют в фирменной упаковке, а сверху коробка FedEx.
При попытке нагуглить нашел несколько вариантов, наиболее правдоподобным кажется вот этот (не реклама, пусть модеры уберут если кто-то считает это рекламой) superbrightleds.com
Разработчики железок это как-то плохо понимают, я всегда вспоминаю старое предисловие к одной книге:
Винда вредная хрень :)
Надо же, любители холиваров «винда vs линукс» заминусовали меня. Я так и ждал ответа, типа «ну я в линуксе консолью постоянно пользуюсь» — так и вышло.
Примитивное мышление — говорить, что винда — вредная хрень. Не собираюсь устраивать тут очередной бессмысленный спор — что лучше, винда или линукс, тем более, что сам пользуюсь и тем и другим, так как каждая система хороша по-своему. Однако, если объективно посмотреть на вещи, именно винда сделала ПК тем, что он представляет собой сейчас. У ОС семейства windows есть недостатки, но это не отменяет их достоинств, которых значительно больше. К сведению, и в винде есть отличная штука, PowerShell, которая позволяет любителям интерфейса командной строки выложиться по полной. Авторы же высказывания из книги, приведённого выше, просто закостенелые ретрограды, которые не смогли разглядеть тенденцию и продолжая пользоваться устаревшими технологиями, смело заявляли, что как раз это и есть правильный путь, а использование удобного и наглядного оконного интерфейса и мыши — это ошибка. Кто из вас, минусователи мои дорогие, может похвастаться, что он не использует ни того ни другого? И Линукс в своё время пришёл к этому, потому что невозможно остановить прогресс. И если настроить сервер прекрасно можно, используя лишь терминал, то для полноценной работы на ПК этого не достаточно уже лет n-цать как. Вы против винды? Что-ж, приготовьтесь отказаться от кучи привычных вещей, например, таких как хорошая 3d графика в фильмах (3ds max, After effects под линуксами не пашут, увы, в крайнем случае можно на Mac OS, но и там в терминале не работают — мышкой вертят, прикинте). А еще откажитесь от хороших архитектурных и промышленных решений — AutoCAD под пингвином тоже, почему-то не работает. Кстати, кто в игры современные поиграть любит — тоже в лес, если винда для вас «вредная хрень». Это лишь поверхностные примеры. Вы, похоже, не особо представляете, какой громадный пласт промышленного ПО работает только под виндой. Это ПО контролирует производство топлива, пищи, одежды, жилья, систем ГОиЧС и прочего-прочего. Есть доля и других ОС во всём этом, но значительно меньшая (я не беру в расчёт встраиваемые системы и контроллеры — только системы для ПК). Винда сделала для современного мира очень много, при всех своих недостатках.
Так что, примитивно мыслят только те, кто до сих пор кричит «Винда отстой, Билл Гейтс мастдай, Линукс рулит» и т.п. Это было модно лет 10-15 назад, когда много где еще работала 98 система, та что падала при всяком удобном случае, хотя ей было далеко по этому параметру до 95 винды, которой пользовались тоже, кстати, и много полезного сделали с её помощью. Те, кто проводит между окнами и линуксом холивары из разряда — вин/отстой, тогда как использовать можно и нужно обе системы, выглядят глупо и сами этого не понимают.
Винда сделала из ПК помойку — невозможность работы без антивируса, опускание большого болта на стандарты… хоть и последние 5 лет стало чуть-чуть лучше, но до этого был полнейший ад — dll hell, любой инсталятор (стандарта-то небыло) — срал в windows/system… даже вспоминать не хочется.
Удобство мыши и гуйни лучше всего понимаешь оставшись один на один с regedit :))
3ds max и after effects, autocad — покупают 0.0001% от пользователей windwos и только 1%, наверное, когда-то слышали про эти приложения — так что совсем мимо кассы.
Последнее время — windows используется только как экран с мордой, а по сути как чукча на космическом корабле («покорми собак, и смотри ничего не трогай»)…
А внутри трудится linux либо что-то более специфичное.
Да сейчас куда не плюнь, в любой железке чуть умее кирпича стоит linux: Телевизоры, телефоны, модемы, всякая домашняя электронника, плееры… он даже иногда настолько сильно запрятан, что ты даже не предпагаешь что это он.
А я тебе скажу почему windows Отстой, прервое что делаешь после установки — лезешь скачивать (либо уже сворованные) приложения, серийники, ломалки и прочее. В linux-же такая проблема отсутвует.
Удобство ГУИ лучше всего понимаешь, в любом приложении, не связанном с набором текста. Ты сейчас с терминала в сети? Или всё же с ГУЯ?
Эти программы использует немного людей, не так мало, конечно, как в твоём предположении, но дело не в использовании самих программ, а в использовании производных труда, продукта, созданного в этих программах. Что в 3D игры никто не играет, или кино не смотрит с современной графикой и эффектами? Все этим пользуются и всё это создано как раз подобным ПО. Это лишь вершина айсберга.
Я не знаю, где винда как экран с мордой используется, но на комбинате, где я работаю, большинство производстенных процессов контролируются ПО под виндой. Не считая встраиваемых систем, как я уже сказал. Ну и сеть естественно вся построена на оборудовании, так или иначе, с линуксом на борту. Я не умаляю ни в коем случае ценность Линукса, и знаю прекрасно, что эта система сейчас используется повсеместно, но и винда не утратила во многих случаях, своих позиций, а учитывая парк старого ПО, которое существует только под окна — она еще и незаменима кое-где.
А насчёт ПО. Линукс-то откуда возьмётся? Также с интернета будет скачан, изначально. Или ты заказываешь диски у производителей дистров? А раз у юзера есть возможность скачть четырёхгиговый образ линукса со всем необходимым ПО, то скачать то же самое для винды он также сумеет, ибо и под винду есть множество свободного ПО. В Линуксе ПО также скачивается с интернета, просто интерфейс поиска и установки из репозиториев удобнее — всё в одном месте. Многое Линукс, в отличие от винды, даёт возможность выполнять сразу после установки, но это не актуальная проблема. Более того, вообще не проблема — интернет сейчас дёшев и доступен. Да и для винды есть сборки энтузиастов, которые уже содержат в себе весь необходимый среднему пользователю софт. Причем практически весь — открытый и бесплатный. Скачай такой, и пользуйся из коробки — никто не мешает. Эта придирка устарела уже несколько лет назад.
И вообще, я еще в первом сообщении сказал, я против холивара на эту тему, ибо сам использую обе системы по необходимости. Я лишь хочу обратить внимание, что винда, какая она не была бы, очень сильно повлияла на распространение ПК и компьютерную грамотность населения. И не соглашаться с этим — только показывать своё невежество.
Я вот у себя дома насчитал — 2 телевизора, 4 телефона, 1 планшет, маршрутизатор интернет, wifi точка доступа, внешний HDD-tray с ethernet…
итого 10 линуксов
Я не считаю еще штук 7-10 всяких девайсов — которые лежат в кладовке и не использутся (несколько старых wifi, голосовые шлюзы, ADSL модем, телефон openmoko и прочие..)
Я не считаю google, я не считаю 90% интернета, я не считаю apache, mysql, php, nginx, 95% почтовых серверов
И ты мне что-то говоришь, что linux «да в то время он бы распространен чуть менее, чем никак» Ты просто не понимаешь масштабов проникновения linux в жизнь широких слоёв населения.
Украв windows сборки энтузиастов, так-же своровав пачку приложений — можно начать работать, либо облазив полинтернета за серийниками.
Ибо 96% пользователей на вопрос какое ПО вы используете — ответят photoshop,msoffice (на 60% ворованный как и сам windows) — у 40% стоит на работе (возможно) честно купленный софт.
Головой подумай. Когда в широкую продажу вышла винда, и когда она была установлена на каждом первом ПК, линукс в этой же среде, в среде пользователей, на ПК, был распростаранён чуть менее, чем никак. И кто бы под него стал писать вирусы, когда его использовали десяток человек из тысяч? При чём тут роутеры, телевизоры и прочее? Я еще в первом комментарии сказал, что «не беру в расчёт встраиваемые системы» имея в виду как раз всё это прикладное оборудование. В то время интернет и сети работали под Unix большей частью, впрочем и сейчас его доля очень не маленькая.
Что ты хотел доказать предыдущим сообщением? Что Линукс везде — да, и я это знаю. Однако везде — лишь в прикладном оборудовании. А в среде ПК у винды нет конкурентов. Линукс пробивается, и, я уверен, пробъется в лидеры, но не теперь. Пожалуй, даже не в лидеры, а в более-менее существенную нишу. И большая часть работы производится на ПК под управлением Окон а не Пингвина. Проведи опыт: зайди в любой офис любой фирмы и в 82,3% ты увидишь какую-либо винду, 9,2% какую-нибудь Мак-ОС, и только в 5% будет Линукс. Источник. Какие ещё могут быть вопросы? UPD: Кстати, поизучай внимательно приведённую по ссылке статистику. Погляди как менялась доля Линукс-пользователей с 2003 года. Почти никак. Увеличилась лишь на 3% примерно. Причём начиная с 2009 года до 2013 доля возросла всего на 1,1% — и это за четыре с половиной года! Это ли не показатель?
Сборки разные бывают, в том числе, состоящие полностью из открытых приложений. А не нравится что-то — никто не мешает сделать свою. Купить нужно будет только винду. При сегодняшней политике ценообразования и разнообразия различных версий — это вовсе не дорого. И за 96% пользователей говорить не нужно. Кроме того, это явно не так, ведь основная масса пользователей — америка, китай и европа. За китай не поручусь, но в америке и европе доля пиратских окон ничтожна.
В общем, я вижу, что по существу тебе просто нечего сказать мне и ты начинаешь перескакивать с темы в тему. Я просто не понимаю, с чем ты вообще споришь? Я всего лишь возразил, что винда далеко не «вредная хрень» как её назвали, а ты начал мне холивар на тему, линукс vs винда. Я сразу сказал, что против таких споров, и сказал я так, потому, что знаю прекрасно и ту и другую систему и обеими пользуюсь, в каждой находя и достоинства и недостатки.
В понятие ПК — замечательно умещаются планшеты, телефоны и О ЧУДО даже телевизоры.
В ТВ сейчас есть весь весь комплект, начиная от соц. сетей, заканчивая скайпами и играми, магазином с программами к ним подключается клавиатура и мышка, есть даже встроенный wifi
Это я про телевизоры цена которых начинается от 10000 руб!
Последние 4 мои работы — количество windows редко превышало 5-10% — да и по большей части из-за какого-нить старого кривого софта. Но я не кричу, что линукс захватил из-за этого мир.
Собственно поэтому вся остальная дискуссия потеряла всякий смысл.
Дискуссия не имела смысла с самого начала, так как это была не дискуссия, а провоцируемый тобой холивар на избитую тему. Чем же винда вредна, как заявил nikitosk, ты так и не смог мне сказать, хотя написал тут кучу текста, а между тем именно этот комментарий положил начало нашему разговору и именно с этим тезисом я был не согласен.
Зато примитивность моего мышления ты быстро уловил, какой молодец, а я ведь так тщательно пытался это скрыть.
«Винда сделала из ПК помойку — невозможность работы без антивируса, опускание большого болта на стандарты…» у меня небыло желания холиварить, я писал про заблуждения с linux.
Ну и конечно под ПК — ты объявил исключетельно «десктопы» и рабочие станции. Всё остальное, если я правильно понял, встраиваемыми системами.
А тем временем, количество устройств на android, уже наверное, перевалило за миллиард! —
Но для тебя ведь, это встраиваемые системы, да? (даже планшет с клавиатурой)
ps. Можешь заниматься своим отрицанием дальше. Спасибо за внимание.
ЗЫ: Тьфу, она же в обзоре упомянута. Это просто автор камента невнимательно читал обзор. Как, впрочем, и я. :)
А этот мой комменнт к тому что не важно «что внутри», главное — Удобная, Простая и Понятная ОБОЛОЧКА ориентированная на ПОЛЬЗОВАТЕЛЯ. К сожалению «технари» не могут понять что мозги других людей работают совсем по-другому и стараются ВСЕХ обратить в «свою веру» (ДОС, Линукс, АСМ и т.д.), в этом их ошибка. Вот Джобс это хорошо понимал, а сейчас и МелкоМягкие осознали.
Главное — ИНТЕРФЕЙС, железо ВТОРИЧНО (его легко «прокачать»).
Это касается всего windows и DOS, unix, android или ios.
Пора уже выпустить ардуинообразную демоплпту с ПЛИС :D
chipnn.ru/51.php
Вот думал там заказать, а как назло в наличие нет STM32F4-DISCOVERY
Находил примеры, вроде даже принцип работы понял. Но дальномер тогда так и не заработал. Нужно булет разобраться с этим…
з.ы. Как вы реализуете обработку сигналов где требуется точность до тактов не используя низкоуровневое программирование?
:-) Хотя почему бы и нет? :-)
А если серьёзно, то не надо путать разные сферы применения, как говорит наш великий президент: «Мухи отдельно, котлеты отдельно»!
А почему нет — да потому что низкий порог вхождения не способствует качеству создаваемого кода.
А качество ЛЮБОГО продукта, не только кода (это программёры упоротые не понимают) зависит от… читайте выше!
или это спонсируемая производителем серия для разарабочиков, которая не предполагает реального более-менее массового использования?
Хотя и существует схожесть программы Энергия с Адруино, но некоторые железяки не работают как следует.А так плата -альтернатива Arduina mega 2560(у которой цена около 14$) по возможностям, хотя немного меньше I/O, но процессор тут быстрее в 5 раз…
Умельцы уже научили работать микроконтроллер с Ethernet ENC28J60 в Энергии, что хорошо расширило возможности применения
Кстати,EK-LM4F120XL пришла за 5 дней в г.Киров.Вот только очередь доставки ждать пришлось долго…
Обзор однозначно плюсую.
Будем надеяться, что в этом году будет не так.
Так что никуда не деться.
После многолетнего использования Почты России, я несколько дней был шоковом состоянии от такой работы FedEx :)
Платы от Texas (в частности MSP430) нормально работают с Ардуиновскими шилдами (датчики всякие, экраны и т.п.) или Ардуиновские шилды только для Ардуино?
Я как-то полгода назад успел урвать пару плат MSP430 ещё по 5-7 баксов, но не нашёл тогда в сети примеров работы с шилдами Ардуино и отложил в долгий ящик…
Автору большое спасибо за труд, жду с нетерпением обзора Hercules и при случае, каких-нибудь примеров практического использования данных плат… :)
может кому пригодится.
Попробуем
хоть я на естор.ти давно зареген
PS. Попробовал — все работает.
Всем новичкам рекомендую посмотреть https://github.com/energia/Energia/wiki/Hardware
Может кто подскажет, пример как работать со встроенным термодатчиком в MSP430G2553?
— Sensor Hub BoosterPack ($ 49.99) — на плате установлен 3х осевой гироскоп, 3х осевой акселерометр и 3х осевой компас, датчик давления, датчик влажности и температуры, ИК датчик света, ИК бесконтактный датчик температуры;
— 430BOOST-SENSE1 ($15.00) — ёмкостная сенсорная панель для платы MSP430.
И даже снизили цены на наборы:
— MSP430 + 430BOOST-SENSE1 ($15.00)
— Tiva™ C Series + BOOSTXL-SENSHUB ($49.99)
— Tiva™ C Series + CC3000BOOST (WiFI модуль) ($43.99);
— MSP-EXP430G2 + CC3000BOOST ($40.99).
А вообще, для долгоиграющих приборов надо копать в сторону MSP430 F серии.
1 — ez430-chronos — $58, но частенько продают с 50% скидкой.
Занимательные часы с датчиками (давление, температура, 3-хосевой гироскоп) и беспроводным интерфейсом и msp430 внутри. Можно залить любой свой код, естественно. Есть на 3 разных диапазона — 433,868,915 MHz
Есть конечно более занятное — Bluetooth Wearable Watch, но $200 — перебор однако.
2 — SensorTag — $25.
Занятная демка для их Bluetooth Low Energy/Bluetooth Smart SoC — CC254x и их датчиков. Опять же куча датчиков и беспроводной интерфейс. На сей раз BLE.
Внимание — работает либо с их USB BLE донглом, либо с iPhone, либо с Android 4.3 телефонами (узок их круг, страшно далеки они от народа©).
4 — EZDSP 5505/5515/5535 — $49/$79/$99
Демоплата с их DSP с USB интерфейсом
Теперь про полезные дополнения к их платкам:
1 — MSP430 Capacitive Touch BoosterPack — $10
Простенькая демка их емкостного интерфейса
2 — СС3000 BoosterPack — $35
WiFi интерфейс к LaunchPad (MSP430 и Tiva)
3 — Sensor Hub BoosterPack — $49
Дополнение для Tiva с кучей разнообразных сенсоров.
4 — C5000 Audio Capacitive Touch BoosterPack — $35
Набор из упомянутого выше емкостного интерфейса правления и c5000 DSP. Можно развлекаться с выводом и обработкой аудио и с управлением этим через msp430
Ну и т.д т.п — там еще много всего.
Также есть бустерпаки и не от TI. Но тут исчезает вкусность бесплатной доставки FedEx.
Ну и приятное дополнение —
1 — у них есть сайт со скидками
Обычно они там правда только ex430-chronos распродают уже 2 года :)
Но бывают и полезные исключения.
2 — периодически они по разным поводам устраивают скидки (то год демоплате, то еще что:) Сейчас например под раздачу попали старые Tiva и MSP430
3 — прям сейчас вроде еще действует Back to School Sale с купоном LP_BTS на MSP430 LaunchPad
4 — конечно не проверял, но в названии DSP может стать причиной отказа пропускать через таможню
upd.: удивительно, сейчас попробовал заказать часы и заказ прошёл. Посмотрим, дойдёт ли. спасибо, сколько раз пробовал заказать часы, но безуспешно, даже уже плюнул на эту затею, а тут решил попробовать и получилось.
4 — я пока тоже не проверял — задач нет интересных. Но, возможно, проверю, когда соберусь с SDR поиграться в следующий раз.
PS. аналогичная история про разрешения была с cc3000 и со SensorTag — отказались отправлять и вежливо рассказали про разрешения на ввоз. Сейчас вот с SensorTag уже получили разрешение — шлют быстро и без проблем.
PPS. забыл еще занятное про часы — heart rate monitor
С дсп интересно поиграться, правда для моих задач он либо медленный, либо слишком дорогой.
Коды соответственно
433 (весь мир) 433_BTS
868 (Европа) 868_BTS
915 (Америка) 915_BTS
Так мне в тот же день написали из TI и сказали, что не могут принять заказ. Якобы федекс ко мне не возит. При этом в течение последнего года я у них сделал 4 заказа и все без проблем до меня добрались.
Почти уверен что за полную стоимость федекс вдруг обнаружит мой закуток у себя в списках доставки))
Вот так вот врут и не краснеют)
Я им, кстати, письмо в ответку написал, мол как же так, другие заказы без проблем отправляли а этот никак… Молчат до сих пор
В нашу деревню они возить перестали, мою посылку с платами развернули. Я потом перезаказал стелларисы на адрес в Нижний Новгород и все без проблем дошло… Но хронос я профукал)
Сейчас вот опять на хроносы скидки, но на все кроме 433Мгц. А остальные не дают оформить в Россию… Будем подождать, может повезет
для IAR
msp430Uart.zip (22 KB)
p.s. за код плюсанул, разумеется)
В противном случае МК перезапустится. В конечном продукте я считаю сторожевой таймер необходим.
Хотя я сейчас только «Энергию» осваивать начал)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.