bleachhuns

AVR

Jun 8th, 2013
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.81 KB | None | 0 0
  1. #include <util/delay.h> // idozito, keslelteto rutinokat tart. fajl
  2. #include <avr/io.h> //AVR konstansokat, beallitasokat tart. fájl
  3.  
  4.      #define XBOX1()    PORTB |=  (1<<PB0)
  5.      #define XBOX1ki()    PORTB &= ~(1<<PB0)
  6.      
  7. volatile int LDRbal = 0;
  8. unsigned char ingerkuszob = 1;  // minel nagyobb ez a szam, annal erzeketlenebb lesz a robot
  9.  
  10. void Konfig8bitADC()        // ADC konfiguralas (beallitas)
  11. {
  12.     ADMUX |= (1<<REFS0)|(1<<ADLAR);    // Vcc mint referencia, balra rendezett ADC eredmeny
  13.     ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);   //ADC engedelyezese, ADC eloosztas = 8 (125 KHz)
  14. }
  15.  
  16. unsigned char Beolvas8bitADC(unsigned char csatorna)
  17. {
  18.     ADMUX = (ADMUX & 0b11110000) | csatorna;
  19.     ADCSRA |= (1<<ADSC);    // ADC konverzio elinditasa
  20.     while (ADCSRA & (1<<ADSC));        // varas az atalakitasra
  21.     ADCSRA |= (1<<ADSC);          // konverzió elindítás
  22.     while (ADCSRA & (1<<ADSC));        // varas az atalakitasra
  23.     return (ADCH);        // ADC ertek visszaadasa (csak a felso 8 bit (ADCH), az also 2 zajos bit elhagyasa)
  24. }
  25.  
  26. int main (void)
  27. {
  28.  
  29.      // PORTB |= (1<<PB2);    // PD2-es lab pull-up bekapcs (nyomogomb)
  30.     //DDRB &= ~(1<<PB0);    // PC0-as lab bemenet (jobb LDR)
  31.     DDRB &= ~(1<<PB4);     // PB4-es lab bemenet (bal LDR)
  32.     //PORTB = 0x00;    // PORTB osszes laban a felhuzoellenallasok kikapcsolva
  33.     DDRB = (1<<PINB0); //kimenet a PB0 is! //kimenet a PB0 is!
  34.     Konfig8bitADC();    // ADC beallitas lefuttatasa
  35.    
  36.     //while (PINB & (1<<PB2)); /* várakozó cilkus amíg PD2 erteke nem 0 (amig a gomb nincs lenyomva) */
  37.    
  38.     while (1)
  39.     {
  40.        
  41.         //LDRjobb = Beolvas8bitADC(0);
  42.         LDRbal = Beolvas8bitADC(0);
  43.        
  44.         if (LDRbal > ingerkuszob)
  45.         {
  46.                  XBOX1ki();
  47.  
  48.         }
  49.         else
  50.         {
  51.               XBOX1();
  52.         }
  53.         _delay_ms(50);     // egy kis kesleltetes a gyors oszcillaciok megszuntetese erdekeben
  54.     }
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment