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 133: Line 133:
 <​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.1617611278.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