 |

|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 07 12, 13:23. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » Susiduriau su dilema at90s2313 UART
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
 |
Susiduriau su dilema at90s2313 UART |
Parašytas: 2006 02 22, 01:33 |
|
|
|
Noriu susikonstruoti irenginuka kad per komporto prievada... surinkus tam tikras komandas pvz. kaip "AT" open1" ir panasius zodziu ivygdytu tam tikrus veiksmus ijungtu ar isjungtu..... bet iskyla klasymas kaip tai padaryti nes pradejus rasyt jam komanda jis priema tik pirma simboli o kiti zodzio simboliai jau priema kaip nauja komanda o ne kaip tos pacios komandos sekanti simboli....
tat nesugalvoju kaip tai padaryt ar imanoma naudojant masyvus ar koki kita buda patarkyt....? |
|
|
|
|
 |
Susiduriau su dilema at90s2313 UART |
Parašytas: 2006 02 22, 13:47 |
|
|
|
naudok pabaigos simboli ..
kad ir \n\r (0Ah 0Dh)
ir tik gaves pabaigos simboli analizuoji vis gauta sakini ..
+ butinai reikai numatyti "time out" tarp simboliu bei maksimalu sakinio ilgi .. |
|
|
|
|
 |
Susiduriau su dilema at90s2313 UART |
Parašytas: 2006 02 22, 14:04 |
|
|
|
siena rašo: |
naudok pabaigos simboli ..
kad ir \n\r (0Ah 0Dh)
ir tik gaves pabaigos simboli analizuoji vis gauta sakini ..
+ butinai reikai numatyti "time out" tarp simboliu bei maksimalu sakinio ilgi .. |
Mane taip pat tai domina, gal koki skaitala turi kaip tai realizuojama ar example?
dėkui. |
|
|
|
|
 |
Susiduriau su dilema at90s2313 UART |
Parašytas: 2006 02 22, 14:13 |
|
|
|
na cia jokio skaitalo nereikai ir vargu ar rascaiu .. cia tiesiog paprasciausiai rysio protokolo dalykas ..
duomenys turi savo pradizia ir pabaiga .. todel turi fiksuoti .. o kaip jie baigiasi ar prasideda tai priklauso tik nuoto kaip tu realizuotis ..
siaip jeigu rysis vykstas ASCII simboliais tai siuliciau susirasti pilda ASCII lentele ir pasiziureti kokie ten simboliai yra .. siaip iki 20h simbolio yra spec simboliai visokie .. |
|
|
|
|
 |
 |
Susiduriau su dilema at90s2313 UART |
Parašytas: 2006 03 07, 00:45 |
|
|
|
cia ant c51:
;paprograme pertraukties apdirbimo nuo SERIAL PORT
SERREC:
JNB RI,$ ;laukiam priemimo pabaigos
CLR RI
CPL LDRXD ;mirksim baito priemimo led'u
MOV A,SBUF ;skaitom primta baita
CJNE A,#'$',SR1 ;perejnam jeigu ne paketo pradzia
MOV BYTESR,#00h ;jeigu paketo pradzia, nunulinam gautu simboliu kieki
RETI
SR1:
CJNE A,#0Dh,SR2 ;perejimas jeigu ne paketo pabaiga
SETB FLAGPRC ;leidziame apdoroti komanda
RETI
SR2:
CLR RS0
CLR RS1
MOV A,#BUFRXD ;isskaiciuojam ..
ADD A,BYTESR ;..buferio lastele..
MOV R0,A
MOV @R0,SBUF ;.. ir irasom i ja priimta baita
INC BYTESR ;didinam priimtu baitu skaitikli
RETI |
|
|
|
|
 |
 |
Nezinau ar nauja teme rasyt ar ir prie sitos pratesima... |
Parašytas: 2006 03 07, 00:51 |
|
|
|
Tai va kol buvau uzsiemes kitais reikalais pasibaige ir ta 30dienu IAR programaij.... Jei kas turit normaliai veikiancia, dar karta labai prasau atsiuskite man
oxegensytes@gmal.com
Instaliavausi ir "nusipirkau" licenzija CodeVisionAVR programaij... bet idejus koda pagal elektronikoj duota pvz.: http://elektronika.lt/schematic/theme/67/593/
taij neveikia meta klaidas. Jeigu nusciacius ir leidus minimaliai padaryti savo koda siai programaij toki :
#include <90s2313.h>
#define RXB8 1
#define TXB8 0
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#define FRAMING_ERROR (1<<FE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
// UART Receiver buffer
#define RX_BUFFER_SIZE 8
char rx_buffer[RX_BUFFER_SIZE];
#if RX_BUFFER_SIZE<256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on UART Receiver buffer overflow
bit rx_buffer_overflow;
// UART Receiver interrupt service routine
interrupt [UART_RXC] void uart_rx_isr(void)
{
char status,data;
status=USR;
data=UDR;
if ((status & (FRAMING_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the UART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif
// UART Transmitter buffer
#define TX_BUFFER_SIZE 8
char tx_buffer[TX_BUFFER_SIZE];
#if TX_BUFFER_SIZE<256
unsigned char tx_wr_index,tx_rd_index,tx_counter;
#else
unsigned int tx_wr_index,tx_rd_index,tx_counter;
#endif
// UART Transmitter interrupt service routine
interrupt [UART_TXC] void uart_tx_isr(void)
{
if (tx_counter)
{
--tx_counter;
UDR=tx_buffer[tx_rd_index];
if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
};
}
#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the UART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter == TX_BUFFER_SIZE);
#asm("cli")
if (tx_counter || ((USR & DATA_REGISTER_EMPTY)==0))
{
tx_buffer[tx_wr_index]=c;
if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
++tx_counter;
}
else
UDR=c;
#asm("sei")
}
#pragma used-
#endif
// Standard Input/Output functions
#include <stdio.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port D initialization
// Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=In Func0=In
// State6=0 State5=0 State4=0 State3=0 State2=0 State1=T State0=T
PORTD=0x00;
DDRD=0x7C;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1 output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1H=0x00;
OCR1L=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// UART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// UART Receiver: On
// UART Transmitter: On
// UART Baud rate: 9600
UCR=0xD8;
UBRR=0x33;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
};
}
taij nelabai veikia padavus koda i " // Place your code here" vieta....
Tat kuris tas tikras kintamasis sioje programoje yra duomenu mainams per UART <<<putchar(c)>>
Jei imetu kazkoki taij duomenys i C man neismeta per terminala..... Kaip koda susitvarkyt kad bent pradziai pagal elektronikos puslapi atliktu tokius veiksmus su duomenu perdavimu per terminala.....
:/ Jei ko nors nesuprasyti teij per daug nesikarsciuokite nes gan jau velu ir einu ZZzzz ryt pats perskaitysiu ka parasiau....  |
|
|
|
|
 |
 |
|
 |
|
 |
Google paieška forume |
|
 |
Naujos temos forume |
|
 |
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
 |
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
 |
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
 |
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
 |
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
 |
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
 |
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Football Training Kit
Football Training Equipment,
Football Skills,
Football Training |
|

|
 |