Например TDA7294

Форум РадиоКот • Просмотр темы - TI MSP430 Launch Pad
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср июл 16, 2025 14:23:15

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 441 ]     ... , , , 13, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Пн июл 08, 2013 20:29:43 
Первый раз сказал Мяу!

Зарегистрирован: Вс дек 02, 2012 21:11:30
Сообщений: 25
Рейтинг сообщения: 0
Доброго времени суток. Имеется АЦП, реализованный на MSP430G2553, работают 4-е канала.
СпойлерADC10CTL0 &= ~ENC;//отключили преобразование (бит должен быть "0" чтобы не возникало проблем с конфигом АЦП,в данном случае смена канала)
ADC10CTL1 = INCH_0;//канал А0
ADC10CTL0 |= ENC + ADC10SC;// аля "конфиг принять" и Start Convertion
LPM0;
a = ADC10MEM;
ADC10CTL0 &= ~ENC;//отключили преобразование (бит должен быть "0" чтобы не возникало проблем с конфигом АЦП,в данном случае смена канала)
ADC10CTL1 = INCH_1;//канал А0
ADC10CTL0 |= ENC + ADC10SC;// аля "конфиг принять" и Start Convertion
LPM0;
b = ADC10MEM;
DC10CTL0 &= ~ENC;//отключили преобразование (бит должен быть "0" чтобы не возникало проблем с конфигом АЦП,в данном случае смена канала)
ADC10CTL1 = INCH_2;//канал А0
ADC10CTL0 |= ENC + ADC10SC;// аля "конфиг принять" и Start Convertion
LPM0;
c = ADC10MEM;
ADC10CTL0 &= ~ENC;//отключили преобразование (бит должен быть "0" чтобы не возникало проблем с конфигом АЦП,в данном случае смена канала)
ADC10CTL1 = INCH_3;//канал А0
ADC10CTL0 |= ENC + ADC10SC;// аля "конфиг принять" и Start Convertion
LPM0;
d = ADC10MEM;

Необходимо для каждой переменной, реализовать усреднение. По железной части вылизано все - фильтры НЧ на входе, соединение с датчиками витой парой и т.д. Наблюдается дребезг входного сигнала - на последнем разряде (принимаемое число 4-х разрядное).
Помогите с реализацией алгоритма на С.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Пн июл 08, 2013 22:09:58 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 611
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3733
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Поставьте весь код в цикл, выполняемый, например, 4 раза и суммируйте показания. Например,
a += ADC10MEM;
Перед входом в цикл значение а следует обнулить. По выходу из цикла разделите а на 4. Еще лучше сделать скользящее среднее, см. в Википедии.

А последний разряд всегда будет плавать даже с идеальным АЦП, т.к. в каждом сигнале есть шум.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Вс июл 21, 2013 11:09:17 
Родился
Аватар пользователя

Зарегистрирован: Вс июл 21, 2013 11:01:50
Сообщений: 2
Рейтинг сообщения: 0
Здравствуйте!
Купил на днях лаунчпад с целью научиться работать с микроконтроллерами, ну и в целом хотябы паять :D
До этого кодил на asm'e по мелочи.
Сделал, чтобы лампочка мигала, всё ок.
Решил потом по нажатию на кнопу включать и выключать лампочку(без мигания).
И тут что-то пошло не так! Сначала долго искал, как вообще обрабатывать прерывания(на С много примеров, на ASM'e, да еще и IAR'овском, примеров с этим маловато).
Потом вроде сел обрабатывать, но не тут то было! По нажатию на кнопу не происходит ровным счетом ничего, зато когда трогаю ногу P1.3, срабатывает и обрабатывается прерывание.
Внимание - вопрос: почему на кнопку то не реагирует?
И вдогонку еще один - когда трогаю контакт, прерывание срабатывает n раз, пока не отпущу, т.е. лампочка хаотично включается-выключается. Как бы заставить её независимо от длины нажатия срабатывать только один раз?

Немножко увлекательного кода:
Спойлер
Код:
#include "msp430.h"                     ; подключаем заголовочный файл

        NAME    main                    ; имя модуля
        PUBLIC  main                    ; установить видимость модуля из других

        ; Вектора прерываний
        RSEG    INTVEC
        ORG     RESET_VECTOR           ; вектор сброса
        DC16    init
        ORG     PORT1_VECTOR
        DC16    P1_ISR

        RSEG    CSTACK                  ; объявление сегмента стека

        RSEG    CODE                    ; объявление сегмента кода

init:   
        MOV     #SFE(CSTACK), SP        ; инициализация регистра стека

