Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <avr/io.h>
- #include <avr/interrupt.h>
- void pwm_init(void)
- {
- TCCR0 |= (1<<COM01) | (1<<CS01) | (1<<WGM01) | (1<<WGM00); //4KHZ, NON-INVERTING MODE, FAST PWM MODE,
- }
- void adcinit (void){
- ADCSRA |= (1 << ADPS2) | (1 << ADPS1); // | (1 << ADPS0); // Set ADC prescalar to 64(128) - 125KHz sample rate @ 16MHz
- ADMUX |= (1 << REFS0); // Set ADC reference to AVCC
- ADMUX |= (1 << ADLAR); // Left adjust ADC result to allow easy 8 bit reading
- ADCSRA |= (1 << ADATE); // Set ADC to Free-Running Mode
- ADCSRA |= (1 << ADEN); // Enable ADC
- ADCSRA |= (1 << ADIE); // Enable ADC Interrupt
- ADCSRA |= (1 << ADSC); // Start A2D Conversions
- }
- int main(void)
- {
- DDRB |= (1<<PB3);
- pwm_init();
- adcinit();
- OCR0 = 128;
- //sei();
- for(;;){}
- return 0;
- }
- ISR(ADC_vect)
- {
- int adc_val = ADCH;
- OCR0 = adc_val;
- }
Add Comment
Please, Sign In to add comment