fork(1) download
  1. #include <avr/io.h>
  2. #include <avr/interrupt.h>
  3. #include <avr/sleep.h>
  4. #include <util/delay.h>
  5.  
  6. enum {
  7. setpoint = 13ll * 10230ll * 11ll / 2000ll
  8. };
  9.  
  10. static void setup_adc(void) {
  11. ADMUX |= (1 << REFS1) | (1 << MUX1);
  12. ADCSRA |= (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
  13. }
  14.  
  15. static void setup_pwm(void) {
  16. PLLCSR |= (1 << PCKE);
  17. _delay_us(100);
  18. DDRB |= (1 << PB1);
  19. OCR1C = 0xff;
  20. TCCR1 |= (1 << PWM1A) | (1 << COM1A1) | (1 << CS10);
  21. TIMSK |= (1 << TOIE1);
  22. }
  23.  
  24. static int read_adc(void) {
  25. ADCSRA |= (1 << ADSC);
  26. while (!(ADCSRA & (1 << ADIF)));
  27. ADCSRA &= ~(1 << ADIF);
  28. return ADC;
  29. }
  30.  
  31. static int oversample(void) {
  32. int reading = 0;
  33. reading += read_adc();
  34. reading += read_adc();
  35. reading += read_adc();
  36. reading += read_adc();
  37. return reading / 4;
  38. }
  39.  
  40. ISR(TIM1_OVF_vect) {
  41. int reading = oversample();
  42. if (reading < setpoint) {
  43. OCR1A += (OCR1A == OCR1C ? 0 : 1);
  44. } else if (reading > setpoint) {
  45. OCR1A -= (OCR1A == 0 ? 0 : 1);
  46. }
  47. }
  48.  
  49. int main(void) {
  50. setup_adc();
  51. setup_pwm();
  52. sei();
  53. for (;;) {
  54. sleep_mode();
  55. }
  56. return 0;
  57. }
  58.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.c:1:20: fatal error: avr/io.h: No such file or directory
 #include <avr/io.h>
                    ^
compilation terminated.
stdout
Standard output is empty