#include #include #include int vinkel; int start; int end; int pulslangd; int valuecollected; int lowvalue; int highvalue; int i; int allvalues; int value; char frandata; char frandata2; char xon; void main(void) { start = 0; DDRA = 0x00; DDRB = 0x01; DDRC = 0x00; ADMUX = 0x00; ADCSRA = 0xA6; SFIOR = 0x1F; UBRRL = 0x0C; UBRRH = 0x00; UCSRA = 0x20; UCSRC = 0x86; UCSRB = 0x18; vinkel = 88; end = 0; valuecollected = 0; lowvalue = 0; highvalue = 0; allvalues = 0; value = 0; frandata = 0; frandata2 = 0; xon = 1; sei(); OCR2 = 0x4E; TIMSK = 0x80; TCCR2 = 0x06; while(1) { receive(); if(valuecollected == 0 && start == 0x01) { while(i < 128){ omvandla(); allvalues = allvalues + lowvalue + highvalue; i++; } i = 0; value = allvalues>>9; allvalues = 0; sendvalue(); valuecollected = 1; } } } void SIG_OUTPUT_COMPARE2(void) { TCNT2 = 0x00; TCNT0 = 0x00; pulslangd = 80 + vinkel; OCR0 = pulslangd; TIMSK = 0x02; TCCR0 = 0x02; PORTB = 0x01; sei(); } void SIG_OUTPUT_COMPARE0(void) { PORTB = 0x00; TCCR0 = 0x00; TIMSK = 0x80; if(end == 0 && valuecollected == 1) { vinkel++; valuecollected = 0; if(vinkel == 176){ end = 1; } } else if(end == 1 && valuecollected == 1){ vinkel--; valuecollected = 0; if(vinkel == 0){ end = 0; } } sei(); } void omvandla(void) { ADCSRA = ADCSRA|0X40; while(ADCSRA & 0x10 != 0x10) { } lowvalue = ADCL; highvalue = ADCH<<8; ADCSRA = ADCSRA|0x10; } void sendvalue(void) { while(xon == 0) { receive(); } while(!(UCSRA & (1<