/* Lüftersteuerung Marius H. 16.06.15 */ #define F_CPU 4000000 // Taktfequenz des Controllers festgelegt #include // Headerdateien mit Deklarationen bzw. libraries #include #include // Wird für sprintf gebraucht ( Ansonsten Fehlermeldung:implicit declaration of function sprintf ) //#include unsigned char Step=102; // Potentiometer: Max Wert ADC bei 5V Eingang ist 1024! 255/10 Schritte (10 LEDs) = 10 Steps unsigned char RS4; unsigned char LS; //Lüfterstärke(LS),dient dazu den lüfter kurz auf volle leistung und dann wieder auf den ursprungswert zurück int main(void) { DDRA |= (0<Bit 3(WGM01)/Bit 6 (WGM00) auf "1" ergibt den Fast PWM Modus. |(1<Bit 5(COM01)/Bit 4(COM00) auf "1" setzt |(1<wird OC0 in Vergleich/ist gleich Modus. |(1<Wenn nur CS00 auf "1" gesetzt wird, ist kein Preskaler gesetzt. while(1) { // Konfiguration ADC Zwingend innerhalb der While Schleife--------------------------------------------------------------------------------------------------- ADCSRA = 0b11100101; // ADC Parameter eingestellt // Bit 0,1,2,>> ADPS0-3 >> 101 >> Teilerfaktor 32 für ADC Takt 125khz // Bit 3 >> 0 = ADIE Interrupt enable hier nicht notwendig // Bit 4 >> 0 = ADIF kein Interrupt Flag wird gesetzt // Bit 5 >> 1 = ADATE Auto Trigger Enable ist gesetzt evtl. nicht notwendig // Bit 6 >> 1 = ADSC Start Conversion // Bit 7 >> 1 = ADEN Adc Enable SFIOR = 0b11100000; // Bit 5,6,7,>> ADTS 0-2 111>> Free running mode ADMUX = 0b01000000; // Bits 0,1,2,3,4 >> 00111 >> Port ADC7 ausgewählt // Bit 5 >> ADLAR 0 rechtsbündige Ausrichtung vom ADC Ergebniss // Bit 6,7 >> REFS1 - REFS0 00 >> Externe Referenz //---------------------------------------------------S5 Temperaturabhängiger Modi--------------------------------------------------- _delay_ms(10); // Zeitschelife von 10ms while (PIND & (1<=Step*1) PORTC|=(1<<0); // Wenn der Analog wert im ersten Schritt ist, leuchtet keine LED else PORTC &= ~ (1<<0); // //--------------------------------------------------------------Step 2-------------------------------------------------------------- if (ADCW>=Step*2) PORTC|=(1<<1); // Wenn der Analog wert im ersten Schritt ist, leuchtet PC1 LED else PORTC &= ~ (1<<1); // //--------------------------------------------------------------Step 3-------------------------------------------------------------- if (ADCW>=Step*3) PORTC|=(1<<2); // Wenn der Analog wert im ersten Schritt ist, leuchtet PC2 LED else PORTC &= ~ (1<<2); // //--------------------------------------------------------------Step 4-------------------------------------------------------------- if (ADCW>=Step*4) PORTC|=(1<<3); // Wenn der Analog wert im ersten Schritt ist, leuchtet PC3 LED else PORTC &= ~ (1<<3); // //--------------------------------------------------------------Step 5-------------------------------------------------------------- if (ADCW>=Step*5) PORTC|=(1<<4); // Wenn der Analog wert im ersten Schritt ist, leuchtet PC4 LED else PORTC &= ~ (1<<4); // //--------------------------------------------------------------Step 6-------------------------------------------------------------- if (ADCW>=Step*6) PORTC|=(1<<5); // Wenn der Analog wert im ersten Schritt ist, leuchtet PC5 LED else PORTC &= ~ (1<<5); // //--------------------------------------------------------------Step 7-------------------------------------------------------------- if (ADCW>=Step*7) PORTC|=(1<<6); // Wenn der Analog wert im ersten Schritt ist, leuchtet PC6 LED else PORTC &= ~ (1<<6); // //--------------------------------------------------------------Step 8-------------------------------------------------------------- if (ADCW>=Step*8) PORTC|=(1<<7); // Wenn der Analog wert im ersten Schritt ist, leuchtet PC7 LED else PORTC &= ~ (1<<7); // //--------------------------------------------------------------Step 9-------------------------------------------------------------- if (ADCW>=Step*9) PORTA|=(1<<6); // Wenn der Analog wert im ersten Schritt ist, leuchtet PA6 LED else PORTA &= ~ (1<<6); // //--------------------------------------------------------------Step 10-------------------------------------------------------------- if (ADCW>=Step*10) PORTA|=(1<<7); // Wenn der Analog wert im ersten Schritt ist, leuchtet PA7 LED else PORTA &= ~ (1<<7); // //----------------------------------------------------------------0%----------------------------------------------------------------- if(PORTC==0x00) // Wenn keine LED Leuchtet dann... { OCR0 = 0; //Lüfterstärke bei 0% } //---------------------------------------------------------------10%----------------------------------------------------------------- if(PORTC & (1<