prepare cobboard and ballboard
[aversive.git] / projects / microb2010 / sensorboard / main.c
diff --git a/projects/microb2010/sensorboard/main.c b/projects/microb2010/sensorboard/main.c
deleted file mode 100755 (executable)
index 82fa2a5..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-/*  
- *  Copyright Droids Corporation
- *  Olivier Matz <zer0@droids-corp.org>
- * 
- *  This program 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 of the License, or
- *  (at your option) any later version.
- *
- *  This program 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 this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
- *  Revision : $Id: main.c,v 1.4 2009-05-27 20:04:07 zer0 Exp $
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <avr/eeprom.h>
-
-#include <aversive.h>
-#include <aversive/pgmspace.h>
-#include <aversive/wait.h>
-#include <aversive/error.h>
-
-#include <ax12.h>
-#include <uart.h>
-#include <spi.h>
-#include <i2c.h>
-#include <encoders_spi.h>
-#include <pwm_ng.h>
-#include <timer.h>
-#include <scheduler.h>
-#include <time.h>
-#include <adc.h>
-
-#include <pid.h>
-#include <quadramp.h>
-#include <control_system_manager.h>
-#include <blocking_detection_manager.h>
-
-#include <parse.h>
-#include <rdline.h>
-
-#include "../common/eeprom_mapping.h"
-#include "../common/i2c_commands.h"
-
-#include "main.h"
-#include "ax12_user.h"
-#include "cmdline.h"
-#include "sensor.h"
-#include "actuator.h"
-#include "cs.h"
-#include "i2c_protocol.h"
-#include "beacon.h"
-#include "scanner.h"
-
-/* 0 means "programmed"
- * ---- with 16 Mhz quartz
- * CKSEL 3-0 : 0111
- * SUT 1-0 : 10 
- * CKDIV8 : 1
- * ---- bootloader
- * BOOTZ 1-0 : 01 (4K bootloader)
- * BOOTRST : 0 (reset on bootloader)
- * ---- jtag
- * jtagen : 0
- */
-
-struct genboard gen;
-struct sensorboard sensorboard;
-
-/***********************/
-
-void bootloader(void)
-{
-#define BOOTLOADER_ADDR 0x3f000
-       if (pgm_read_byte_far(BOOTLOADER_ADDR) == 0xff) {
-               printf_P(PSTR("Bootloader is not present\r\n"));
-               return;
-       }
-       cli();
-       BRAKE_ON();
-       /* ... very specific :( */
-       TIMSK0 = 0;
-       TIMSK1 = 0;
-       TIMSK2 = 0;
-       TIMSK3 = 0;
-       TIMSK4 = 0;
-       TIMSK5 = 0;
-       EIMSK = 0;
-       UCSR0B = 0;
-       UCSR1B = 0;
-       UCSR2B = 0;
-       UCSR3B = 0;
-       SPCR = 0;
-       TWCR = 0;
-       ACSR = 0;
-       ADCSRA = 0;
-
-       EIND = 1;
-       __asm__ __volatile__ ("ldi r31,0xf8\n");
-       __asm__ __volatile__ ("ldi r30,0x00\n");
-       __asm__ __volatile__ ("eijmp\n");
-       
-       /* never returns */
-}
-
-void do_led_blink(__attribute__((unused)) void *dummy)
-{
-#if 1 /* simple blink */
-       static uint8_t a=0;
-
-       if(a)
-               LED1_ON();
-       else
-               LED1_OFF();
-       
-       a = !a;
-#endif
-}
-
-static void main_timer_interrupt(void)
-{
-       static uint8_t cpt = 0;
-       cpt++;
-       sei();
-       if ((cpt & 0x3) == 0)
-               scheduler_interrupt();
-}
-
-int main(void)
-{
-       /* brake */
-       BRAKE_OFF();
-       BRAKE_DDR();
-
-       /* CPLD reset on PG3 */
-       DDRG |= 1<<3;
-       PORTG &= ~(1<<3); /* implicit */
-
-       /* LEDS */
-       DDRJ |= 0x0c;
-       DDRL = 0xc0;
-       LED1_OFF();
-       memset(&gen, 0, sizeof(gen));
-       memset(&sensorboard, 0, sizeof(sensorboard));
-       sensorboard.flags = DO_ENCODERS | DO_CS | DO_POWER; // DO_BD
-       
-       /* UART */
-       uart_init();
-#if CMDLINE_UART == 3
-       fdevopen(uart3_dev_send, uart3_dev_recv);
-       uart_register_rx_event(3, emergency);
-#elif CMDLINE_UART == 1
-       fdevopen(uart1_dev_send, uart1_dev_recv);
-       uart_register_rx_event(1, emergency);
-#else
-#  error not supported
-#endif
-
-       //eeprom_write_byte(EEPROM_MAGIC_ADDRESS, EEPROM_MAGIC_SENSORBOARD);
-       /* check eeprom to avoid to run the bad program */
-       if (eeprom_read_byte(EEPROM_MAGIC_ADDRESS) !=
-           EEPROM_MAGIC_SENSORBOARD) {
-               sei();
-               printf_P(PSTR("Bad eeprom value\r\n"));
-               while(1);
-       }
-
-       /* LOGS */
-       error_register_emerg(mylog);
-       error_register_error(mylog);
-       error_register_warning(mylog);
-       error_register_notice(mylog);
-       error_register_debug(mylog);
-
-       /* SPI + ENCODERS */
-       encoders_spi_init(); /* this will also init spi hardware */
-
-       /* I2C */
-       i2c_protocol_init();
-       i2c_init(I2C_MODE_SLAVE, I2C_SENSORBOARD_ADDR);
-       i2c_register_recv_event(i2c_recvevent);
-
-       /* TIMER */
-       timer_init();
-       timer0_register_OV_intr(main_timer_interrupt);
-
-       /* PWM */
-       PWM_NG_TIMER_16BITS_INIT(1, TIMER_16_MODE_PWM_10, 
-                                TIMER1_PRESCALER_DIV_1);
-       PWM_NG_TIMER_16BITS_INIT(4, TIMER_16_MODE_PWM_10, 
-                                TIMER4_PRESCALER_DIV_1);
-       
-       PWM_NG_INIT16(&gen.pwm1_4A, 4, A, 10, PWM_NG_MODE_SIGNED | 
-                     PWM_NG_MODE_SIGN_INVERTED,
-                     &PORTD, 4);
-       PWM_NG_INIT16(&gen.pwm2_4B, 4, B, 10, PWM_NG_MODE_SIGNED,
-                     &PORTD, 5);
-       PWM_NG_INIT16(&gen.pwm3_1A, 1, A, 10, PWM_NG_MODE_SIGNED,
-                     &PORTD, 6);
-       PWM_NG_INIT16(&gen.pwm4_1B, 1, B, 10, PWM_NG_MODE_SIGNED,
-                     &PORTD, 7);
-
-
-       /* servos */
-       PWM_NG_TIMER_16BITS_INIT(3, TIMER_16_MODE_PWM_10, 
-                                TIMER1_PRESCALER_DIV_256);
-       PWM_NG_INIT16(&gen.servo1, 3, C, 10, PWM_NG_MODE_NORMAL,
-                     NULL, 0);
-       PWM_NG_TIMER_16BITS_INIT(5, TIMER_16_MODE_PWM_10, 
-                                TIMER1_PRESCALER_DIV_256);
-       PWM_NG_INIT16(&gen.servo2, 5, A, 10, PWM_NG_MODE_NORMAL,
-                     NULL, 0);
-       PWM_NG_INIT16(&gen.servo3, 5, B, 10, PWM_NG_MODE_NORMAL,
-                     NULL, 0);
-       PWM_NG_INIT16(&gen.servo4, 5, C, 10, PWM_NG_MODE_NORMAL,
-                     NULL, 0);
-       
-       /* SCHEDULER */
-       scheduler_init();
-
-       scheduler_add_periodical_event_priority(do_led_blink, NULL, 
-                                               100000L / SCHEDULER_UNIT, 
-                                               LED_PRIO);
-       /* all cs management */
-       microb_cs_init();
-
-       /* sensors, will also init hardware adc */
-       sensor_init();
-
-       /* TIME */
-       time_init(TIME_PRIO);
-
-       /* ax12 */
-       ax12_user_init();
-
-       /* beacon */
-       beacon_init();
-       scheduler_add_periodical_event_priority(beacon_calc, NULL, 
-                                               20000L / SCHEDULER_UNIT, 
-                                               BEACON_PRIO);
-
-
-
-       /* scan */
-
-
-       scanner_init();
-       scheduler_add_periodical_event_priority(do_scan, NULL, 
-                                               (1024L*1L) / SCHEDULER_UNIT, 
-                                               CS_PRIO-1);
-
-       sei();
-
-       scan_params.speed = SCAN_DEFAULT_SPEED;
-       scan_params.debug = 0;
-
-       scanner_calibre_mirror();
-       scanner_calibre_laser();
-
-       beacon_calibre_pos();
-
-
-       printf_P(PSTR("\r\n"));
-       printf_P(PSTR("Dass das Gluck deinen Haus setzt.\r\n"));
-       cmdline_interact();
-
-
-
-       return 0;
-}