示例#1
0
文件: main.c 项目: MrOnak/avr_DSKY
void init(void) {
	// configure pins
	DDRB |= (1 << DSKY_DISPLAY_PIN_CLR); 		// output
	DDRD |= (1 << DSKY_DISPLAY_PIN_PWRCLR); // output
	DDRD &= ~(1 << DSKY_DISPLAY_PIN_PWRCLR);
	
	// configure pins for SPI master
	SPI_init();	
	// initialize UART
  uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); 
	// intialize KSP plugin
  kspio_init();
	
	clearRegisters(); // resets the shift registers and the decade counter
	
  // initialize bargraph PWM pins as outputs
  DSKY_BARGRAPH_CTRL_PORT |= (1 << DSKY_BARGRAPH_PIN_B1);
  DSKY_BARGRAPH_CTRL_PORT |= (1 << DSKY_BARGRAPH_PIN_B2);
  DSKY_BARGRAPH_CTRL_PORT |= (1 << DSKY_BARGRAPH_PIN_B3);
  
  // configure PWMs for bargraph displays
  TCCR0A |= (1 << COM0A1);								// set non-inverting mode for OC0A
  TCCR0A |= (1 << COM0B1);								// set non-inverting mode for OC0B
  TCCR0A |= (1 << WGM01) | (1 << WGM00);	// set fast PWM mode
  TCCR0B |= (1 << CS02) | (1 << CS00);		// set prescaler to 1024 and start PWM

  TCCR2A |= (1 << COM2B1);								// set non-inverting mode for OC2B
  //TCCR2A |= (1 << WGM21) | (1 << WGM20);				// set fast PWM mode - done in millis.c
  //TCCR2B |= (1 << CS22) | (1 << CS21) | (1 << CS20); 	// set prescaler to 1024 and start PWM - done in millis.c

	// multiplexing the displays
	TCCR1A |= (1 << WGM10);  												// timer/counter control register 1 A: fast PWM
	TCCR1B |= (1<<WGM12) | (1<<CS11) | (1<<CS10);  	// timer/counter control register 1 B: clock select 64th frequency
	TIMSK1 |= (1<<TOIE1);														// timer/counter interrupt mask register: timer/counter 1 overflow interrupt enable
}
示例#2
0
文件: machine.cpp 项目: TyRoXx/dcpupp
	Machine::Machine(Memory memory)
		: memory(std::move(memory))
		, skipNext(false)
	{
		this->memory.resize(MemorySizeInWords);
		clearRegisters();
	}
示例#3
0
void setup() {
	// Shift Register
	pinMode(PIN_SR_SER, OUTPUT);
	pinMode(PIN_SR_RCLK, OUTPUT);
	pinMode(PIN_SR_SRCLK, OUTPUT);
	clearRegisters(); // Set all registers to LOW
	writeRegisters(); // Save changes
}
示例#4
0
void display_bit_pattern(int cycle) {
        clearRegisters();
        int index;
        for (index = 0 ; index < SR_MAX ; index++) {
            setRegisterPin(index, (cycle & (1 << index)) > 0 ? HIGH : LOW);
        }
        writeRegisters();
}
示例#5
0
void initialize(){
    initializeFuncPtrArray();
    clearMemory();
    clearRegisters();
    clearFregister();
    clearDregister();
    clearEregister();
    clearMregister();
    clearWregister();
}
示例#6
0
文件: main.c 项目: vanhineam/Y86
void initialize()
{
    clearMemory();
    clearRegisters();
    clearFregister();
    clearDregister();
    clearEregister();
    clearMregister();
    clearWregister();

    initInstructions();
}
示例#7
0
文件: main.c 项目: MrOnak/avr_DSKY
int main(void) {
	cli();
	
  init();
	clearRegisters();
  
	sei();
	
  while (1) {
	  // grab most recent flight data from KSP
		switch (kspio_input()) {
			case 0: // handshake
				clearRegisters();
				break;
				
			case 1: // vessel data - update stuff			
				// fix negative periapsis
				if (kspio_vData.PE < 0) {
					kspio_vData.PE = 0;
				}
				// decide whether radar altimetry is available or not
				if (kspio_vData.RAlt < 20000 && kspio_vData.Alt - kspio_vData.RAlt > 1) {
					isRAlt = TRUE;
				} else {
					isRAlt = FALSE;
				}
						
				// update bargraphs
				OCR0A = (147 * (kspio_vData.LiquidFuelS / kspio_vData.LiquidFuelTotS));
				OCR0B = (147 * (kspio_vData.MonoProp / kspio_vData.MonoPropTot));
				OCR2B = (210 * (kspio_vData.ECharge / kspio_vData.EChargeTot));
				
				// calculate infolight values
				setInfolights();
				// calculate 7-segment digits
				setDisplayData();		
				break;
		}
	}
}
示例#8
0
文件: main.c 项目: leec1/yess
/* initialize
 *      Initializes a bunch of stuff.
 * Params:   none
 * Returns:  void
 * Modifies: W_valE, W_dstE
 */
void initialize() {
    clockCount = 0;
    stop = FALSE;
    
    initFwdStruct();    
    initializeFuncPtrArray();
    initializeCC();
    
    clearMemory();
    clearRegisters();
    
    clearFregister();
    clearDregister();
    clearEregister();
    clearMregister();
    clearWregister();
}
示例#9
0
int GoldCodeGenerator::generateChipSequence(unsigned int lengthOfSequence, int tapOne, int tapTwo, int rotation)
{
	clearRegisters();


	std::cout << "{ ";
	for (size_t i = 0; i < lengthOfSequence; i++)
	{
		bool upper, lower;
		upper = shiftUpperRegister(upperRegister, LENGTH);
		lower = shiftLowerRegister(lowerRegister, LENGTH, tapOne, tapTwo);
		//cout << upper << " XOR " << lower << "  "<< (upper ^ lower) << endl;
		std::cout << (upper ^ lower);
		std::cout << ',';
	}
	std::cout << "}, ";
	std::cout << std::endl;
	return 42;
}
示例#10
0
文件: machine.cpp 项目: TyRoXx/dcpupp
	Machine::Machine()
		: skipNext(false)
	{
		clearRegisters();
	}