Перейти к содержанию
    

MSP430 - снова вопросы от чайника

А вообще, как говорил кот Матроскин, холодильник чей - государственный, а холод, который он вырабатывает - наш.

 

Так же и тут.

Компилятор - GPL, а код, который он вырабатывает - наш.

Вы явно не читали или читали невнимательно текст GNU GENERAL PUBLIC LICENSE :(

Насколько я понимаю, лицензия GPL предписывает предоставлять по первому требованию исходники самого компилятора, но не код, им произведенный.
При компиляции используются какие-то библиотеки компилятора, так? Так вот, если полученный в результате компиляции код содержит внутри себя хотя бы часть этой библиотеки (например, библиотеки вычислений с "плавучкой"), то весь он попадает под действие лицензии GPL. Если же какие-то части программы, имеющие возможность функционировать самостоятельно и не содержащие компоненты, попадающие под действие GPL, были лишь скомпилированы GNU-тым компилятором, тогда да, они также свободны от действия GPL.

 

Давайте не будем засорять ветку :bb-offtopic:. Если вопрос лицензий free software и open source волнует кого-то, то можно завести отдельный топик.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При компиляции используются какие-то библиотеки компилятора, так? Так вот, если полученный в результате компиляции код содержит внутри себя хотя бы часть этой библиотеки (например, библиотеки вычислений с "плавучкой"), то весь он попадает под действие лицензии GPL.

 

Библиотеки обычно не gpl, а lgpl. Но тут надо конечно быть очень внимательным...

 

Давайте не будем засорять ветку :bb-offtopic:. Если вопрос лицензий free software и open source волнует кого-то, то можно завести отдельный топик.

 

Я был бы не против почитать такой топик:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. Такие вопросы -

сейчас я прошиваю контроллер самодельной отладкой, схему которой советовали, по-моему, вы, rezident - она питается с платы, 3,3 В. В дальнейшем хочу использовать MSP-FET430PIF, так как требования - либо на свою отладку оформлять докуметацию по всем правилам, либо пользоваться готовой. и вот вопрос - у MSP-FET430PIF питание от LPT - мне сказали, что это опасно, что LPT часто горят, если программатор питается прямо от порта. Это правда? насколько часто? :) Может, лучше не покупать этот MSP-FET430PIF?

И еще - не совсем в по теме. Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров? И, желательно, планарный :) Не могу найти, на такую частоту все какие-то здоровые, а нужно сокращать размеры платы :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В дальнейшем хочу использовать MSP-FET430PIF, так как требования - либо на свою отладку оформлять докуметацию по всем правилам, либо пользоваться готовой. и вот вопрос - у MSP-FET430PIF питание от LPT - мне сказали, что это опасно, что LPT часто горят, если программатор питается прямо от порта. Это правда? насколько часто? :) Может, лучше не покупать этот MSP-FET430PIF?
Согласен. MSP-FET430PIF покупать не нужно в любом случае :). Если вам нужен индивидуальный отладчик и программатор, то купите лучше MSP-FET430UIF или его полнофункциональный клон MSPLink. Olimex-овский USB-FET покупать не рекомендую.

Если же вы хотите передать прошивку кристаллов на производство, то лучше сразу купить MSP-GANG430. Мы покупали в Терраэлектронике.

Преимущества:

- можно программировать до 8ми кристаллов одновременно.

- все кристаллы можно запитать непосредственно от MSP-GANG430.

- поддерживает функцию прожигания fuse.

- можно загрузить прошивку в программатор и использовать его автономно, т.е. он не требует обязательного наличия компьютера. С компьютера вы только загружаете образ прошивки и конфигурацию программирования через последовательный интерфейс RS-232. Соответственно при отсутствии в компе RS-232 можно дополнить программатор любым готовым кабелем USB-COM и работать дальше. В случае же LPT-ного MSP-FET430PIF и отсутствия LPT-порта вы получите массу трудностей.

- MSP-GANG430 поддерживает все предыдущие и последующие серии MSP430, т.е. у него есть перспективы техподдержки. Например, аналогичный по функциям MSP-PRGS430 уже сейчас не поддерживает интерфейс Spy-Bi-Wire и некоторые кристаллы из серии MSP430x2xx.

- чуть не забыл упомянуть главное достоинство MSP-GANG430 для производства, на котором не всегда адекватные по знаниям люди работают :) У MSP-GANG430 из органов управления всего ОДНА кнопка! ;) Из индикации два ряда светодиодов (красные и зеленые). Обучить нажатию на кнопку можно даже неквалифицированный персонал. :biggrin:

Кстати, раз вы планируете программировать кристаллы уже запаянные в плату, то обдумайте стоит ли для этого использовать именно JTAG? Я, например, в серийных устройствах на MSP430 вывожу для программирования сигналы BSL. Во-первых, требуется меньше контактов (всего 6). Во-вторых, BSL позволяет и в дальнейшем менять firmware, когда уже установлена защита (fuse уже пережжен) и JTAG не работает.

