rezident 0 13 сентября, 2008 Опубликовано 13 сентября, 2008 · Жалоба А вообще, как говорил кот Матроскин, холодильник чей - государственный, а холод, который он вырабатывает - наш. Так же и тут. Компилятор - GPL, а код, который он вырабатывает - наш. Вы явно не читали или читали невнимательно текст GNU GENERAL PUBLIC LICENSE :( Насколько я понимаю, лицензия GPL предписывает предоставлять по первому требованию исходники самого компилятора, но не код, им произведенный.При компиляции используются какие-то библиотеки компилятора, так? Так вот, если полученный в результате компиляции код содержит внутри себя хотя бы часть этой библиотеки (например, библиотеки вычислений с "плавучкой"), то весь он попадает под действие лицензии GPL. Если же какие-то части программы, имеющие возможность функционировать самостоятельно и не содержащие компоненты, попадающие под действие GPL, были лишь скомпилированы GNU-тым компилятором, тогда да, они также свободны от действия GPL. Давайте не будем засорять ветку :bb-offtopic:. Если вопрос лицензий free software и open source волнует кого-то, то можно завести отдельный топик. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 15 сентября, 2008 Опубликовано 15 сентября, 2008 · Жалоба При компиляции используются какие-то библиотеки компилятора, так? Так вот, если полученный в результате компиляции код содержит внутри себя хотя бы часть этой библиотеки (например, библиотеки вычислений с "плавучкой"), то весь он попадает под действие лицензии GPL. Библиотеки обычно не gpl, а lgpl. Но тут надо конечно быть очень внимательным... Давайте не будем засорять ветку :bb-offtopic:. Если вопрос лицензий free software и open source волнует кого-то, то можно завести отдельный топик. Я был бы не против почитать такой топик:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Daria 0 18 сентября, 2008 Опубликовано 18 сентября, 2008 · Жалоба rezident, большое спасибо. Все работает. Вы хороший :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Daria 0 23 сентября, 2008 Опубликовано 23 сентября, 2008 · Жалоба Здравствуйте. Такие вопросы - сейчас я прошиваю контроллер самодельной отладкой, схему которой советовали, по-моему, вы, rezident - она питается с платы, 3,3 В. В дальнейшем хочу использовать MSP-FET430PIF, так как требования - либо на свою отладку оформлять докуметацию по всем правилам, либо пользоваться готовой. и вот вопрос - у MSP-FET430PIF питание от LPT - мне сказали, что это опасно, что LPT часто горят, если программатор питается прямо от порта. Это правда? насколько часто? :) Может, лучше не покупать этот MSP-FET430PIF? И еще - не совсем в по теме. Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров? И, желательно, планарный :) Не могу найти, на такую частоту все какие-то здоровые, а нужно сокращать размеры платы :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 23 сентября, 2008 Опубликовано 23 сентября, 2008 · Жалоба В дальнейшем хочу использовать 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 не работает. И еще - не совсем в по теме. Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров? И, желательно, планарный :) Не могу найти, на такую частоту все какие-то здоровые, а нужно сокращать размеры платы :(Посмотрите резонаторы фирм Geyer Electronic и Golledge. Мы часовой (32768Гц) KX-327LT от Geyer недавно начали применять, размеры его всего 1,5х7мм. Продукцией Geyer Electronic торгует Компел и Терраэлектроника, а продукцию Golledge представляет фирма ЭФО. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 23 сентября, 2008 Опубликовано 23 сентября, 2008 · Жалоба мне сказали, что это опасно, что LPT часто горят, если программатор питается прямо от порта. Это правда?Нет, неправда. Горит не от питания, а от бестолковости питающего. Когда корпус компьютера не заземлен, когда втыкают в запитанное устройство, питающееся от незаземленного блока питания, ну и т.д. Для MSP-FET430PIF питание от порта - один из штатных режимов. Может, лучше не покупать этот MSP-FET430PIF?Да. Лучше купите MSP-FET430UIF. Это почти то же самое, только от USB. И питание от него тоже можно брать. Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров?Выбирайте: "Чип И Дип", Кварцевые резонаторы (Всего товаров: 357) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Daria 0 23 сентября, 2008 Опубликовано 23 сентября, 2008 (изменено) · Жалоба Ага, но мне, как пока неквалифицированному программисту, хотелось бы все же программить именно на плате, сразу непосредсственно смотреть сигналы с датчиков. Возможность BSL заложу, но с JTAG мне гораздо проще - удобно отлаживать все это дело, то так, то так попробовать :) А с полноценным отладчиком не знаю, как и работать такой парадокс. Пробовать ведь надо на реальной плате :05: а так - вставить кристалл и... чего дальше? Мое парадоксальное мышление проявляется тут с новой силой Когда прога будет уже окончательно выверена, тогда, конечно - вставил кристалл, прошил - давай следующий. Но окончательно - это еще неизвестно когда, к тому же задание постоянно меняется Значит PIF - не пойдет? A UIF - разве позволяет программировать прямо на плате? Резонаторы посмотрю, спасибо Изменено 23 сентября, 2008 пользователем Daria Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 23 сентября, 2008 Опубликовано 23 сентября, 2008 · Жалоба Значит PIF - не пойдет? A UIF - это ведь тоже отдельная коробка :)Для вашего нынешнего случая (MSP430F149) подойдет и PIF и UIF. Я вам на будущее/перспективу рекомендации давал. Для отладки конечно же лучше нормальный отладчик. BSL это для серии и техподдержки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Daria 0 23 сентября, 2008 Опубликовано 23 сентября, 2008 · Жалоба Для вашего нынешнего случая (MSP430F149) подойдет и PIF и UIF. Я вам на будущее/перспективу рекомендации давал. Для отладки конечно же лучше нормальный отладчик. BSL это для серии и техподдержки. А UIF позволяет программировать прямо на плате? Как-то он так выглядит... я думала. что нет. по его внешнему виду Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 23 сентября, 2008 Опубликовано 23 сентября, 2008 · Жалоба А UIF позволяет программировать прямо на плате? Как-то он так выглядит... я думала. что нет. по его внешнему виду Конечно позволяет. Он функционально более расширен по сравнению с MSP-FET430PIF. В принципе вы даже сами можете изготовить MSP-FET430UIF ;) Схема его имеется в slau138, а прошивку тут в форуме где-то выкладывали. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 23 сентября, 2008 Опубликовано 23 сентября, 2008 · Жалоба Как-то он так выглядит... я думала. что нет. по его внешнему виду Эээ... А вы его случайно с ez430 (USB-"свистком") не перепутали? FET430-UIF внешне отличается от FET430-PIF (если не изменяет память) только кабелем к компьютеру. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Daria 0 24 сентября, 2008 Опубликовано 24 сентября, 2008 · Жалоба Эээ... А вы его случайно с 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 - т.е. теряется-то вся посылка, а это недопустимо для меня - моя плата должна отсылать управляющие команды на другую - потеря одной команды приведет к проблемам. почему теряется - тоже никак не могу понять :( Вот. Будет время - спаите. помогите :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 24 сентября, 2008 Опубликовано 24 сентября, 2008 · Жалоба Я не вижу функции инициализации UART, но попробуйте перед тем как разрешать прерывание от приемника UART (по)чистить его флаги. В строках IE1 |= UTXIE0; IFG1 |= UTXIFG0; следует поменять их очередность. Кроме того, функции работы с буфером у вас не полностью реентерабельные. Они не обеспечивают атомарности доступа к переменным индекса и счетчика. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LCD 0 24 сентября, 2008 Опубликовано 24 сентября, 2008 · Жалоба Не подскажите какой-нибудь кварцевый резонатор на 8MГц, как можно меньших размеров?А не лучше ли использовать DCO с внешним резистором, если толщина схемы важнее стабильности частоты? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VAI 0 25 сентября, 2008 Опубликовано 25 сентября, 2008 · Жалоба Кварц, кстати, подходящий нашла у Murata - CSTCE8M0G53 - нормальный? Мы используем Муратовские керамические трёхногие SMD-шные резонаторы с установлеными в них емкостями. CSTCE8M00G55A-R0 - на 8МГц CSTCR6M00G53-R0 - на 6МГц И довольны.Murata_Ceramic_Resonators__CERALOCK_.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться