Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <avr/interrupt.h>
- #include <util/delay.h>
- #include <avr/eeprom.h>
- #define IRF_ALARM_BATTERY 890
- #define IRF_ALARM_OUTPUT 890
- #define WAIT(time) for(uint16_t i=0;i<2000;i++)_delay_loop_2(time);
- int adc_data;
- ISR(ADC_vect)
- {
- // muutos globaaliksi //int adc_data;
- adc_data = ADCW;
- /*if(adc_data<=IRF_ALARM)
- {
- PORTC &= ~(1<<4);
- }*/
- }
- void ADC_init(void)
- {
- ADMUX |= 1<<REFS0; //(1<<REFS0) AVCC=5V with external capacitor at AREF pin
- ADMUX |= (1<<MUX1); // valitaan ADC2
- ADCSRA |= (1<<ADPS0) | (1<<ADPS1); // jakoluku 8
- // 1000000/8 = 125 kHz
- // oltava välillä 50 kHz ... 200 kHz
- ADCSRA |= (1<<ADIE)|(1<< ADEN); // adc ON ja keskeytys ON
- }
- int main (void)
- {
- unsigned long ElapsedSeconds = 0;
- int irflippu;
- int counter;
- uint16_t ka;
- DDRB |=0xFF;
- DDRC |=(1<<4);
- PORTC |=(1<<4);
- DDRD &=~(1<<0);
- TCCR1B |= ((1 << CS10) | (1 << CS11)); // Set up timer1 at Fcpu/64
- TCCR0 |= ((1 << CS01) | (1 << CS00)); // Set up timer at Fcpu/64
- ADC_init();
- sei(); // globaali keskeytys sallittu
- while(1)
- {
- PORTB = (1 << 1);
- if (TCNT1 >= 15624)
- {
- TCNT1 = 0; // Reset timer value
- ElapsedSeconds++;
- if (ElapsedSeconds >= 30) // Check if a minute has elapsed
- {
- counter=0;
- ElapsedSeconds = 0; // Reset ElapsedSeconds variable
- /* KANAVAN VAIHTO */
- ADCSRA &=~(1<<ADEN);
- ADCSRA &=~(1<<ADATE);
- ADMUX|=0x00;
- ADMUX |= (1<<MUX1); // valitaan ADC2
- WAIT(1);
- PORTB = (1 << 0); // Start the test
- /*-----------------------------------------------------*/
- while(counter<=1000)
- {
- if(TCNT0 >= 0xFF)
- {
- counter++;
- ADCSRA |= (1<< ADEN) | (1<<ADSC);
- if(ADCW<=IRF_ALARM_BATTERY)
- {
- irflippu=1;
- WAIT(10);
- ADCSRA |= (1<< ADEN) | (1<<ADSC);
- }
- else if(irflippu==1&&ADCW<=IRF_ALARM_BATTERY)
- {
- PORTC &= ~(1<<4);
- }
- }
- }//end of while counter!=1000
- PORTB &=~(1<<0); //done
- }
- }
- /*tuotantotestaus*/
- if((PIND&0x01)==0x01)
- {
- ElapsedSeconds = 29;
- }
- /*---------------------------------------------------*/
- /* KANAVAN VAIHTO */
- ADCSRA &=~(1<<ADEN);
- ADCSRA &=~(1<<ADATE);
- ADMUX |= ((1<<MUX0)|(1<<MUX1)); // valitaan ADC3
- WAIT(1);
- /*----------------------------------------------------*/
- ADCSRA |= (1<< ADEN) | (1<<ADSC);
- if(ADCW<=IRF_ALARM_OUTPUT)
- {
- irflippu=1;
- WAIT(10);
- ADCSRA |= (1<< ADEN) | (1<<ADSC);
- }
- else if(irflippu==1&&ADCW<=IRF_ALARM_OUTPUT)
- {
- PORTC &= ~(1<<4);
- }
- };
- }
Add Comment
Please, Sign In to add comment