Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:lab:lab4-2021 [2021/04/05 11:27]
jan.vaduva [4. Exercitii]
pm:lab:lab4-2021 [2021/04/05 12:15] (current)
alexandru.predescu [4. Exercitii]
Line 132: Line 132:
 {{ pm:​lab:​PB2.png?​500 | PB2 }} {{ pm:​lab:​PB2.png?​500 | PB2 }}
 <​hidden>​ <​hidden>​
-**Soluția** se găsește pe [https://​www.tinkercad.com/​things/​b2Yra0sAu2J-brilliant-lappi-habbi/​editel?​sharecode=LfeWdU6ojyT1VzyOCdjwU3ieYR6u4bV2-lEko5iVrTc|Tinkercad Interrupt]]+**Soluția** se găsește pe [[https://​www.tinkercad.com/​things/​b2Yra0sAu2J-brilliant-lappi-habbi/​editel?​sharecode=LfeWdU6ojyT1VzyOCdjwU3ieYR6u4bV2-lEko5iVrTc|Tinkercad Interrupt]] 
 + 
 +<​code>​ 
 +void timer_setup(){ 
 +  // set timer A for 10ms 
 +  TCCR0A = 0; 
 +  TCCR0B = 0; 
 +  TCNT0  = 0; 
 + 
 +  OCR0A = 156;            // compare match -> 10ms 
 +  TCCR0A |= (1 << WGM01); ​  // CTC mode 
 +  TCCR0B |= ((1 << CS02) | (1 << CS00)); ​   // 1024 prescaler  
 +  TIMSK0 |= (1 << OCIE0A); 
 + 
 +  // Enable timer as source 
 +  ADCSRB |= ((1 << ADTS0) | (1 << ADTS1)); 
 +
 + 
 +void button_setup(){ 
 +  // Select INT0 as trigger source 
 +  ADCSRB = 0; 
 +  ADCSRB |= (1 << ADTS1); 
 + 
 +  // Enable INT0 
 +  EICRA |= (1 << ISC00); 
 +  EIMSK |= (1 << INT0); 
 +
 + 
 + 
 +void setup() 
 +
 +     
 +  // disable interrupts 
 +  cli(); 
 +   
 +  ADMUX = 0; 
 +  /* AVCC with external capacitor at AREF pin */ 
 +  ADMUX |= (1 << REFS0); 
 + 
 +  ADCSRA = 0; 
 +  /* set prescaler at 128 */ 
 +  ADCSRA |= (7 << ADPS0); 
 + 
 +  // Enable auto-trigger 
 +  ADCSRA |= (1 << ADATE); 
 +  // Enable Intrerupt 
 +  ADCSRA |= (1 << ADIE); 
 + 
 +  // Set button as trigger source 
 +  button_setup();​ 
 + 
 +  // Select Timer as trigger source 
 +  //​timer_setup();​ 
 +   
 +  /* enable ADC */ 
 +  ADCSRA |= (1 << ADEN); 
 +  
 +  // Enable interrupts 
 +  sei(); 
 +  Serial.begin(9600);​ 
 +
 + 
 +ISR(ADC_vect){ 
 +  Serial.println(ADC);​ 
 +
 + 
 +ISR(INT0_vect) 
 +
 +  Serial.println("​Button Pressed!"​);​ 
 +
 + 
 +ISR(TIMER0_COMPA_vect){ 
 +  // Even if this does nothing. It has to be here 
 +  // Else the code just doesn'​t work. Still don't know why. 
 +  // [AP] Deoarece ai activat intreruperea de compare match: TIMSK0 |= (1 << OCIE0A); 
 +  // [AP] Astfel, daca nu e definit ISR-ul se va reseta uC 
 +
 + 
 +void loop() 
 +
 +  delay(50);​ 
 +
 +</​code>​
 </​hidden>​ </​hidden>​
  
Line 140: Line 222:
 <​hidden>​ <​hidden>​
 **Soluția** se găsește pe [[https://​www.tinkercad.com/​things/​grYhoajb3sd-exquisite-hango-waasa/​editel?​sharecode=gNPGmOuI6oZBx3bp-q-S7NlxWoz_wRwWZm9LJK4DHbI|Tinkercad Potentiometer]] **Soluția** se găsește pe [[https://​www.tinkercad.com/​things/​grYhoajb3sd-exquisite-hango-waasa/​editel?​sharecode=gNPGmOuI6oZBx3bp-q-S7NlxWoz_wRwWZm9LJK4DHbI|Tinkercad Potentiometer]]
 +
 +<​code>​
 +void timer_setup(){
 +  // set timer A for 10ms
 +  TCCR0A = 0;
 +  TCCR0B = 0;
 +  TCNT0  = 0;
 +
 +  OCR0A = 156; // compare match -> 10ms
 +  TCCR0A |= (1 << WGM01); ​ // CTC mode
 +  TCCR0B |= ((1 << CS02) | (1 << CS00)); // 1024 prescaler ​
 +  TIMSK0 |= (1 << OCIE0A);
 +
 +  // Enable timer as source
 +  ADCSRB |= ((1 << ADTS0) | (1 << ADTS1));
 +}
 +
 +void setup()
 +{
 +  pinMode(2, INPUT_PULLUP);​
 +    ​
 +  // disable interrupts
 +  cli();
 +  ​
 +  ADMUX = 0;
 +  /* AVCC with external capacitor at AREF pin */
 +  ADMUX |= (1 << REFS0);
 +
 +  ADCSRA = 0;
 +  /* set prescaler at 128 */
 +  ADCSRA |= (7 << ADPS0);
 +
 +  // Enable auto-trigger
 +  ADCSRA |= (1 << ADATE);
 +  // Enable Intrerupt
 +  ADCSRA |= (1 << ADIE);
 +  ​
 +  // Select Timer as trigger source
 +  timer_setup();​
 +  ​
 +  /* enable ADC */
 +  ADCSRA |= (1 << ADEN);
 + 
 +  // Enable interrupts
 +  sei();
 +  Serial.begin(9600);​
 +}
 +
 +ISR(ADC_vect){
 +  Serial.println(ADC);​
 +}
 +
 +ISR(TIMER0_COMPA_vect){
 +  // Even if this does nothing. It has to be here
 +  // Else the code just doesn'​t work. Still don't know why.
 +  // [AP] Deoarece ai activat intreruperea de compare match: TIMSK0 |= (1 << OCIE0A);
 +  // [AP] Astfel, daca nu e definit ISR-ul se va reseta uC
 +}
 +
 +void loop()
 +{
 +  delay(50);
 +}
 +</​code>​
 </​hidden>​ </​hidden>​
 ===== 5. Resurse ===== ===== 5. Resurse =====
pm/lab/lab4-2021.1617611247.txt.gz · Last modified: 2021/04/05 11:27 by jan.vaduva
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0