Add wasm tacle-bench targets
This commit is contained in:
@ -0,0 +1,95 @@
|
||||
/*
|
||||
Paparazzi mcu0 cmx469 modem functions
|
||||
|
||||
Copyright (C) 2003 Pascal Brisset, Antoine Drouin
|
||||
|
||||
This file is part of paparazzi.
|
||||
|
||||
paparazzi is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
paparazzi is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with paparazzi; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA.
|
||||
|
||||
*/
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <arch/io.h>
|
||||
#include <arch/signal.h>
|
||||
#include <arch/interrupt.h>
|
||||
//#include <stdlib.h>
|
||||
#include "modem.h"
|
||||
#include "std.h"
|
||||
|
||||
uint8_t modem_nb_ovrn;
|
||||
|
||||
uint8_t tx_head;
|
||||
volatile uint8_t tx_tail;
|
||||
uint8_t tx_buf[ TX_BUF_SIZE ];
|
||||
|
||||
uint8_t tx_byte;
|
||||
uint8_t tx_byte_idx;
|
||||
|
||||
uint8_t ck_a, ck_b;
|
||||
|
||||
void modem_init( void )
|
||||
{
|
||||
/*
|
||||
on >= V1.2 boards, 4MHz modem clock is generated
|
||||
by one PWM module.
|
||||
*/
|
||||
#if defined CTL_BRD_V1_2 || defined CTL_BRD_V1_2_1
|
||||
MODEM_OSC_DDR |= _BV( MODEM_OSC );
|
||||
OCR0 = 1; /* 4MhZ */
|
||||
TCCR0 = _BV( WGM01 ) | _BV( COM00 ) | _BV( CS00 );
|
||||
#endif
|
||||
|
||||
/* setup TX_EN and TX_DATA pin as output */
|
||||
MODEM_TX_DDR |= _BV( MODEM_TX_EN ) | _BV( MODEM_TX_DATA );
|
||||
/* data idles hight */
|
||||
sbi( MODEM_TX_PORT, MODEM_TX_DATA );
|
||||
/* enable transmitter */
|
||||
cbi( MODEM_TX_PORT, MODEM_TX_EN );
|
||||
/* set interrupt on failing edge of clock */
|
||||
MODEM_CLK_INT_REG |= MODEM_CLK_INT_CFG;
|
||||
}
|
||||
|
||||
SIGNAL( MODEM_CLK_INT_SIG )
|
||||
{
|
||||
/* start bit */
|
||||
if ( tx_byte_idx == 0 )
|
||||
cbi( MODEM_TX_PORT, MODEM_TX_DATA );
|
||||
/* 8 data bits */
|
||||
else
|
||||
if ( tx_byte_idx < 9 ) {
|
||||
if ( tx_byte & 0x01 )
|
||||
sbi( MODEM_TX_PORT, MODEM_TX_DATA );
|
||||
else
|
||||
cbi( MODEM_TX_PORT, MODEM_TX_DATA );
|
||||
tx_byte >>= 1;
|
||||
}
|
||||
/* stop_bit */
|
||||
else
|
||||
sbi( MODEM_TX_PORT, MODEM_TX_DATA );
|
||||
tx_byte_idx++;
|
||||
/* next byte */
|
||||
if ( tx_byte_idx >= 10 ) {
|
||||
/* if we have nothing left to transmit */
|
||||
if ( tx_head == tx_tail ) {
|
||||
/* disable clock interrupt */
|
||||
cbi( EIMSK, MODEM_CLK_INT );
|
||||
} else {
|
||||
/* else load next byte */
|
||||
MODEM_LOAD_NEXT_BYTE();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user