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

[ATMEGA8][ASM] Problen z ADC

KRZYSIEK_P_K 12 Sie 2008 19:25 1752 7
REKLAMA
  • #1 5432997
    KRZYSIEK_P_K
    Poziom 11  
    Witam mam problem którego sam nie potrafię rozwiązać:
    gdy przetwornik a/c w procku jest skonfigurowany do pojedynczych odczytów, po dokonaniu pomiaru wskazywana wartość napięcia jest poprawna
    problem zaczyna się gdy chcę powtórzyć tę czynność pomimo zmian napięcia na wejściu przetwornika wartość przechowywana w rejestrach
    wynikowych jest taka jak przy pierwszym pomiarze
    próbowałem na wiele sposobów np. ustawianie wszystkich rejestrów systemowych do wartości początkowych po użyciu ADC ale to nic nie zmieniało, jedynym sposobem jaki skutkuje jest reset procesora po każdym pomiarze.
  • REKLAMA
  • REKLAMA
  • #3 5433462
    KRZYSIEK_P_K
    Poziom 11  
    oto prosty programik do obsługi ADC, wg mnie powinien wyświetlać na diodach podłączonych pod port B wartość nap. na wejściu A/C, a wyświetla tylko pierwszą zmierzoną wartość

    
            .INCLUDE "m8def.inc"
    	.DEF	AKU = R16
    	.DEF	ACC = R17
    
    
    INIT:
    	LDI		AKU,LOW(RAMEND)
    	OUT 	SPL,AKU
    	LDI		AKU,HIGH(RAMEND)
    	OUT		SPH,AKU
    	LDI		AKU,$FF
    	OUT		DDRD,AKU
    	OUT		DDRB,AKU
    	OUT		PORTB,AKU
    	SBI		PORTD,7			// wylaczenie diody kontrolnej
    	RJMP	START
    
    ///////////////////////////////
    WAIT:
    	LDI		ACC,$00
    LOOP_1:
    	INC		ACC
    	BRNE	LOOP_1
    LOOP_2:
    	INC		AKU
    	BRNE	LOOP_1
    	RET
    ///////////////////////////////
    
    START:
    	CBI		PORTD,7			//wlaczanie diody kontrolnej
    	SBI		ADCSRA,ADEN  	//wlaczenie adc
    	SBI		ADCSRA,ADSC		//start konwersji
    SPR:
    	SBIC    6,ADCSRA		//sprawdzenie czy zakonczyla sie konwersja
    	RJMP	SPR
    	IN		AKU,ADCL
    	OUT		PORTB,AKU		//wyswietlenie mlodszego bajtu danych na diodach
    
    	SBI		PORTD,7			//wylaczenie diody kontrolnej
    	RCALL	WAIT
    	RJMP	START
    
  • REKLAMA
  • #4 5433488
    ZbeeGin
    Poziom 39  
    A do którego wejścia ADC się kolega podpina? Gdzie w programie instrukcja wyboru kanału przetwornika (ADMUX)?
  • #5 5433507
    KRZYSIEK_P_K
    Poziom 11  
    Wybór kanału jest domyślny (ADCO) i podpięty jestem pod dobry pin świadcz y o tym pierwszy poprawny pomiar.
  • #6 5446776
    candle
    Spec od monitorów
    SBIC 6.ADCSRA??
    a nie odwotnie?
    co prawda adcsra=0x06, adsc= bit 6, no ale... kiedys cie to zgubi
    tak czy owak powinno tam byc sbic adcsra,adsc
    skasuj jeszcze flage adif
  • REKLAMA
  • #7 5447012
    ZlyDotyk
    Poziom 19  
    Rejestr ADC nie zostanie odświeżony dopóki nie odczytasz ADCH.
  • #8 5448551
    KRZYSIEK_P_K
    Poziom 11  
    Racja powinno być:
    SBIC ADCSRA,ADSC
    ale to nie wpływa na zmianę działania programu. Dopiero odczytanie rejestru ADCH pomogło, teraz układ działa tak jak powinien.
    Dzięki za pomoc!
REKLAMA