All pastes #921152 Raw Edit

Something

public text v1 · immutable
#921152 ·published 2008-02-27 21:12 UTC
rendered paste body
// lfuse is 1101 1111; EF
// PIN0 PIN1 PIN2 OUTPUT 
// 0     0     0     0.0V   - Sync level
// 1     0     0     510mV   - Gray
// 0     1     0     246mV   - ???
// 0     0     1     296mV   - Black

// 1     1     0     757mV   - gray/white
// 1     0     1     806mV   - gray/white 
// 0     1     1     542mV   - black/gray
// 1     1     1     1.05V   - white
// 18.432 cycles = 1µS
#include <avr/io.h>

void set_sync() {
	PORTA &= ~(1 << 0); // Sets pins 0,1,2 to LOW
	PORTA &= ~(1 << 1); 
	PORTA &= ~(1 << 2); 
}

void set_black() {
	PORTA &= ~(1 << 0); // Sets pin 2 to HIGH
	PORTA &= ~(1 << 1); 
	PORTA |=  1 << 2; 
}

void set_white() {
	PORTA |=  1 << 0; 
	PORTA |=  1 << 1; 
	PORTA |=  1 << 2;
}

uint32_t GetUsecs() {
	return TCNT1/18.432;
}

int main() {
	uint32_t us;   // microsecond counter
	
   DDRA = 0xFF;	
   TCCR1B |= (1 << CS10);
	us = 0;
	uint32_t line = 1;
	PORTA ^= 255;
   while (1) {
		us = GetUsecs();
		
		switch(line) {
			case 1:
			case 2:
				set_sync();
				switch(us) {
					case 30:
						set_black();
					case 32:
						set_sync();
					case 62:
						set_black();
					case 64:
						us = 0;		
						TCNT1 = 0;
				}
				line++;
				continue;
			case 3:
				set_sync();		
				switch(us) {
					case 30:
						set_black();
					case 32:
						set_sync();
					case 34:
						set_black();
					case 64:
						us = 0;
						TCNT1 = 0;
				}
				line++;
				continue;
			case 4:
			case 5:
			case 311:
			case 312:
			case 316:
			case 317:
			case 623:
			case 624:
			case 625:
				set_sync();
				switch(us) {
					case 2:
						set_black();
					case 32:
						set_sync();
					case 34:
						set_black();
					case 64:
						us = 0;
						TCNT1 = 0;
				}
			default:
				set_sync();
				switch(us) {
					case 12:
						set_black();
					case 20:
						set_white();
					case 40:
						set_black();
					case 50:
						set_white();
					case 64:
						us = 0;
						TCNT1 = 0;
				}
		}	
	}
}