| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| комуникация между два пик-а http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=4696 |
Страница 1 от 1 |
| Автор: | mash [ Съб Авг 25, 2007 5:44 pm ] |
| Заглавие: | комуникация между два пик-а |
Здравейте ! Имам проблем с комуникирането по rs232 между два пик-а. Искам от единия да изпратя на другия числото 3,14 , но на приемния на лцд-то не излиза нищо коректно. Излолзвам CCS C. ето кода за предаване : float digit; ............. ............. ............. digit=3.14; printf("%f5.2",digit); За да ми излезе това число на дисплея на другия пик ползвам: char str[20]; #int_RDA void RDA_isr(void) { gets(str); } printf(LCD_PUTC, "\ndigit= %s ",str); Но нищо не се получава.... Когато го изпращам към хипер терминала излиза без проблем !!! Къде евентуално греша ? |
|
| Автор: | ToHu [ Съб Авг 25, 2007 11:13 pm ] |
| Заглавие: | |
gets() ако не ме лъже паметта очаква край а стринга, демек терминатор, /r или /n не я ползвам тая функция и не помня точно кое очакваше това едното .. |
|
| Автор: | mash [ Нед Авг 26, 2007 11:49 am ] | |||||||||
| Заглавие: | ||||||||||
Мисля, че нее в това проблема. Жалко, че никой в този форум не иска да ми каже. Предполагам, че грешката е елементарна. |
||||||||||
| Автор: | woody [ Нед Авг 26, 2007 12:14 pm ] |
| Заглавие: | |
А защо не пробваш все пак да сложиш един '\n' на края на стринга дето се праща? |
|
| Автор: | ToHu [ Нед Авг 26, 2007 12:15 pm ] |
| Заглавие: | |
Ти мислиш, но аз не мисля Reads characters (using GETC()) into the string until a RETURN (value 13) is encountered. The string is terminated with a 0. Note that INPUT.C has a more versatile GET_STRING function. Това ти е един от проблемите, ама не искаш да слуаш и да четеш, я кажи в хипер-терминала всеки пакет данни на един отделен ред ли излиза или не, според мен излизат на еидн ред една след друга. |
|
| Автор: | Yanek [ Нед Авг 26, 2007 2:14 pm ] |
| Заглавие: | |
Да питам: Наистина ли използваш printf или е начин на представяне на програмата? Нямам представа от колко време се занимаваш със С и С++ за uC, но съм на мнение че повечето от стандартните библиотеки и функции са общо взето неизползваеми. Имам предвид, че са твърде универсално написани и заемат доста ресурси. За сравнение първо извикване на printf на IAR за MSP добавя 10 КБ програмен код и около 600 Б рам употреба. Същото нещо можеш да си го напишеш 10 пъти "по-евтино". Не, не искам да ти давам наклон и да, то си е твоя работа, но знаеш ли какво точно прави тази функция? |
|
| Автор: | mash [ Нед Авг 26, 2007 2:47 pm ] |
| Заглавие: | |
Да ! Наистина ползвам printf() От скоро минах на С и сега реално погледнато се уча. ToHu според теб ако в место хипер терминала ползвам пик ще се получи ли ? Между другото установих, че забива в прекъсването. |
|
| Автор: | ToHu [ Нед Авг 26, 2007 8:31 pm ] |
| Заглавие: | |
Сети се защо забива в прекъсването ... защото ползваш функция gets но стринга ти не е терминиран с нищо, постнах ти извадка от хелпа на CCS, иска 0х13 .. ма пак не чуваш. Gets не е нищо повечеот един while цикъл който излиза ако приетия байт е 0x13 при положение че нямаш подобно терминиране тои й си чака там вечено. Не съм заглеждал как е написан, и нямам идея дали изобо така ще работи тоя gets, но би трябвало да работи, едва ли са го написали толква тъпо че да не приема байтове в прекъсването. Но като цяло проблема ти е че нито слушаш нито мислиш, и с тоя начин на работа по добре се откажи от този занаят и хващай нещо друго. Само м-у другото, това което правиш е доста .. ммм, как да го кажа, нерационално. Можеш да свършиш работа много по бързо, няма защо да ползваш printf, по добре си прати променливата побайтово, това са няколко инструкции, и от друата страна си я обработи, така и така там слагаш printf. |
|
| Автор: | mash [ Вто Сеп 04, 2007 6:26 pm ] | |||||||||
| Заглавие: | ||||||||||
Вече работи. добавих \n\r на края на стринга и се оправи |
||||||||||
| Автор: | ToHu [ Вто Сеп 04, 2007 10:06 pm ] |
| Заглавие: | |
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|