Vizitator DanD Postat Noiembrie 28, 2012 Partajează Postat Noiembrie 28, 2012 Am nevoie de ajutor cu urmatorul cod. Vreau sa se schimbe pe display-ul 7 segmente afisajul(ales aleator) in functie de voltajul aplicat pe PA1. Problema e ca se schimba doar prima oara, apoi ramane "intepenit" Multumesc! #define F_CPU 1000000UL#include <avr/io.h>#include <avr/interrupt.h>int main (void){ DDRB=0xFF; //output DDRC=0xFF; //configurare ADC ADCSRA |= 1 << ADEN; //turn on ADC ADCSRA |= 1 << ADIE; //enable interupts ADMUX |= 1 << ADLAR; //8 bit ADCH pag217 ADMUX |= 1 << MUX1; //citeste de pe PA1 ADMUX |= 1 << REFS0; //voltajul de referinta 5v ADCSRA |= 1 << ADPS2; //prescaler ADC (50-200kHz) 1M/50k=20 ; 1M/200k = 5 am luat division factor=16 sei(); ADCSRA |= 1 << ADSC; //(AD start conversion) while (1);}ISR(ADC_vect){ //0v= 0, 5v=255 if (ADCH > 0x7D) //155 { PORTB = 0xEE; } else { PORTB = 0b00110000;} ADCSRA |= 1 << ADSC; //start next converion} Link spre comentariu
XAN77 Postat Noiembrie 30, 2012 Partajează Postat Noiembrie 30, 2012 poate in isr trebuie sa stergi vreun flag si nu o faciL.E. citez dintr-un datasheet :Beware that if doing a Read-Modify-Write on ADCSRA, a pending interrupt can be dis-abled. This also applies if the SBI and CBI instructions are used Link spre comentariu
criss Postat Decembrie 1, 2012 Partajează Postat Decembrie 1, 2012 ce uC folosesti? Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum