![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
vesago
-
Постов
747 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные vesago
-
-
Скорее всего нужно написать скрипт, который запустить в отладчике. По крайней мере по i2c и uart данные отлично гоняются. i2c я качнул с сайта кейла какой-то пример и подрихтовал под свои нужды. По симулятору кейла можно почитать на www.onembedding.com. Вот пример для i2c и уарт:
// Simulation of I2C Memory (Slave) MAP 0x30000, 0x37FFF READ WRITE // Map User 64kB Memory region DEFINE int SADR // Slave Address signal void I2CMEMORY (void) { unsigned long adr; adr = 0x30000; while (1) { wwatch (I2C_OUT); // Wait for data from Microcontroller while (I2C_OUT == 0x0100) { // START detected wwatch (I2C_OUT); // Wait for data from Microcontroller if (I2C_OUT > 0xFF) continue; if ((I2C_OUT >> 1) != SADR) continue; // test if Slave is addressed I2C_IN = 0xFF00; // ACK to Microcontroller if (I2C_OUT & 1) { // Slave Read while (1) { I2C_IN = _RBYTE(adr); // Read Byte from Memory adr++; // Increment Address wwatch (I2C_OUT); // Wait for ACK from Microcontroller if (I2C_OUT != 0xFF00) break; } } else { // Slave Write wwatch (I2C_OUT); // Wait for data from Microcontroller if (I2C_OUT > 0xFF) continue; adr = (I2C_OUT << 8) | 0x30000; // Set Memory Address High Byte I2C_IN = 0xFF00; // ACK to Microcontroller wwatch (I2C_OUT); // Wait for data from Microcontroller if (I2C_OUT > 0xFF) continue; adr = I2C_OUT | adr; // Set Memory Address Low Byte I2C_IN = 0xFF00; // ACK to Microcontroller while (1) { wwatch (I2C_OUT); // Wait for data from Microcontroller if (I2C_OUT > 0xFF) break; _WBYTE (adr, I2C_OUT); // Store Byte in Memory adr++; // Increment Address I2C_IN = 0xFF00; // ACK to Microcontroller } } } } } SADR = 0x50 // Slave Address I2CMemory() // Starting signal function //mode com1 38400 //assign com1 <s0in>s0out SIGNAL void q (void) { // while (1) // { S0IN = 0xC0; twatch (60000); S0IN = 0x81; twatch (60000); S0IN = 0x07; twatch (60000); S0IN = 0x05; twatch (60000); S0IN = 0x06; twatch (60000); S0IN = 0x00; twatch (60000); S0IN = 0x00; twatch (60000); S0IN = 0x00; twatch (60000); S0IN = 0x05; twatch (60000); S0IN = 0xDA; twatch (60000); // } }
-
Мне нужно для контроля сабжа при старте программы. Программу лью через бутлодер, поэтому нужно как-то убедиться в правильности.
-
Спасибо, большое! Попробую воспользоваться.
-
Каким образом можно решить проблему подсчета контрольной суммы прошивки, если код написан в кейле? Там такой фишки как в яре к сожалению нет. Каким сторонним инструментом можно воспользоваться, чтобы узнать CRC фирмвари?
-
Да, именно так. Ну можно еще резаки последовательно влупить для надежности. Дело в том, что GSM и GPS в составе XT55 - физически независимые устройства. Они выполнены на отдельных платах - GPS крепится на GSM матери и питание у них разделено. И производители у них разные. На фотке это видно. TCP фирмваря живет в GPS модуле. Соответственно и выходы GSM заводим на GPS для обработки данных. Кстати GPS понежнее в плане питания будет. Как-то по ошибке подал вольт 15 вместо 3.3. GSM выжил, а в GPS поджарился арм.
-
Сериализация нужна. Я как-то и не знаю нормальных тулзов, которые поддерживают эту опцию. К указанным Вами особенностям реализации сложно что-то еще добавить.
-
Спасибо!!! Люблю AT200. Очень не хватало чего подобного для MSP430.
-
AVR. В моей местности по цене ему нет конкуренции.
-
Выскажу и я свое мнение. Я работал в следующей последовательности PIC-51-LPC2000-AVR-MSP430. Имхо наиболее приятные в освоении LPC2000. Понравилась документация, с программированием гемора нет. Работает все в точности как и написано. В общем недостатков не нашел. Крайне дружелюбные. Придется правда раскошелиться на мтлинк за $70. От авр тоже приятные впечатления. Сейчас ставлю его везде - цена подкупает и удобство использования. Недавно сотряпал пару-тройку приборов на MSP430. Постараюсь их применять только в крайнем случае - если критично будет энергопотребление. В данном случае подпишусь под каждым словом defunct. Имхо старт с данного семейства может убить энтузиазм в освоении uC. Документация мне понравилась.
-
USB хост, в частности приментительно к сабжу, на авр задача имхо неподъемная. Есть вариант - фтди выпускает микросхему - готовый юсб хост с фатом кажись, через которую и можно прикрутить.
-
Тут немного есть кроме оригинала.
-
Спасибо, придется смириться.
-
Сегодня качнул и поставил. Компильнул проект. Все нормально, но вывалил варнинги типа:
Warning[Pa092]: implicit conversion to integer does not preserve the value H:\PPS\ACCESS CONTROLLER\Program\v1.16_test\onewire.c 92
Ругается на конструкцию:
__delay_cycles(0.00049*XTAL);
Где XTAL объявлен
#define XTAL 14745600ul //
Как мне бороться с этим и чем грозит игнорирование?
-
Еще можно попытать вариант, описанный тут.
-
Боюсь, коллеги, что из-за этих дэзов аеэзов не видать нам хмегу.
-
Накрылся кажись мой дракон - как попало подключался к таргету. Перестало видеть таргет по исп и дебагваре. Думаю погорели какие ключи. Возле исп разъема козявки 6-ти ногие. Может кто знает, что за они - хочу купить перепаять?
Нашлось - оказалось транзисторная сборка.
-
Реальное шаманство. А всего-то надо было в первой строке исправить тип переменной с char на int.
Тестировал LPC2132 (без внешней шины) на предмет помехоустойчивости. С помощью искроподжигателя газа (применяющегося в котельных) так и не смог подвесить проц. Даже когда искра (мощная) происходила в 3 см от процессора. Плата простая двухсторонняя.
А у меня дивайс управляет электромагнитными защелками через реле. Если диод не поставить - гарантированно виснет. Причем внутренний вачдог бывает не помогает. Но это несомненно проблема конструкции.
-
:) Ну если LPC,это поминаемый Вами LPC22xx c внешней шиной на которой висит RAM/ROM и все это по традиции на 2x слойной плате спроектированой без опыта шаманства со скростными девайсами на двуслойных платах, то это совершенно "нормально" :). Кроме того,какое отношение Ваша реплика имеет к заданному вопросу?
Да, собственно, никакого. Просто поделился впечатлением.
-
Я проект с LPC2214 переносил на m128. Размер кода к моему удивлению принципиально не снизился. Вот другое дело - avr показался мне устойчивее. На плате стоит хостовый LPC и периферийная мега. При мощных помехах LPC загибается. Спасает только внешний вачдог. АВР ни разу не отказывал. Думаю LPC затактировать от генератора.
-
Для MSP430 const u8_t[] = "blabla";
-
А почему не на фтп местный?
-
Пример:
//:::::::::::::::::::::::::::::::::::::::::::::::::::::: // //:::::::::::::::::::::::::::::::::::::::::::::::::::::: void SPI_Init(void) { SPI_PORT |= (1<<SCK)|(1<<MOSI)|(1<<MISO); // PORT_SPI &= ~(1<<SCK); SPI_DDR |= (1<<SCK)|(1<<MOSI); SPI_DDR &= ~(1<<MISO); SPSR = (1<<SPI2X); SPCR = (1<<SPE)|(1<<MSTR); //Mode 0 } //:::::::::::::::::::::::::::::::::::::::::::::::::::::: // Записываем байт //:::::::::::::::::::::::::::::::::::::::::::::::::::::: void SPI_Write_Byte(u8_t b) { SPDR = b; while ((SPSR & (1<<SPIF)) == 0); } //:::::::::::::::::::::::::::::::::::::::::::::::::::::: // Читаем байт //:::::::::::::::::::::::::::::::::::::::::::::::::::::: u8_t SPI_Read_Byte(void) { SPDR = 0x00; while ((SPSR & (1<<SPIF)) == 0); return SPDR; }
-
Типичная причина проседания стека - непроинициализированная переменная цикла, в котором что нибудь делается по указателю или с массивами.
-
Слепить на m8 клон аврисп.
Keil:отладка SPI
в MCS51
Опубликовано · Пожаловаться