main:                                   ; начало основной части
        MOV.W   #WDTPW+WDTHOLD,&WDTCTL  ; запрет сторожевого таймера
       
        bis.b #BIT3, &P1IE
        bis.b #BIT3, &P1IES
        bic.b #BIT3, &P1IFG
       
        bis.w #GIE, SR
       
        MOV.b #40h, &P1DIR
        MOV.b #0, &P1OUT
       
        XOR.b #BIT6, &P1OUT
        JMP $                           ; jump to current location '$'

P1_ISR:
        XOR.b #BIT6, &P1OUT
        bic.b #BIT3, &P1IFG            ; P1.3 IFG Cleared
        reti                            ; Return from ISR

        END


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Вс июл 21, 2013 12:59:40 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 611
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3733
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Vyvod knopki nado podtyanut' k pitaniyu I obrabatyvat' drebezg.
Po ostal"nym voprosam sm. knigu J. Davies "MSP430 basics...". Ona est' v seti dlya skachivaniya.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Вс июл 21, 2013 16:49:40 
Родился
Аватар пользователя

Зарегистрирован: Вс июл 21, 2013 11:01:50
Сообщений: 2
Рейтинг сообщения: 0
А что такое "подтянуть" и "дребезг" ?))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Вс июл 21, 2013 17:34:58 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 611
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3733
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
"подтянуть" = см. pull up resistor
mov #0x08, &P1OUT
mov #0x08, &P1OUT
"дребезг" = см. debouncing v wikipedia.com
http://processors.wiki.ti.com/index.php ... PushButton
А вообще, читайте книгу, что я рекомендовал выше. Там есть ответы на все заданные Вами выше вопросы.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Пн июл 22, 2013 19:14:12 
Открыл глаза

Зарегистрирован: Чт июл 04, 2013 15:15:22
Сообщений: 43
Рейтинг сообщения: 0
Подскажите, а приведённый мною код не работает потому что среди всевозможных тактовых сигналов для всего и вся можно поставить только один?
P.S. Не могу точно найти подтверждающую мою инфу (плохо ищу).
P.S.2 код [пока не] выводит сообщение в com-порт на PC, когда меняет состояние светодиодов.

Спойлер#include "io430g2553.h"

#include "string."

unsigned int sch=0, zaderzhka = 1; //счётчик, и "какждый какое по счёту" срабатываний прерывания таймера будут вкл/выкл светодиоды
string str = "ok";

char c='l';

void UARTWriteString(string str);

int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;

//готовим порт1 с диодам
P1DIR = BIT0 + BIT6; //инициализируем выходы 0 и 6 (на 0 выведен красный светодиод, на 6 - зелёный)
P1OUT = BIT6; //ставим выход 6 в 1

//готовим таймер
CCTL0 = CCIE; //Capture/Compare разрешаем прерывание по переполнению счётчика-таймера
TACTL = TASSEL_2 + MC_2 + ID_3; //Timer_A Control, источник тактов на SMCLK (SubMainCLocK), и режим таймера - continuous, и (медленнее в 8 раз) делитель 8
__bis_SR_register(CPUOFF + GIE); //флаги в Status Register: экономичный режим CPUOFF и разрешаем глобально прерывания GIE

BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt

UARTWriteString("---Привет, Хабр!---");
}

#pragma vector = TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_PRE (void)
{
sch++;
if ((sch%zaderzhka)==0)
{
P1OUT ^= BIT0 + BIT6; //вкл и выкл диоды
UARTWriteString(str);
}

}

void UARTWriteString(string str)
{
//тестовый посыл в uart-порт
int strSize = str.length();
for(int i = 0; i < strSize; i++)
{
//WDTCTL = WDTPW + WDTCNTCL; // Сброс таймера watchdog в ноль.
while (!(IFG2&UCA0TXIFG))
; // Проверка готовности буфера отправки.
UCA0TXBUF = c;//str[i];
}
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Пн июл 22, 2013 19:37:32 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7517
Рейтинг сообщения: 0
Нет. Настройка не завершается.

После

Код:
__bis_SR_register(CPUOFF + GIE); //флаги в Status Register: экономичный режим CPUOFF и разрешаем глобально прерывания GIE


CPU сразу засыпает. И все это

Код:
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
P1SEL2 = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt

UARTWriteString("---Привет, Хабр!---");


Не выполняется. Соответственно, UART не инициализируется.

P.S.

Казалось бы, причем тут Хабр? :)

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Пн июл 22, 2013 19:46:31 
Открыл глаза

Зарегистрирован: Чт июл 04, 2013 15:15:22
Сообщений: 43
Рейтинг сообщения: 0
YS писал(а):
Не выполняется. Соответственно, UART не инициализируется.

P.S.

Казалось бы, причем тут Хабр? :)

а.. так это я уже кинулся копироввать справа и слева (т.е. с инета), лишь бы найти весточку-зацепку почему не работает. :)

Так моё предположение о том, что может быть только один источник тактовых сигналов, от которого всё и вся и работает, не верно?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Вт июл 23, 2013 12:14:12 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7517
Рейтинг сообщения: 0
Понятно, что у одного конкретного модуля может быть только один источник тактирования. А дальше давайте обратимся к документации.

Стр. 274 User's Guide:

Изображение

Кстати, снизу этой страницы в документации есть важные замечания, которые не вошли в скриншот.

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

Мораль: каждая из трех линий тактирования может быть подключена только к одному генератору из доступных и каждый модуль может быть подключен только к одной (произвольной) линии тактирования из этих трех. Что, в общем, естесственно.

Тактировать все модули от одной линии (если Вы об этом) необязательно.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Вт июл 23, 2013 12:51:04 
Открыл глаза

Зарегистрирован: Чт июл 04, 2013 15:15:22
Сообщений: 43
Рейтинг сообщения: 0
Да, я об этом! Спасибо! :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Вт июл 23, 2013 12:58:16 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7517
Рейтинг сообщения: 0
Не за что. :)

Только надо иметь в виду, что, если модули подключены к физически разным генераторам, могут возникнуть проблемы с синхронизацией. Подробнее см. в мануале.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Чт июл 25, 2013 10:17:40 
Открыл глаза

Зарегистрирован: Чт июл 04, 2013 15:15:22
Сообщений: 43
Рейтинг сообщения: 0
Приветствую всех ещё раз. :)
Теперь я написал программу, по нажатию кнопки меняющая скорость мигания светодиодам.
Работает так:
- нажал на кнопку - и мигание происходит в 2 раза быстрее.
- и так далее, пока мигание не станет максимально быстрым. Если мигание самое быстрое, то при очередном нажатии кнопки мигание светодиодами становится самым медленным.
При "нормальной" работе требуется 6 нажатий, для прохода от самого медленного мигания до самого медленного же, по кругу.

Работает.:) Проблема в том, что для прохода от самого медленного мигания до самого медленного же по кругу, проходит разное количество нажатий - то 6, то 5, а то и 4.
Никак не могу понять, в чём дело.
Пробовал сбрасывать таймер, останавливать вручную прерывания (при обработке прерываний) - нивкакую.

Подскажите, в чём проблема.
P.S.Код привёл. В нём то, что я добавил для отладки, я отметил пустым //.
Спойлер#include "io430g2553.h"

unsigned int maxPause=0x1F;//FFF;
unsigned int maxDelitel = 16;
unsigned int i_time = 0, i_delitel = 1;

void timer_run();

int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;

//готовим порт с диодам
P1DIR = (BIT0 + BIT6); //инициализируем выходы 0 и 6
P1OUT = BIT6; //ставим выход 6 в 1

//готовим таймер
CCTL0 = CCIE; //разрешаем прерывание по переполнению счётчика-таймера
timer_run();
__enable_interrupt(); //глобально разрешаем прерывания в status register

//готовим кнопку
P1REN |= BIT3; //разрешаем подтяжку
P1OUT |= BIT3; //подтяжка вывода P1.3 вверх, иначе будет всегда срабатывать if ((P1IN & BIT3) == 0)

P1IFG &= ~BIT3; // Очистка флага прерываний для P1.3
// P1IES |= BIT3; // Прерывание происходит по 1/0 (отпусканию/нажатию)
P1IE |= BIT3; //разрешаем прерывание для P1.3

while(1);
}

//
void timer_run()
{
TACTL = 0; //останов таймера

//используются три системных тактовых сигнала: ACLK, MCLK и SMCLK и INCLK (INCLK is device-specific)
TACTL = (TASSEL_2 + MC_2 + ID_0); //ставим источник тактов на SMCLK, и режим таймера - continuous, и делитль =1 (1 2 4 8)
}

//прерывание по таймеру используем для вкл/выкл с/диодов
#pragma vector = TIMER0_A0_VECTOR //приоритет 0xFFF0
__interrupt void TIMER0_A0_PRE (void)
{
//
__disable_interrupt(); //глобально запрещаем прерывания в status register

i_time += i_delitel;
if (i_time >= maxPause)
{
P1OUT ^= (BIT0 + BIT6);
i_time = 0;
}

//
__enable_interrupt(); //глобально разрешаем прерывания в status register
}

//прерывание по кнопке используем для игр с паузой
#pragma vector = PORT1_VECTOR //приоритет 0xFFE4
__interrupt void PORT1_VECTOR_PRE (void)
{
//
__disable_interrupt(); //глобально запрещаем прерывания в status register

P1IE &= ~BIT3; // Запрет прерываний на P1.3
if (i_delitel<=maxDelitel) i_delitel *= 2;
else i_delitel = 1;
P1IFG &= ~BIT3; // Очистка флага прерываний для P1.3, т.к. это прерывание имеет несколько флагов
P1IE |= BIT3; // Разрешение прерываний на P1.3
timer_run();

//
__enable_interrupt(); //глобально разрешаем прерывания в status register
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Чт июл 25, 2013 10:45:52 
Опытный кот
Аватар пользователя

Карма: 6
Рейтинг сообщений: 33
Зарегистрирован: Ср мар 02, 2011 07:47:39
Сообщений: 841
Откуда: Уфа
Рейтинг сообщения: 0
Ну опять таки дребезг. Введите хотя бы паузу в PORT1_VECTOR


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Чт июл 25, 2013 12:29:44 
Открыл глаза

Зарегистрирован: Чт июл 04, 2013 15:15:22
Сообщений: 43
Рейтинг сообщения: 0
Psych писал(а):
Введите хотя бы паузу в PORT1_VECTOR

спасибо, проблема решена. :)

И ещё вопрос. Как я понял, самый цивилизованный метод решения - это делать паузу используя второй таймер (предварительно запретив прерывания от кнопки), в срабатывании которого разрешается прерывания от кнопки. Так?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Чт июл 25, 2013 13:50:57 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7517
Рейтинг сообщения: 0
Цитата:
делать паузу используя второй таймер


Это обычно избыточно. Я чаще всего делаю так (код - в псевдо-именах):

Код:
#define MY_PORT_IN   ...
//битовая маска кнопки
#define MY_BUTTON    ...


...


while (MY_PORT_IN & MY_BUTTON) //если кнопка подключена к питанию
{
  delay_ms(10);
}



Т.е., просто ждем, пока кнопку не отпустят. Ну и хорошо бы еще и аппаратный debounce добавить. Тот же конденсатор параллельно кнопке.

Код:
#pragma vector = TIMER0_A0_VECTOR //приоритет 0xFFF0
__interrupt void TIMER0_A0_PRE (void)
{
 //
 __disable_interrupt(); //глобально запрещаем прерывания в status register

...


Этого не нужно. При входе в прерывание остальные запрещаются автоматически.

User's Guide, стр. 35:

Цитата:
2.2.3.1 Interrupt Acceptance
The interrupt latency is 5 cycles (CPUx) or 6 cycles (CPU), starting with the acceptance of an interrupt
request and lasting until the start of execution of the first instruction of the interrupt-service routine, as
shown in Figure 2-6. The interrupt logic executes the following:
1. Any currently executing instruction is completed.
2. The PC, which points to the next instruction, is pushed onto the stack.
3. The SR is pushed onto the stack.
4. The interrupt with the highest priority is selected if multiple interrupts occurred during the last
instruction and are pending for service.
5. The interrupt request flag resets automatically on single-source flags. Multiple source flags remain set
for servicing by software.
6. The SR is cleared. This terminates any low-power mode. Because the GIE bit is cleared, further
interrupts are disabled.

7. The content of the interrupt vector is loaded into the PC: the program continues with the interrupt
service routine at that address.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Последний раз редактировалось YS Чт июл 25, 2013 14:10:19, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Чт июл 25, 2013 14:01:14 
Открыл глаза

Зарегистрирован: Чт июл 04, 2013 15:15:22
Сообщений: 43
Рейтинг сообщения: 0
Спасибо!

А ещё, в IAR переменной типа string нельзя присваивать значение, кроме как при создании переменной. Простейший выход - использовать массив символов?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Чт июл 25, 2013 14:08:58 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7517
Рейтинг сообщения: 0
Цитата:
переменной типа string


Забудьте про string. В стандарте С такого нет.

Строка в С - массив ASCII-кодов, заканчивающийся нулем (именно нулем, не ASCII-кодом нуля). Все функции из string.h работают именно с такими строками.

Все "присвоения" строк (кроме как при инициализации) - это уже ООП с неявными вызовами методов и сопутствующим выжиранием ресурсов. Для ПК это удобно и гламурно, для МК - ненужная красотулька.

Вот такая запись

Код:
uint8_t str[] = {"Hello"};


Определяет строку в стандарте С. Компилятор здесь сам положит завершающий ноль. А можно сделать так:

Код:
uint8_t str[6];

...

str[0]='H';
str[1]='e';
str[2]='l';
str[3]='l';
str[4]='o';
str[5]=0;

...


Это одно и то же.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Чт июл 25, 2013 15:06:50 
Открыл глаза

Зарегистрирован: Чт июл 04, 2013 15:15:22
Сообщений: 43
Рейтинг сообщения: 0
YS, спасибо!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: TI MSP430 Launch Pad
СообщениеДобавлено: Чт июл 25, 2013 16:04:07 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7517
Рейтинг сообщения: 0
Не за что. :)

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 441 ]     ... , , , 13, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y