📄 asuro 016, build 001, left tracksensor controls left engine.c
字号:
/*
================================================================================
This program measures the amount of light that is detected by the left bottom-side
track sensor diode and sets the left engine speed according the measured light value.
================================================================================
Program : Asuro 016, Build 001, Left tracksensor controls left engine.c
Release date : 2005-02-07
Author : Henk van Winkoop
Build : 001, 2005-02-07, original release
================================================================================
*/
//--------------------------------------------------------------------------------
// INCLUDES
//--------------------------------------------------------------------------------
#include "hvwdefines.h"
//================================================================================
// DELAY MILLI SECONDS
//================================================================================
void vDelayMilliSeconds(int iDelMilSec){
//var
unsigned int i,j;
//handle all milli seconds
for(i=0;i<iDelMilSec;i++){
//delay 1 millisecond
for(j=0;j<28750;j++){
}//for
}//for
}
//================================================================================
// INIT ALL PORTS
//================================================================================
void vInitAllPorts(void){
//disable all output pull-up resistors
SFRX(SFIOR,PUD_H);
//+-------------------------------------------------------------------------------------------+
//| DDRB = Data Direction Register port B |
//| |
//| FWD_RGT = Forward Right engine |
//| REV_RGT = Reverse Right engine |
//| IR_TXD1 = InfraRed Transmit data (connection1, connected to R16) |
//| SPD_RGT = Speed of Right engine |
//| SPD_LFT = Speed of Left engine |
//| SLD_GRN = System LeD Green |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|port name | PB7 | PB6 | PB5 | PB4 | PB3 | PB2 | PB1 | PB0 |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|bit number | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|pin number | 10 | 9 | 19 | 18 | 17 | 16 | 15 | 14 |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|signal name| XTAL2 | XTAL1 | REV_RGT | FWD_RGT | IR_TXD1 | SPD_RGT | SPD_LFT | SLD_GRN |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
SFRX ( DDRB , REV_RGT_O|FWD_RGT_O|IR_TXD1_O|SPD_RGT_O|SPD_LFT_O|SLD_GRN_O);
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
SFRX ( PORTB , REV_RGT_H|FWD_RGT_L|IR_TXD1_L|SPD_RGT_L|SPD_LFT_L|SLD_GRN_H);
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
// x x . . . . . . = unused (connected to 8MHz Xtal)
// . . n n . . . . = OL OL = both engine poles connected to VCC (break?)
// . . n n . . . . = OL OH = set right engine direction to reverse
// . . OH OL . . . . = OH OL = set right engine direction to forward
// . . n n . . . . = OH OH = both engine poles are equally pulsed if speed is programmed
// . . . . OL . . . = Infra Red transmit signal
// . . . . . OL OL . = left-engine and right-engine speed output
// . . . . . . . OH = system-led green-light control output, ON
//+-------------------------------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------------+
//| DDRC = Data Direction Register port C |
//| |
//| VPL_SNS = V+ Sense |
//| SWI_JNC = Switch Junction |
//| TRS_LFT = Tracksensor Left |
//| TRS_RGT = Tracksensor Right |
//| BOD_LFT = Break and Odometer Left |
//| BOD_RGT = Break and Odometer Right |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|port name | PC7 | PC6 | PC5 | PC4 | PC3 | PC2 | PC1 | PC0 |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|bit number | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|pin number | - | 1 | 28 | 27 | 26 | 25 | 24 | 23 |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|signal name| - | RESET |VPL_SNS |SWI_JNC |TRS_LFT |TRS_RGT |BOD_LFT |BOD_RGT |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
SFRX ( DDRC , VPL_SNS_I|SWI_JNC_I|TRS_LFT_I|TRS_RGT_I|BOD_LFT_O|BOD_RGT_O);
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
SFRX ( PORTC , VPL_SNS_N|SWI_JNC_N|TRS_LFT_N|TRS_RGT_N|BOD_LFT_L|BOD_RGT_L);
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
// . . IN . . . . . = V+ sensor measurement as input
// . . . IN . . . . = key-press detector as input
// . . . . IN IN . . = left/right track sensors as input
// . . . . , , OL OL = left/right break/odo-meter sensors as input
//+-------------------------------------------------------------------------------------------+
//+-------------------------------------------------------------------------------------------+
//| DDRD = Data Direction Register port D |
//| |
//| BOD_COM = Breaks and Odoleds Common connection |
//| TRK_LED = Track Led |
//| FWD_LFT = Forward Left engine |
//| REV_LFT = Reverse Left engine |
//| SWI_IAC = Switches Interrupt And Control |
//| SLD_RED = System Led Red |
//| IR_TXD2 = InfraRed Transmit data (connection2, connected to D10) |
//| IR_RXD = InfraRed Receive data |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|port name | PD7 | PD6 | PD5 | PD4 | PD3 | PD2 | PD1 | PD0 |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|bit number | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|pin number | 13 | 12 | 11 | 6 | 5 | 4 | 3 | 2 |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
//|signal name| ODO_LDS |FRT_LED |FWD_LFT |REV_LFT |SWI_INT |SLD_RED |IR_RXD |IR_TXD2 |
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
SFRX ( DDRD ,BOD_COM_O|TRK_LED_O|REV_LFT_O|FWD_LFT_O|SWI_IAC_I|SLD_RED_O|IR_TXD2_I|IR_RXD_I );
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
SFRX ( PORTD ,BOD_COM_L|TRK_LED_L|REV_LFT_H|FWD_LFT_L|SWI_IAC_L|SLD_RED_L|IR_TXD2_L|IR_RXD_L );
//+-----------+---------+---------+---------+---------+---------+---------+---------+---------+
// OL . . . . . . . = both odometrie leds (#001)
// . OL . . . . . . = front (tracking) led (#002)
// . . n n . . . . = OL OL = both engine poles connected to VCC (break?)
// . . n n . . . . = OL OH = set left engine direction to reverse
// . . OH OL . . . . = OH OL = set left engine direction to forward
// . . n n . . . . = OH OH = both engine poles are equally pulsed if speed is programmed
// . . . . IL . . . = 'switches' is input
// . . . . . OL . . = system-led red-light control output
// . . . . . . IL IL = Infra-Red signals both as input
//+-------------------------------------------------------------------------------------------+
}
//================================================================================
// INIT ENGINES USING MODE 1
//================================================================================
void vInitEnginesUsingMode1(void){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -