|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 7:57 pm
Предаване и приемане по RS232 в CCS. Как?
| Автор |
Съобщение |
|
daniel_stefanov
Ранг: Ориентиран
Регистриран на: Нед Мар 27, 2005 12:40 am Мнения: 206 Местоположение: София
|
Натам отиват нещата вече. Програмката си е наред, а виртуалният ком на Протеуса ми създава проблеми с настройката. Затова попитах дали някой го е ползвал, за да даде акъл как да го настроя.
Това е въпроса  . Защото тази комуникация е част от друга задачка и по-точно от задачката за борд-компютъра (раздел ЕКУ). Та моето ЕКУ комуникира с тази скорост и затова се налага да подкарам всичко по този начин. Затова ми трябва и виртуалния ком на Протеуса, защото на реалния КОМ ще вържа модемчето което съм направил и което ще комуникира с ЕКУто на колата  .
|
| Вто Юни 06, 2006 4:05 pm |
|
 |
|
mndsl
Ранг: Новодошъл
Регистриран на: Вто Май 23, 2006 4:56 pm Мнения: 113 Местоположение: Варна
|
Ако правилно съм те разбрал, твоя модем ще стои между борд-компа и настолния компютър. Ако е така направи си комуникацията с борд-компа на 10400, а с РС-то на 19200 или 9600. А докато си тестваш програмата си ползвай стандартни стойности на битрейта, и когато всичко е готово си го смени на колкото ти трябва.
|
| Вто Юни 06, 2006 4:09 pm |
|
 |
|
daniel_stefanov
Ранг: Ориентиран
Регистриран на: Нед Мар 27, 2005 12:40 am Мнения: 206 Местоположение: София
|
Не точно. Модемът е между ЕКУто на колата и борд-компютъра (моя контролер - горе схемата). Това което симулирам на Протеус е моя контролер или бъдещия борд-компютър  . Затова ми е важно в Протеус да симулирам борд-компа и го връзвам по този начин с модема, който ми е на реалния КОМ на ПСто. т.е идеята ми е в случая с Протеуса да опитам да се вържа с ЕКУто и по модема да си гукам между двете у-ва. Затова ми е важно да пусна този виртуален КОМ на Протеуса.
|
| Вто Юни 06, 2006 5:14 pm |
|
 |
|
valioman
Ранг: Почетен член
Регистриран на: Съб Сеп 17, 2005 5:07 pm Мнения: 813 Местоположение: Сливен
|
Няма да стане !!
По добре си налепи една платка с тоз процесор и само чети данни с компа .Защото при по бавен комп има разминаване между реално време и времето на симулацията .Затова моя съвет е да си налепиш едно 40 пина цокълче да му сложиш едно максче ,нямяа нужда засега да слагаш дисплей защото то е еквивалентно на четене
през рс-а и си прави опитите.
|
| Сря Юни 07, 2006 9:25 am |
|
 |
|
Dimiter
Ранг: Популярен
Регистриран на: Пет Фев 04, 2005 3:18 pm Мнения: 309 Местоположение: Sofia
|
@daniel_stefanov
За последно да се обадя
Както ти казах обърнал си след макса нещата ,загледай и ще
видиш ,че връзваш TX с TX и RX и RX !
Тази връзка трябва да е кръстосана Tx с Rx и Rx с Tx
Едното е вход а другото изход все пак 
|
| Сря Юни 07, 2006 10:05 am |
|
 |
|
daniel_stefanov
Ранг: Ориентиран
Регистриран на: Нед Мар 27, 2005 12:40 am Мнения: 206 Местоположение: София
|
Ами така мисля да направя, но ще сложа и дислпей за да виждам какво чета  Изгубих си доста време с този Протеус а и този виртуален КОМ нещо неработи добре. Първоначално го бях направил така както ти пишеш, но така пък изобщо не стана комуникацията. Искам да кажа, че знаеш когато има комуникация при този виртуален КОМ точките (пиновете) светят в червено. По този начин Tx с Rx и Rx с Tx те изобщо не светят. Когато ги свързах TX с TX и RX и RX , TX ми свети, а RX не. Тогава помислих, че така трябва да се върже и оттогава съм така. В примерчето което е дадено в Протеуса също е вързано така, но там с терминал. Това е причината да мисля, че това е правилния начин на връзване. Затова моля ако на някой му се е налагало да прави подобно нещо да драсне една схемка и да обясни как е докарал комуникация.
Иначе ми е приятно да се обаждаш и надявам се да продължиш да помагаш  Поздрави
|
| Сря Юни 07, 2006 2:00 pm |
|
 |
|
daniel_stefanov
Ранг: Ориентиран
Регистриран на: Нед Мар 27, 2005 12:40 am Мнения: 206 Местоположение: София
|
Горният проблем още не е решен и вече имам нов, който е свързан с тази задачка  . Та въпросът е как мога да използвам PIN_C6 и PIN_C7 преди да съм инициализирал rs232? Идеята, е че трябва да събудя ЕКУто в 5 бода в секунда и след това комуникацията е на 9600, което означава, че ръчно трябва да "клатя" PIN_C6 преди да пусна УСАРТа. Опитах така, но не стана:
#if defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
//#use fixed_io(c_outputs=pin_C6) //speeds up port use
#use delay(clock=20000000)
//#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include <lcd.c>
char c;
int res;
void wake_ECU(void)
{
output_high (PIN_C6);
Delay_ms(200);
output_low (PIN_C6);
Delay_ms(200);
output_high (PIN_C6);
Delay_ms(200);
output_low (PIN_C6);
Delay_ms(200);
output_low (PIN_C6);
Delay_ms(200);
output_low (PIN_C6);
Delay_ms(200);
output_low (PIN_C6);
Delay_ms(200);
output_low (PIN_C6);
Delay_ms(200);
output_low (PIN_C6);
Delay_ms(200);
output_low (PIN_C6);
Delay_ms(200);
output_high (PIN_C6);
}
void main() {
lcd_init();
wake_ECU();
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
while(TRUE) {
putc(1);
Delay_ms(10);
res=getc();
Delay_ms(200);
printf(lcd_putc,"\f\rres= %1.2U", res);
}
}
|
| Чет Юни 08, 2006 12:27 pm |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
А някъде зададено ли е на порта, че ще е изход - т.е. TRISC,6 = 0;? Не ползвам CCS и можеби греша!?
|
| Чет Юни 08, 2006 2:25 pm |
|
 |
|
daniel_stefanov
Ранг: Ориентиран
Регистриран на: Нед Мар 27, 2005 12:40 am Мнения: 206 Местоположение: София
|
Всичко това си го прави функцията output_high () или output_low (). Поне се убедих в това, защото като сложа //#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) всичко е ОК. Пиновете ми се превключват през 200мс. Лощото, е че където и да дефинирам серийният порт все се омазват нещата. Явно компилатора види ли #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7), където и да е поставено в програмата резервира винаги тези пинове. Моля, кажете дали е така? Ако е така, как да използвам тези пинове, преди да инициализирам и ползвам rs232?
|
| Чет Юни 08, 2006 2:50 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Функциите Output_high/low работят, без да си пипал TRISx регистрите, обаче виж в листинга, че на всяко извикване на тези функции изразходват 6 програмни думи. Направи си дадените пинове изходи/входове чрез TRISx регистрите, след това си дефинирай чрез #bit пиновете и работи директно с пиновете.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Чет Юни 08, 2006 3:08 pm |
|
 |
|
daniel_stefanov
Ранг: Ориентиран
Регистриран на: Нед Мар 27, 2005 12:40 am Мнения: 206 Местоположение: София
|
Опитах и това. Отново не става. Както забраня инициализацията //#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7), всичко се оправя. RC6 и RC7 си ги превключвам както си искам, сложа ли #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) всичко се успива. Не е възможно да не могат да се ползват RC6 и RC7 преди да се разреши работата с КОМа. Имате ли идеи от къде може да е проблема? Къде да поставя #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) в тялото на програмата, за да мога преди това да превключвам RC6 и RC7, след това тези пинове да си работят като предавател и приемник с инициализирането на УСАРТа?
|
| Чет Юни 08, 2006 6:59 pm |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
Тоя виртуален COM ти изкарва 5V нива, считай все едно има MAX232 в него, затова не му се закача MAX232 за разлика от истинския - закачаш му пиновете директно към проца. Уверявам те, нищо му няма на виртуалния COM, ползвам го често, за времената на реакция също мога да поспоря, използва се FIFO-то на хардуера - 16KB
А на горния ти въпрос за инициализация на RS232, ми няма да можеш да човъркаш по RC6 и RC7 след като си инициализирал UART-a хардуерно, в по-новите версии на CCS има добавен директив, който можеш да ползваш - FORCE_SW :
Ако ползваш софтуерен UART, можеш да човъркаш колкото си искаш по RC6 и RC7
PS: в тая Mikroelektronika освен Auto Complete функцията на IDE-то друго хубаво не видях...  За сравнение, CCS с малко играчка може да се интегрира с Visual Studio както и с Programmer's Notepad
|
| Чет Юни 08, 2006 7:12 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Като искаш да използваш #use rs232 и да бъзикаш пиновете на RxD & TxD, тогава забраняваш USART с RCSTA.7 ( SPEN bit ), после за всеки случай след бъзикнята, сложи ново #use , за да го инициализира нанова. Най-добре заеби тия #use и си пиши директно в регистрите. При предаване пишеш в TXREG, при приемане четеш от RCREG, имаш и 2-3 реда инициализация на регистри.
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Чет Юни 08, 2006 8:38 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|