?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{BLAME START}

library

?curdirlinks? -

Blame information for rev 6

Line No. Rev Author Line
1 6 kaklik //*****************************************************************************
2 // File Name : stxetxtest.c
3 // Title : Example usage of STX/ETX packet protocol and library code
4 // Revision : 0.1
5 // Notes :
6 // Target MCU : Atmel AVR series
7 // Editor Tabs : 4
8 //
9 // Revision History:
10 // When Who Description of change
11 // ----------- ----------- -----------------------
12 // 20-Nov-2002 pstang Created the program
13 //*****************************************************************************
14  
15 //----- Include Files ---------------------------------------------------------
16 #include <avr/io.h> // include I/O definitions (port names, pin names, etc)
17 #include <avr/interrupt.h> // include interrupt support
18 #include <avr/pgmspace.h>
19  
20 #include "global.h" // include our global settings
21 #include "uart.h" // include uart function library
22 #include "rprintf.h" // include printf function library
23 #include "timer.h" // include timer function library
24 #include "lcd.h" // include LCD support
25 #include "stxetx.h" // include STX/ETX packet support
26  
27  
28 // make a transmitting packet buffer area in memory
29 // where we can assemble the data we wish to transmit
30 // using stx/etx
31 unsigned char TxPacket[20];
32  
33 // function prototypes
34 void receiveStxEtx(void);
35 void transmitStxEtx(void);
36 u08 getSw(void);
37  
38 // main code
39 int main(void)
40 {
41 // initialize the AVRlib libraries
42 timerInit(); // initialize the timer system
43 uartInit(); // initialize the UART (serial port)
44 lcdInit();
45 rprintfInit(lcdDataWrite); // init rprintf
46  
47 // we will be using the AVR UART to communicate the
48 // STX/ETX protocol to another AVR board or to a PC
49  
50 // initialize stxetx to use the UART for sending data
51 stxetxInit(uartSendByte);
52  
53 // set baud rate to 4800 (less than 5000) if communicating using
54 // the Linx LC radio modules
55 uartSetBaudRate(4800);
56  
57 // choose to either transmit or receive
58 transmitStxEtx();
59 //receiveStxEtx();
60  
61 return 0;
62 }
63  
64 void transmitStxEtx(void)
65 {
66 u16 packetNum=0;
67  
68 lcdClear();
69  
70 while(1)
71 {
72 // assemble the data I wish to send inside a STX/ETX packet
73 // send the string "ALOHA"
74 TxPacket[0] = 'A';
75 TxPacket[1] = 'L';
76 TxPacket[2] = 'O';
77 TxPacket[3] = 'H';
78 TxPacket[4] = 'A';
79 // send the packet number
80 TxPacket[5] = packetNum>>8; // high byte
81 TxPacket[6] = packetNum; // low byte
82 // send the current state of PORTA
83 TxPacket[7] = inb(PINA);
84  
85 // send the packet with:
86 // packet status = 0
87 // packet type = 0x55
88 // (the packet type and status may be, and mean, anything the user wishes)
89 // 8-bytes of user data
90 stxetxSend(0, 0x55, 8, TxPacket);
91  
92 // output our packet data to the LCD
93 lcdGotoXY(0,0); rprintf("Sending...");
94 lcdGotoXY(20,0); rprintf("PORTA: "); rprintfu08(inb(PINA));
95 lcdGotoXY(0,1); rprintf("String: ALOHA");
96 lcdGotoXY(20,1); rprintf("PacketNum: "); rprintfu16(packetNum);
97  
98 // increment our packet number
99 packetNum++;
100 // pause for a moment
101 timerPause(10);
102 }
103 }
104  
105 void receiveStxEtx(void)
106 {
107 u16 packetNum=0;
108 u08* dataPtr;
109  
110 lcdClear();
111  
112 while(1)
113 {
114 lcdGotoXY(0,0); rprintf("Receiving...");
115  
116 // here we get the UART's receive buffer and give it to the STX/ETX
117 // packet processing function. If the packet processor finds a valid
118 // packet in the buffer, it will return true.
119 if(stxetxProcess(uartGetRxBuffer()))
120 {
121 // sxtetxProcess has reported that it found a packet
122 // let's get the data...
123  
124 // (NOTE: although I discard the status, type, and datalength
125 // below, it would be important if I were sending more than one
126 // kind of packet)
127  
128 // get the packet's status
129 stxetxGetRxPacketStatus();
130 // get the packet's type
131 stxetxGetRxPacketType();
132 // get the packet's datalength
133 stxetxGetRxPacketDatalength();
134 // get a pointer to the place where the received data is stored
135 dataPtr = stxetxGetRxPacketData();
136  
137 // decode packet number
138 packetNum = (dataPtr[5]<<8) | dataPtr[6];
139  
140 // output our packet data to the LCD
141 lcdGotoXY(20,0); rprintf("PORTA: "); rprintfu08( dataPtr[7] );
142 lcdGotoXY(0,1); rprintf("String: ");
143 // print out the string
144 rprintfChar( dataPtr[0] );
145 rprintfChar( dataPtr[1] );
146 rprintfChar( dataPtr[2] );
147 rprintfChar( dataPtr[3] );
148 rprintfChar( dataPtr[4] );
149 lcdGotoXY(20,1); rprintf("PacketNum: "); rprintfu16(packetNum);
150 }
151 }
152 }
{BLAME END}
{FOOTER START}

Powered by WebSVN v2.8.3