logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Przetwornik A/C, atmega8, C

szefopiotr 04 Gru 2008 02:29 1602 2
REKLAMA
  • #1 5815665
    szefopiotr
    Poziom 9  
    Witam, napisałem następujaćy programik do obsługi przetwornika A/C:
    #include <avr/io.h>				
    #include <avr/interrupt.h> 
    #include <avr/signal.h>
    #include "moje.h"
    #include <avr/delay.h>
    
    volatile uint8_t value; 
    volatile uint8_t value2; 
    unsigned char bufor[5]; 
    unsigned int a; 
    
    SIGNAL(SIG_ADC)
    { 	
    	LCD_clr();
    	LCD_xy(0,0);
         write_text("Wartosc:");
    	
    	
    	value = ADCH;
    	value2 = ADCL;
    
    
    	 
    	 sprintf(bufor,"%d",value); 
    	 LCD_xy(10,0);
         write_text(bufor);
    	 _delay_ms(2000);
    }
    
    void pomiar(void)
    {   
    	ADCSR=0xCD;
    	
    }
    
    void main(void)
    {	
    
    	lcd_init();   
    
    	DDRB=0x00;
    	PORTB=0xFF;
    	
    	ADCSR = 0x8D;
    	ADMUX = 0; 
    	
    	sei();
    
    	while(1)                
    			
    	{    LCD_clr(); 
    		write_text("pomiar ");
    		loop_until_bit_is_clear(PINB,0);
    	
    		_delay_ms(200);
    				pomiar();
    				
        
    	
    	}
    }
    
    problem w tym że obojętnie jaką wartoś napięcia ustawie przetwornik zawsze wystawia mi wartosć zero.
    Pin Aref jest podpiety pod VCC przez rezystor 1k,zaislanie i AGND jest ok. Podłączenie wydaje mi się że jest raczej ok... Czy błąd tkwi w programie (przetwornik badam napieciem 5V podłączonym przez potencjometr 10k)?

    Prosze o pomoc, pozdrawiam...
  • REKLAMA
  • Pomocny post
    #2 5815765
    chudybyk
    Poziom 31  
    Czy w ogóle wykonuje się twoje przerwanie?
    czy zamiast "ADCSR=0xCD;" nie powinno być "ADCSRA=0xCD;" ?
    "value" zadeklaruj sobie jaki uint16_t i odczytuj jednym poleceniem "value = ADC;", jest prościej.
  • #3 5816612
    szefopiotr
    Poziom 9  
    Ustawienie zmiennej jako uint16_t i odczytanie ADC pomogło . Dzięki za pomoc!!!

    Proszę zakładać tematy, we właściwych subforach - w przeciwnym wypadku, będą przenoszone do kosza.
    Tym razem, przeniosłem.
    [zumek]
REKLAMA