Circuit Theory
Circuit

Description

Circuit


Description
tags: spy robots, electronics projects, inventory projects
Posted by Wow at 10:02 AM 0 comments
Posted by Wow at 8:29 AM 0 comments
Labels: Embeded Systems Tutorial, PIC
Posted by Wow at 8:22 AM 0 comments
Labels: Microcontroller Projects
Important :
The Software UART library
implements time-based activities, so interrupts need to be disabled when using
it. |
Prototype
|
char Soft_UART_Init(char *port, char rx_pin, char
tx_pin, unsigned long baud_rate, char inverted);
|
Returns
|
|
Description
|
Configures and initializes the
software UART module.
Parameters :
Software UART routines use Delay_Cyc routine. If requested baud rate is
too low then calculated parameter for calling Delay_Cyc exceeds
Delay_Cyc argument range.
If requested baud rate is too high
then rounding error of Delay_Cyc argument corrupts Software UART timings.
|
Requires
|
Nothing.
|
Example
|
This will initialize software UART
and establish the communication at 14400 bps:
char error;
...
error = Soft_UART_Init(&PORTC, 7, 6, 14400, 0); // Initialize Soft UART at 14400 bps
|
Prototype
|
char Soft_UART_Read(char * error);
|
Returns
|
Byte received via UART.
|
Description
|
The function receives a byte via
software UART.
This is a blocking function call
(waits for start bit). Programmer can unblock it by calling Soft_UART_Break routine.
Parameters :
|
Requires
|
Software UART must be initialized
before using this function. See the Soft_UART_Init routine.
|
Example
|
char data_, error;
...
// wait until data is received
do
data =
Soft_UART_Read(&error);
while (error);
// Now we can work with data:
if (data_) {...}
|
Prototype
|
void Soft_UART_Write(char udata);
|
Returns
|
Nothing.
|
Description
|
This routine sends one byte via
the Software UART bus.
Parameters :
|
Requires
|
Software UART must be initialized
before using this function. See the Soft_UART_Init routine.
Be aware that during transmission,
software UART is incapable of receiving data – data transfer protocol must be
set in such a way to prevent loss of information.
|
Example
|
char some_byte = 0x0A;
...
// Write a byte via Soft UART
Soft_UART_Write(some_byte);
|
Prototype
|
void Soft_UART_Break();
|
Returns
|
Nothing.
|
Description
|
Soft_UART_Read is blocking routine and it can
block the program flow. Calling this routine from the interrupt will unblock
the program execution. This mechanism is similar to WDT.
Note :
Interrupts should be disabled before using Software UART routines again (see
note at the top of this page).
|
Requires
|
Nothing.
|
Example
|
char data1, error,
counter = 0;
void interrupt() {
if (INTCON.T0IF)
{
if
(counter >= 20) {
Soft_UART_Break();
counter =
0; // reset counter
}
else
counter++; //
increment counter
INTCON.T0IF =
0; // Clear Timer0
overflow interrupt flag
}
}
void main() {
OPTION_REG =
0x04; // TMR0 prescaler
set to 1:32
...
if
(Soft_UART_Init(&PORTC, 7, 6, 9600, 0) == 0)
Soft_UART_Write(0x55);
...
// try
Soft_UART_Read with blocking prevention mechanism
INTCON.GIE = 1; // Global interrupt enable
INTCON.T0IE =
1; // Enable Timer0
overflow interrupt
data1 =
Soft_UART_Read(&error);
INTCON.GIE =
0; // Global interrupt
disable
}
|
Posted by Wow at 8:12 AM 0 comments
Labels: PIC
Posted by Wow at 8:05 AM 0 comments
Labels: Embeded Systems Tutorial