реклама на сайте
подробности

 
 
> AT90S2313-10PI(пробелема с получением данных по..., RS-232(COM PORT)
mejia
сообщение Jun 12 2005, 13:57
Сообщение #1





Группа: Новичок
Сообщений: 12
Регистрация: 12-06-05
Пользователь №: 5 952



вопрос такой, кто-нибудь сталкивался с проблемой получния даннах с компа по RS-232?

Идея в том, что отсылка вроде понятно как осуществить, то есть когда сам захочешь.... а вот принять не понятно.... надо постоянно сканировать RxD?

может кто-нибудь помочь в этом деле, или предоставить исходник.... ?

задача: получить 4 байта(AnsiString из C++) с COM и записать их в
массив
тоесть что-то типа такого
char b[10];

b[0]=RxD1;
b[1]=RxD2;
b[2]=RxD3;

b[3]=RxD4;

я уже с месяц парюсь ничего придумать не могу.... помогите пожалуста

maniac.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mejia
сообщение Jun 15 2005, 13:16
Сообщение #2





Группа: Новичок
Сообщений: 12
Регистрация: 12-06-05
Пользователь №: 5 952



хорошо прогу написал и после урезания жрет 47% of DEVICE... вот код:

// Programm by G14 POWER aka Mejia
// ICC-AVR application builder : 11.03.2002 20:01:52
// Target : 2313
// Crystal: 3.6864Mhz

//poluchaem 4 char s kompa, analiziruem pervie 1 bait, zdes lejit kod komandi
//2 bait - sotni
//3 bait - desatki
//4 bait - edinici

//ZADACHA: ZASTAVIT SVETODIODI MORGAT smile.gif s kompa konechno cherez
//COM PORT

// 8 svetodiodov s kompa formiruut (4 baita) komandu
//naprimer vse svetodiodi zashisheni to eto 0255
//1 bait =0000
//2 bait=2
//3=2
//4=5



#include <io2313v.h>
#include <macros.h>



//////////////////////////
/// global peremennie

unsigned int temp; // vsegda ponadobitsa
char prinataya_stroka; // zdes xranitsa chislo SOTNI,DESATKI,EDINICI
char counter; // schetchik bitov
char komanda; //zdes xranitsa komanda
char nojkas[]={0,1,2,3,4,5,6,7}; //zdes nomera nojek
char x[4]; //ves massiv polucenii iz COM

//////////////////////////
/// prototipi functii

void port_init(void); // initializatia porta
void uart0_init(void); // init baud rate for komp
void int0_isr(void);
void init_devices(void);


void svetodiodon(char nojka); //vkluchaet svetodiod
void svetodiodoff(char nojka); //vikluchaet svetodiod


void main(void)
{
init_devices();

while(1);


}
char cou=0;
// getting short int from COM PORT
#pragma interrupt_handler get_result:8
void get_result()
{
x[cou]=UDR;cou++;
if (cou==4) {cou=0;}
}

void sort()
{
//poluchaet pachku bait nado preobrazovat etu xnu v short int
// v RXD -doljno bit podrad 4 baita poslanie s kompa
// 0-bait, kod
// 1-sotni
// 2-desatki
// 3-edinici

//x[0]=RXD;// 1 bait // kod
//x[1]=RXD;// 2 bait
//x[2]=RXD;// 3 bait
//x[3]=RXD;// 4 bait

// nujno temp= 0000xxxxyyyyzzzzpppp
// ^^^^ - kod operacii
// dopustim mi polucili 0123 nado preobr v verhnee

short int temprez; //zdes vremenie resultati
short int temp;
itoa(&x[0],temp,10); // v a xranitsa maska bitov
komanda=temp;


itoa(&x[1],temprez,10); // v a xranitsa maska bitov
temprez=temprez*100;
temp=temp+temprez;
itoa(&x[2],temprez,10); // v a xranitsa maska bitov
temprez=temprez*10;
temp=temp+temprez;
itoa(&x[3],temprez,10); // v a xranitsa maska bitov
temp=temp+temprez; //krainie levie 4 razrada ne smogut zateretsa smile.gif
prinataya_stroka=temp;//zdes vixodnoya stroka
work();
}
// sama rabota
void work()
{
// komanda =x[0];
char i;
short int soderjimoe; // soderjimoe komandi



//prinataya_stroka = chislo, naprimer (3 baita iz soobshenia)
if (komanda==0)
{

char b; //vremenno xranitsa char chtob udobnee bilo

for (i=0;i<8;i++)
{
b=prinataya_stroka;
b<<=i;
b>>=i;
if (b==1) svetodiodon(nojkas[i]);
if (b==0) svetodiodoff(nojkas[i]);
}

}
// if (komanda==1) {dvigatel;}
// if (komanda==2) {ventilator;}



}
////////////////////////////////////////////////
void svetodiodon(char nojka)
{
PORTB &=~BIT (nojka);
}
void svetodiodoff(char nojka)
{
PORTB ^= BIT (nojka);
}


//////////////////////////////////////////////////////////////

void port_init(void)
{
DDRB =0xFF; //init port B na vixod
PORTB = 0xFF; //vkl all
PORTD = 0x00; //port vkl
DDRD = 0x00; //vse na vxod
}

//call this routine to initialise all peripherals

void init_devices(void)
{
CLI();

port_init();
uart0_init();

MCUCR = 0x00;
GIMSK = 0x00;
TIMSK = 0x00;

SEI();

}

//UART0 initialisation
// desired baud rate: 9600
// actual: baud rate:9600 (0,0%)
//
void uart0_init(void)
{
UCR = 0x00; //disable while setting baud rate
UBRR = 0x17; //set baud rate
UCR = 0x08; //enable
}



...........................
так что спасибо, осталась проблемка не касающаяся кодинга....
есть система тестирования проги VMLAB называется, наверное ее все знают, вообщем я по совету документов создал такой файл: nemesis.prj:

.MICRO "AT90S2313"
.POWER VDD=5 VSS=0
.CLOCK 4meg
.PROGRAM "nemesis.hex"


D1 VDD PB0
D2 VDD PB1
D3 VDD PB2
D4 VDD PB3
D5 VDD PB4
D6 VDD PB5
D7 VDD PB6
D8 VDD PB7// диоды с 1 по 7
////

естествеено присобачиваю файл nemesis.hex

нажимаю F9 пишет:
Success! All ready to run в коде макере

...

но при запуске программы (f5 или Traceinto(f7)
пишет:

Starting hardware-software co-simulation...
[PC = $0013, Time = 0.51 ms, {MEM}]: Attempt to write in an forbidden position


... я так понимаю прога дохнет когда програмный счетчик доходит до 13-й команды
, но че он хочет этим сказать не понимаю smile3046.gif

можете объяснить багу?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mejia   AT90S2313-10PI(пробелема с получением данных по...   Jun 12 2005, 13:57
- - at90   Цитата(mejia @ Jun 12 2005, 16:57)вопрос тако...   Jun 12 2005, 18:18
- - andk   Какой исходник нужен - Асм или С ?   Jun 14 2005, 03:11
- - Laksus   Цитата(mejia @ Jun 12 2005, 16:57)вопрос тако...   Jun 14 2005, 04:27
|- - yung   Я пользуюсь компилятором от ImageCraft, там в Appl...   Jun 14 2005, 04:39
- - phantom   Фраза "//uart has received a character in UDR...   Jun 14 2005, 07:20
|- - yung   А какой смысл висеть в ожидании четырех принятых б...   Jun 14 2005, 07:41
|- - yung   И еще одна мысль. Чем заниматься длительными рассу...   Jun 14 2005, 07:49
|- - mejia   Цитата(yung @ Jun 14 2005, 10:49)И еще одна м...   Jun 14 2005, 10:45
|- - mejia   а вот сам код, но у меня какая-то странная проблем...   Jun 14 2005, 10:49
|- - mejia   а может кто-нибудь выложить кряк к Image Craft?( у...   Jun 14 2005, 10:54
|- - yung   Сначала о кряке. Он в прицепе(если прицепится).Раб...   Jun 14 2005, 11:24
|- - yung   И что это у тебя за версия ICC, что русских коммен...   Jun 14 2005, 11:38
|- - yung   Там почему-то в двух кусках разные требования. Сде...   Jun 14 2005, 12:41
- - KRS   Если пока не получишь 4 байта из уарта делать ничг...   Jun 14 2005, 07:32
- - phantom   Цитатаосталась проблемка не касающаяся кодинга.......   Jun 16 2005, 08:42
- - mejia   Цитата(phantom @ Jun 16 2005, 11:42)Цитатаост...   Jun 16 2005, 09:53


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 22:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016