/* BlueDataDistributor - data distribution module from ethernet to 32 serial ports
* version 0.1.1 date 2006-10-07
* Copyright (C) 2006 Stefan Schuermans <stefan@blinkenarea.org>
* a BlinkenArea project - http://www.blinkenarea.org/
*/
#include <avr/interrupt.h>
#include "arp.h"
#include "ip.h"
#include "random.h"
#include "rtl8019.h"
#include "serial.h"
#include "status.h"
#include "tcp.h"
#include "timing.h"
#include "udp.h"
// 208us tick counter to generate 20ms ticks
// 208us -> 4800bps (4808bps) (speed of serial outputs)
volatile unsigned char Timing208_96 = 0;
// flag set every 20ms to indicate execution of 20ms ticks
volatile unsigned char Timing20Flag = 0;
// wrapping around 20ms tick counter
unsigned char Timing20 = 0;
// 20ms tick counter to generate 200ms ticks
unsigned char Timing20_10 = 0;
// 208us interrupt (timer 0 compare match)
ISR(OUTPUT_COMP0_vect)
{
// call serial output
SerialOutputBitTime( );
// set flag every 20ms
Timing208_96++;
if( Timing208_96 >= 96 )
{
Timing208_96 = 0;
Timing20Flag = 1;
}
}
// initialize
void TimingInit( void ) // (extern)
{
// configure timer 0 to 208us interval
TCCR0 = 0<<FOC0 | 1<<WGM01 | 0<<WGM00 | // count to OCR0
0<<COM01 | 0<<COM00 | // no waveform generation