И еще - не совсем в по теме. Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров? И, желательно, планарный :) Не могу найти, на такую частоту все какие-то здоровые, а нужно сокращать размеры платы :(
Посмотрите резонаторы фирм Geyer Electronic и Golledge. Мы часовой (32768Гц) KX-327LT от Geyer недавно начали применять, размеры его всего 1,5х7мм. Продукцией Geyer Electronic торгует Компел и Терраэлектроника, а продукцию Golledge представляет фирма ЭФО.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

мне сказали, что это опасно, что LPT часто горят, если программатор питается прямо от порта. Это правда?
Нет, неправда. Горит не от питания, а от бестолковости питающего. Когда корпус компьютера не заземлен, когда втыкают в запитанное устройство, питающееся от незаземленного блока питания, ну и т.д. Для MSP-FET430PIF питание от порта - один из штатных режимов.

Может, лучше не покупать этот MSP-FET430PIF?
Да. Лучше купите MSP-FET430UIF. Это почти то же самое, только от USB. И питание от него тоже можно брать.

Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров?
Выбирайте: "Чип И Дип", Кварцевые резонаторы (Всего товаров: 357)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, но мне, как пока неквалифицированному программисту, хотелось бы все же программить именно на плате, сразу непосредсственно смотреть сигналы с датчиков. Возможность BSL заложу, но с JTAG мне гораздо проще - удобно отлаживать все это дело, то так, то так попробовать :) А с полноценным отладчиком не знаю, как и работать :biggrin: такой парадокс. Пробовать ведь надо на реальной плате :05: а так - вставить кристалл и... чего дальше? :biggrin: Мое парадоксальное мышление проявляется тут с новой силой :biggrin: Когда прога будет уже окончательно выверена, тогда, конечно - вставил кристалл, прошил - давай следующий. Но окончательно - это еще неизвестно когда, к тому же задание постоянно меняется :biggrin:

Значит PIF - не пойдет? A UIF - разве позволяет программировать прямо на плате?

Резонаторы посмотрю, спасибо

Изменено пользователем Daria

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Значит PIF - не пойдет? A UIF - это ведь тоже отдельная коробка :)
Для вашего нынешнего случая (MSP430F149) подойдет и PIF и UIF. Я вам на будущее/перспективу рекомендации давал. Для отладки конечно же лучше нормальный отладчик. BSL это для серии и техподдержки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для вашего нынешнего случая (MSP430F149) подойдет и PIF и UIF. Я вам на будущее/перспективу рекомендации давал. Для отладки конечно же лучше нормальный отладчик. BSL это для серии и техподдержки.

А UIF позволяет программировать прямо на плате? Как-то он так выглядит... я думала. что нет. по его внешнему виду :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А UIF позволяет программировать прямо на плате? Как-то он так выглядит... я думала. что нет. по его внешнему виду :biggrin:
Конечно позволяет. Он функционально более расширен по сравнению с MSP-FET430PIF. В принципе вы даже сами можете изготовить MSP-FET430UIF ;) Схема его имеется в slau138, а прошивку тут в форуме где-то выкладывали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как-то он так выглядит... я думала. что нет. по его внешнему виду :biggrin:
Эээ... А вы его случайно с ez430 (USB-"свистком") не перепутали? FET430-UIF внешне отличается от FET430-PIF (если не изменяет память) только кабелем к компьютеру.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эээ... А вы его случайно с ez430 (USB-"свистком") не перепутали?

Ага, точно :biggrin: Теперь понятно, спасибо. Кварц, кстати, подходящий нашла у Murata - CSTCE8M0G53 - нормальный? :)

Теперь дальше.

rezident, пытаюсь воспроизвести что-то вроде протоколоа SLIP, который вы упоминали. Вот текст.

#define sizeBufTx 16
#define sizeBufRx 16

unsigned char bufRx[sizeBufRx];
unsigned char bufTx[sizeBufTx];

typedef struct CharBuffer
{
    unsigned char* Data;            
    int NData;                        
    int cData;                        
    int pWrite;                        
    int pRead;                        
}
CharBuffer;
void BufferReset(CharBuffer* pBuffer)
{
    pBuffer->pWrite = 0;
    pBuffer->pRead = 0;
    pBuffer->cData = 0;
}
int    BufferWrite(CharBuffer* pBuffer,unsigned char Byte)
{
    if(pBuffer->cData == pBuffer->NData - 1)
        return 1;                    
    pBuffer->Data[pBuffer->pWrite] = Byte;
    if(pBuffer->pWrite == pBuffer->NData - 1)
        pBuffer->pWrite = 0;
    else
        pBuffer->pWrite++;
    pBuffer->cData++;
    return 0;
}
int BufferRead(CharBuffer* pBuffer, unsigned char* Byte)
{
    if(pBuffer->cData == 0)
       return 1;                    
    *Byte = pBuffer->Data[pBuffer->pRead];
    if(pBuffer->pRead == pBuffer->NData - 1)
        pBuffer->pRead = 0;
    else
        pBuffer->pRead++;
    pBuffer->cData--;
    return 0;
}

