|
|
  |
MSP430 - снова вопросы от чайника, Вопросы от чайника про MSP и магнитный компас |
|
|
|
Sep 13 2008, 20:13
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(MrYuran @ Sep 13 2008, 23:31)  А вообще, как говорил кот Матроскин, холодильник чей - государственный, а холод, который он вырабатывает - наш.
Так же и тут. Компилятор - GPL, а код, который он вырабатывает - наш. Вы явно не читали или читали невнимательно текст GNU GENERAL PUBLIC LICENSE  Цитата(Сергей Борщ @ Sep 14 2008, 00:20)  Насколько я понимаю, лицензия GPL предписывает предоставлять по первому требованию исходники самого компилятора, но не код, им произведенный. При компиляции используются какие-то библиотеки компилятора, так? Так вот, если полученный в результате компиляции код содержит внутри себя хотя бы часть этой библиотеки (например, библиотеки вычислений с "плавучкой"), то весь он попадает под действие лицензии GPL. Если же какие-то части программы, имеющие возможность функционировать самостоятельно и не содержащие компоненты, попадающие под действие GPL, были лишь скомпилированы GNU-тым компилятором, тогда да, они также свободны от действия GPL. Давайте не будем засорять ветку  . Если вопрос лицензий free software и open source волнует кого-то, то можно завести отдельный топик.
|
|
|
|
|
Sep 15 2008, 17:38
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(rezident @ Sep 14 2008, 02:13)  При компиляции используются какие-то библиотеки компилятора, так? Так вот, если полученный в результате компиляции код содержит внутри себя хотя бы часть этой библиотеки (например, библиотеки вычислений с "плавучкой"), то весь он попадает под действие лицензии GPL. Библиотеки обычно не gpl, а lgpl. Но тут надо конечно быть очень внимательным... Цитата Давайте не будем засорять ветку  . Если вопрос лицензий free software и open source волнует кого-то, то можно завести отдельный топик. Я был бы не против почитать такой топик
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Sep 23 2008, 18:33
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Здравствуйте. Такие вопросы - сейчас я прошиваю контроллер самодельной отладкой, схему которой советовали, по-моему, вы, rezident - она питается с платы, 3,3 В. В дальнейшем хочу использовать MSP-FET430PIF, так как требования - либо на свою отладку оформлять докуметацию по всем правилам, либо пользоваться готовой. и вот вопрос - у MSP-FET430PIF питание от LPT - мне сказали, что это опасно, что LPT часто горят, если программатор питается прямо от порта. Это правда? насколько часто?  Может, лучше не покупать этот MSP-FET430PIF? И еще - не совсем в по теме. Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров? И, желательно, планарный  Не могу найти, на такую частоту все какие-то здоровые, а нужно сокращать размеры платы
|
|
|
|
|
Sep 23 2008, 19:56
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(Daria @ Sep 24 2008, 00:33)  В дальнейшем хочу использовать 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 из органов управления всего ОДНА кнопка!  Из индикации два ряда светодиодов (красные и зеленые). Обучить нажатию на кнопку можно даже неквалифицированный персонал. Кстати, раз вы планируете программировать кристаллы уже запаянные в плату, то обдумайте стоит ли для этого использовать именно JTAG? Я, например, в серийных устройствах на MSP430 вывожу для программирования сигналы BSL. Во-первых, требуется меньше контактов (всего 6). Во-вторых, BSL позволяет и в дальнейшем менять firmware, когда уже установлена защита (fuse уже пережжен) и JTAG не работает. Цитата(Daria @ Sep 24 2008, 00:33)  И еще - не совсем в по теме. Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров? И, желательно, планарный  Не могу найти, на такую частоту все какие-то здоровые, а нужно сокращать размеры платы  Посмотрите резонаторы фирм Geyer Electronic и Golledge. Мы часовой (32768Гц) KX-327LT от Geyer недавно начали применять, размеры его всего 1,5х7мм. Продукцией Geyer Electronic торгует Компел и Терраэлектроника, а продукцию Golledge представляет фирма ЭФО.
|
|
|
|
|
Sep 23 2008, 20:01
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Daria @ Sep 23 2008, 21:33)  мне сказали, что это опасно, что LPT часто горят, если программатор питается прямо от порта. Это правда? Нет, неправда. Горит не от питания, а от бестолковости питающего. Когда корпус компьютера не заземлен, когда втыкают в запитанное устройство, питающееся от незаземленного блока питания, ну и т.д. Для MSP-FET430PIF питание от порта - один из штатных режимов. Цитата(Daria @ Sep 23 2008, 21:33)  Может, лучше не покупать этот MSP-FET430PIF? Да. Лучше купите MSP-FET430UIF. Это почти то же самое, только от USB. И питание от него тоже можно брать. Цитата(Daria @ Sep 23 2008, 21:33)  Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров? Выбирайте: "Чип И Дип", Кварцевые резонаторы (Всего товаров: 357)
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Sep 23 2008, 20:12
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Ага, но мне, как пока неквалифицированному программисту, хотелось бы все же программить именно на плате, сразу непосредсственно смотреть сигналы с датчиков. Возможность BSL заложу, но с JTAG мне гораздо проще - удобно отлаживать все это дело, то так, то так попробовать  А с полноценным отладчиком не знаю, как и работать  такой парадокс. Пробовать ведь надо на реальной плате  а так - вставить кристалл и... чего дальше?  Мое парадоксальное мышление проявляется тут с новой силой  Когда прога будет уже окончательно выверена, тогда, конечно - вставил кристалл, прошил - давай следующий. Но окончательно - это еще неизвестно когда, к тому же задание постоянно меняется Значит PIF - не пойдет? A UIF - разве позволяет программировать прямо на плате? Резонаторы посмотрю, спасибо
Сообщение отредактировал Daria - Sep 23 2008, 20:53
|
|
|
|
|
Sep 24 2008, 17:18
|
Местный
  
Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345

|
Цитата(Сергей Борщ @ Sep 24 2008, 01:52)  Эээ... А вы его случайно с ez430 (USB-"свистком") не перепутали? Ага, точно  Теперь понятно, спасибо. Кварц, кстати, подходящий нашла у 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 - т.е. теряется-то вся посылка, а это недопустимо для меня - моя плата должна отсылать управляющие команды на другую - потеря одной команды приведет к проблемам. почему теряется - тоже никак не могу понять Вот. Будет время - спаите. помогите
|
|
|
|
|
Sep 24 2008, 18:12
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Я не вижу функции инициализации UART, но попробуйте перед тем как разрешать прерывание от приемника UART (по)чистить его флаги. В строках Цитата IE1 |= UTXIE0; IFG1 |= UTXIFG0; следует поменять их очередность. Кроме того, функции работы с буфером у вас не полностью реентерабельные. Они не обеспечивают атомарности доступа к переменным индекса и счетчика.
|
|
|
|
|
Sep 24 2008, 19:14
|
Частый гость
 
Группа: Участник
Сообщений: 92
Регистрация: 1-06-08
Пользователь №: 37 959

|
Цитата(Daria @ Sep 23 2008, 22:33)  Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров? А не лучше ли использовать DCO с внешним резистором, если толщина схемы важнее стабильности частоты?
|
|
|
|
|
Sep 25 2008, 06:57
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37

|
Цитата Кварц, кстати, подходящий нашла у Murata - CSTCE8M0G53 - нормальный? Мы используем Муратовские керамические трёхногие SMD-шные резонаторы с установлеными в них емкостями. CSTCE8M00G55A-R0 - на 8МГц CSTCR6M00G53-R0 - на 6МГц И довольны.
Murata_Ceramic_Resonators__CERALOCK_.pdf ( 609.11 килобайт )
Кол-во скачиваний: 276
--------------------
Если зайца бить, его можно и спички научить зажигать Сколько дурака не бей - умнее не будет. Зато опытнее
|
|
|
|
|
  |
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0
|
|
|