Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 1306 → Rev 1307

/Transportables_Koptertool/tags/V3.9/motortest.c
0,0 → 1,136
/*****************************************************************************
* Copyright (C) 2009 Peter "woggle" Mack, mac@denich.net *
* *
* 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. *
* *
* 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. *
* *
*****************************************************************************/
 
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <string.h>
 
#include "main.h"
#include "motortest.h"
#include "lcd.h"
#include "usart.h"
#include "timer.h"
 
 
uint8_t m;
uint8_t mmode;
uint8_t v;
 
 
volatile uint8_t i2c_state;
volatile uint8_t motor_addr = 0;
 
 
//*****************************************************************************
//
void motor (uint8_t m,uint8_t v)
{
memset (buffer, 0, 16);
if(m == 0)
{
memset (buffer, v, 16);
}
else
{
buffer[m-1] = v;
}
 
SendOutData('t', ADDRESS_FC, 1, buffer, 16);
}
 
//*****************************************************************************
//
void motor_test (void)
{
//uint8_t m;
 
 
lcd_cls ();
mmode = 1;
m = 0;
v = 0;
 
lcd_printp (PSTR("Motor Test"), 0);
lcd_printpns_at (2, 2, PSTR("Motor: All"), 0);
lcd_printpns_at (2, 3, PSTR("Value: 0"), 0);
lcd_printpns_at (0, 7, PSTR(" \x18 \x19 Back \x0c"), 0);
 
 
lcd_printp_at (0, 2, PSTR("\x1D"), 0);
 
if (hardware == NC && current_hardware == NC)
{
SwitchToFC();
}
 
do
{
if ((mmode == 0) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (v < 254))
{
v++;
write_ndigit_number_u (9, 3, v, 3, 0);
lcd_frect ((8*1), (8*5), (v * (14*8)) / 255, 6, 1);
}
if ((mmode == 0) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (v > 0))
{
lcd_frect ((8*1), (8*5), (v * (14*8)) / 255, 6, 0);
v--;
write_ndigit_number_u (9, 3, v, 3, 0);
lcd_frect ((8*1), (8*5), (v * (14*8)) / 255, 6, 1);
}
if ((mmode == 1) && (get_key_press (1 << KEY_PLUS) || get_key_rpt (1 << KEY_PLUS)) && (m < 16))
{
m++;
write_ndigit_number_u (9, 2, m, 3, 0);
}
if ((mmode == 1) && (get_key_press (1 << KEY_MINUS) || get_key_rpt (1 << KEY_MINUS)) && (m > 0))
{
m--;
if(m > 0) write_ndigit_number_u (9, 2, m, 3, 0);
if(m == 0) lcd_printpns_at (9, 2, PSTR("All"), 0);
}
if (get_key_press (1 << KEY_ENTER))
{
if(mmode == 0)
{
lcd_printp_at (0, 2, PSTR("\x1D"), 0);
lcd_printp_at (0, 3, PSTR(" "), 0);
mmode = 1;
}
else
{
lcd_printp_at (0, 2, PSTR(" "), 0);
lcd_printp_at (0, 3, PSTR("\x1D"), 0);
mmode = 0;
};
}
motor (m,v);
}
while (!get_key_press (1 << KEY_ESC));
 
 
 
// switch all engines off at exit !
memset (buffer, 0, 16);
SendOutData('t', ADDRESS_FC, 1, buffer, 16);
 
}