struct CharBuffer UARTTxBuf, UARTRxBuf;
void WriteTxbuf(int* data, char size)
{
    unsigned char a, j;
    if ((IE1 & UTXIE0) == 0)        
    {
        BufferWrite(&UARTTxBuf, 0xC0);
        for(j = 0; j < size; j++)
        {
          
            a = data[j] & 0xFF;
            switch (a)
            {
                case 0xC0:
                {
                    BufferWrite(&UARTTxBuf, 0xDB);
                    BufferWrite(&UARTTxBuf, 0xDC);
                    break;
                }
                case 0xDB:
                {
                    BufferWrite(&UARTTxBuf, 0xDB);
                    BufferWrite(&UARTTxBuf, 0xDD);
                    break;
                }
                default:
                    BufferWrite(&UARTTxBuf, a);
            }
            
            a = data[j] >> 8;
            switch (a)
            {
                case 0xC0:
                {
                    BufferWrite(&UARTTxBuf, 0xDB);
                    BufferWrite(&UARTTxBuf, 0xDC);
                    break;
                }
                case 0xDB:
                {
                    BufferWrite(&UARTTxBuf, 0xDB);
                    BufferWrite(&UARTTxBuf, 0xDD);
                    break;
                }
                default:
                    BufferWrite(&UARTTxBuf, a);
            }
            BufferWrite(&UARTTxBuf, 0xC0);
        }
        
        IE1 |= UTXIE0;                    
        IFG1 |= UTXIFG0;            
    }
}


void ReadRxbuf(unsigned char *data)
{
    IE1 &= ~URXIE0;
    BufferRead(&UARTRxBuf, data);
    
    IE1 |= URXIE0;
}

Потом в main

char i, txsize;
    unsigned char rxdata;
    int txdata[sizeBufTx];
BufferReset(&UARTRxBuf);
    UARTRxBuf.NData = sizeBufRx;
    UARTRxBuf.Data = bufRx;
    BufferReset(&UARTTxBuf);
    UARTTxBuf.NData = sizeBufTx;
    UARTTxBuf.Data = bufTx;

Ну. и вся остальная настройка всего , потом

 

IE1 |= URXIE0;
_BIS_SR(GIE);    
for(;;)
    {
        rxdata = 0;
        txsize = 0;
        ReadRxbuf(&rxdata);
        if (rxdata)
        {
            txdata[txsize++] = rxdata;

            WriteTxbuf(txdata, txsize);
            
        }
    }
}

#pragma vector = UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
    BufferWrite(&UARTRxBuf, U0RXBUF);
}


#pragma vector = USART0TX_VECTOR
__interrupt void usart0_tx (void)
{
    unsigned char data;
    if (!BufferRead(&UARTTxBuf, &data))        
        U0TXBUF = data;
    else
        IE1 &= ~UTXIE0;                        
}

 

Байты C0 - END, начало и конец посылки, DB - ESC. Если такой байт встречается в самой посылке, то он заменяется на два - DB,DС или DB, DD - ну, вы-то уж. наверное, знаете этот протокол.

В чем проблема -

вроде бы все работает, но -

при сбросе питания всегда присылается 0 или 0,1. При включении - тоже. откуда это берется - не понятно :( И в первой после включения питания посылке теряется первый стартовый C0 - т.е. теряется-то вся посылка, а это недопустимо для меня - моя плата должна отсылать управляющие команды на другую - потеря одной команды приведет к проблемам. почему теряется - тоже никак не могу понять :(

Вот. Будет время - спаите. помогите :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не вижу функции инициализации UART, но попробуйте перед тем как разрешать прерывание от приемника UART (по)чистить его флаги.

В строках

IE1 |= UTXIE0;

IFG1 |= UTXIFG0;

следует поменять их очередность.

Кроме того, функции работы с буфером у вас не полностью реентерабельные. Они не обеспечивают атомарности доступа к переменным индекса и счетчика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров?
А не лучше ли использовать DCO с внешним резистором, если толщина схемы важнее стабильности частоты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кварц, кстати, подходящий нашла у Murata - CSTCE8M0G53 - нормальный?

 

Мы используем Муратовские керамические трёхногие SMD-шные резонаторы с установлеными в них емкостями.

CSTCE8M00G55A-R0 - на 8МГц

CSTCR6M00G53-R0 - на 6МГц

И довольны.Murata_Ceramic_Resonators__CERALOCK_.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...