/******************************************************* Projekt: Aetzwanne Version : ATTiny25 - 1 Erstellt: 20.09.2016 Letze Aenderung: 25.09.2016 Chip: Attiny25 mit internen 8.0 MHz *******************************************************/ /// Header-Dateien/// #include #include /// Definierungen /// #define Lastwiderstaende PORTB.0 #define DataOut PORTB.1 #define InterruptOut PORTB.2 #define Target_low 40 //Minimale Temperatur #define Target_high 45 //Maximale Temperatur // Bandgap Voltage Reference: Off #define ADC_VREF_TYPE ((0< Target_high) Lastwiderstaende = 0; /// Temperatur zerlegen /// //Einerstelle in BCD zerlegen temp_part = temp % 10; switch (temp_part) { case 0: temp_einer_bit0 = 0; temp_einer_bit1 = 0; temp_einer_bit2 = 0; temp_einer_bit3 = 0; break; case 1: temp_einer_bit0 = 1; temp_einer_bit1 = 0; temp_einer_bit2 = 0; temp_einer_bit3 = 0; break; case 2: temp_einer_bit0 = 0; temp_einer_bit1 = 1; temp_einer_bit2 = 0; temp_einer_bit3 = 0; break; case 3: temp_einer_bit0 = 1; temp_einer_bit1 = 1; temp_einer_bit2 = 0; temp_einer_bit3 = 0; break; case 4: temp_einer_bit0 = 0; temp_einer_bit1 = 0; temp_einer_bit2 = 1; temp_einer_bit3 = 0; break; case 5: temp_einer_bit0 = 1; temp_einer_bit1 = 0; temp_einer_bit2 = 1; temp_einer_bit3 = 0; break; case 6: temp_einer_bit0 = 0; temp_einer_bit1 = 1; temp_einer_bit2 = 1; temp_einer_bit3 = 0; break; case 7: temp_einer_bit0 = 1; temp_einer_bit1 = 1; temp_einer_bit2 = 1; temp_einer_bit3 = 0; break; case 8: temp_einer_bit0 = 0; temp_einer_bit1 = 0; temp_einer_bit2 = 0; temp_einer_bit3 = 1; break; case 9: temp_einer_bit0 = 1; temp_einer_bit1 = 0; temp_einer_bit2 = 0; temp_einer_bit3 = 1; break; } //Zehnerstelle in BCD zerlegen temp_part = (temp - temp_part) / 10; switch (temp_part) { case 0: temp_zehner_bit0 = 0; temp_zehner_bit1 = 0; temp_zehner_bit2 = 0; temp_zehner_bit3 = 0; break; case 1: temp_zehner_bit0 = 1; temp_zehner_bit1 = 0; temp_zehner_bit2 = 0; temp_zehner_bit3 = 0; break; case 2: temp_zehner_bit0 = 0; temp_zehner_bit1 = 1; temp_zehner_bit2 = 0; temp_zehner_bit3 = 0; break; case 3: temp_zehner_bit0 = 1; temp_zehner_bit1 = 1; temp_zehner_bit2 = 0; temp_zehner_bit3 = 0; break; case 4: temp_zehner_bit0 = 0; temp_zehner_bit1 = 0; temp_zehner_bit2 = 1; temp_zehner_bit3 = 0; break; case 5: temp_zehner_bit0 = 1; temp_zehner_bit1 = 0; temp_zehner_bit2 = 1; temp_zehner_bit3 = 0; break; case 6: temp_zehner_bit0 = 0; temp_zehner_bit1 = 1; temp_zehner_bit2 = 1; temp_zehner_bit3 = 0; break; case 7: temp_zehner_bit0 = 1; temp_zehner_bit1 = 1; temp_zehner_bit2 = 1; temp_zehner_bit3 = 0; break; case 8: temp_zehner_bit0 = 0; temp_zehner_bit1 = 0; temp_zehner_bit2 = 0; temp_zehner_bit3 = 1; break; case 9: temp_zehner_bit0 = 1; temp_zehner_bit1 = 0; temp_zehner_bit2 = 0; temp_zehner_bit3 = 1; break; } /// Temperaturwert uebertragen /// //Einerstelle uebertragen DataOut = temp_einer_bit0; //Zu uebertragendes Bit anlegen InterruptOut = 1; //Signalisieren, dass Bit angelegt ist delay_ms(1); //Warten, bis Bit uebernommen ist InterruptOut = 0; delay_ms(1); DataOut = temp_einer_bit1; InterruptOut = 1; delay_ms(1); InterruptOut = 0; delay_ms(1); DataOut = temp_einer_bit2; InterruptOut = 1; delay_ms(1); InterruptOut = 0; delay_ms(1); DataOut = temp_einer_bit3; InterruptOut = 1; delay_ms(1); InterruptOut = 0; delay_ms(1); //Zehnerstelle DataOut = temp_zehner_bit0; InterruptOut = 1; delay_ms(1); InterruptOut = 0; delay_ms(1); DataOut = temp_zehner_bit1; InterruptOut = 1; delay_ms(1); InterruptOut = 0; delay_ms(1); DataOut = temp_zehner_bit2; InterruptOut = 1; delay_ms(1); InterruptOut = 0; delay_ms(1); DataOut = temp_zehner_bit3; InterruptOut = 1; delay_ms(1); InterruptOut = 0; delay_ms(1); //Warten bis zur naechten Messung delay_ms(1000); } } /// Funktionen /// int read_adc () { // ADC starten ADCSRA |= (1 << ADSC); // Auf Ende des Messvorgangs warten while (ADCSRA & (1 << ADSC)); // 10-Bit-Ergebnis zurueckgeben return (ADCH<<8 | ADCL); }