diff options
| -rw-r--r-- | src/main.cc | 12 | ||||
| -rw-r--r-- | src/modem.cc | 14 | ||||
| -rw-r--r-- | src/modem.h | 3 | ||||
| -rw-r--r-- | src/system.cc | 9 | 
4 files changed, 30 insertions, 8 deletions
| diff --git a/src/main.cc b/src/main.cc index eb523ce..03cdabd 100644 --- a/src/main.cc +++ b/src/main.cc @@ -33,8 +33,14 @@ int main (void)  	// raise timer interrupt on counter overflow (-> interrupt frequency = ~4kHz)  	TIMSK0 = _BV(TOIE0); -	disp[0] = 0xff; -	disp[1] = 0xaa; +	disp[0] = 0x01; +	disp[1] = 0x02; +	disp[2] = 0x04; +	disp[3] = 0x08; +	disp[4] = 0x10; +	disp[5] = 0x20; +	disp[6] = 0x40; +	disp[7] = 0x80;  #if 0  	// smile! @@ -72,7 +78,7 @@ int main (void)  	disp[31] = 0x00;  #endif -	modem.init(); +	modem.enable();  	sei(); diff --git a/src/modem.cc b/src/modem.cc index cb3a6ee..2eae685 100644 --- a/src/modem.cc +++ b/src/modem.cc @@ -28,7 +28,7 @@ uint8_t Modem::buffer_available() {   * Store 1 byte in ringbuffer   */  static inline void modem_buffer_put(const uint8_t c) { -	if (modem.buffer_available() != MODEM_BUFFER_SIZE) {  +	if (modem.buffer_available() != MODEM_BUFFER_SIZE) {  		modem_buffer[modem_buffer_head++ % MODEM_BUFFER_SIZE] = c;  	}   } @@ -83,7 +83,11 @@ ISR(PCINT3_vect) {  /*   * Start the modem by enabling Pin Change Interrupts & Timer   */ -void Modem::init()  { +void Modem::enable()  { +	/* Enable R1 */ +	DDRA  |= _BV(PA3); +	PORTA |= _BV(PA3); +  	/* Modem pin as input */  	MODEM_DDR &= ~_BV(MODEM_PIN); @@ -94,3 +98,9 @@ void Modem::init()  {  	/* Timer: TCCR1: CS10 and CS11 bits: 8MHz clock with Prescaler 64 = 125kHz timer clock */  	TCCR1B = _BV(CS11) | _BV(CS10);  } + +void Modem::disable() +{ +	PORTA &= ~_BV(PA3); +	DDRA  &= ~_BV(PA3); +} diff --git a/src/modem.h b/src/modem.h index 9c629a5..a37d7d8 100644 --- a/src/modem.h +++ b/src/modem.h @@ -27,7 +27,8 @@ class Modem {  		Modem() {};  		uint8_t buffer_available(void);  		uint8_t buffer_get(void); -		void init(void); +		void enable(void); +		void disable(void);  };  extern Modem modem; diff --git a/src/system.cc b/src/system.cc index 9aaa62b..b98e687 100644 --- a/src/system.cc +++ b/src/system.cc @@ -34,6 +34,8 @@ void System::loop()  			// turn off display to indicate we're about to shut down  			display.turn_off(); +			modem.disable(); +  			// wait until both buttons are released  			while (!((PINC & _BV(PC3)) && (PINC & _BV(PC7)))) ; @@ -57,6 +59,9 @@ void System::loop()  			// turn on display  			display.turn_on(); +			// ... and modem +			modem.enable(); +  			want_shutdown = 0;  		}  	} @@ -64,9 +69,9 @@ void System::loop()  		want_shutdown = 0;  	} -	if (modem.buffer_available()) { +	while (modem.buffer_available()) {  		disp[i++] = modem.buffer_get(); -		if (i == 7) +		if (i == 8)  			i = 0;  	}  } | 
