ADC minta használata - Működik? (tesztkörnyezetet keresek)

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
dhrawson
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2014. november 3. hétfő, 21:39

ADC minta használata - Működik? (tesztkörnyezetet keresek)

Hozzászólás Szerző: dhrawson »

Üdv mindenkinek, lenne egy kérdésem és magyarázatom mellé!
Annyira mélyen nem vagyok benne az AVR fejlesztésben, (PIC hátterem van és Java (1 éve), szóval még csak botorkálok).
Írtam egy programot de nem igazán tudom leellenőrizni, mennyire életképes (keresek virtuális környezetet :) ). De addig is úgy gondoltam hátha jó tanácsokkal tudtok ellátni, tapasztaltabb és gyakorlottabb fórum tagok :)!

Szóval a feladat, adott két ADC bemenet, mind a kettőn egy poti található. Egyik poti (legyen A) az esetek túlnyomó többségében fix értékkel dolgozik csak bizonyos időközönként vagy esemény hatására változik az értéke, másik poti (B) pedig folyamatosan vagy legalábbis sűrűbben változtatja az értékét, mint A. A feladat, ha B >= A akkor PORTB0 a Mosi csapja fel a ledet ha false akkor pedig ki! Egyszerű de nem vagyok 100% biztos magamban.

A kód amit alkottam:
Észrevétel, esetleg javaslat, hogy ez így nem fog működni, rövidítési lehetőségek? Előre is köszönöm szépen az időtöket!

Kód: Egész kijelölése

void InitADC()
{
	ADMUX=(1<<REFS0);// For Aref=AVcc;
	ADCSRA=(1<<ADEN)|(7<<ADPS0);
}

uint16_t ReadADC(uint8_t ch)
{
	ch=ch&0b00000111;
	ADMUX&=0b11100000;
	ADMUX|=ch;

	//Start Single conversion
	ADCSRA|=(1<<ADSC);

	//Wait for conversion to complete
	while(!(ADCSRA & (1<<ADIF)));

	ADCSRA|=(1<<ADIF);

	return(ADC);
}

int main()
{
	//Initialize ADC
	InitADC();

	while(1)
	{
		//On MOSI port 
		if(ReadADC(3) >= ReadADC(2)) PORTB |= (1 << PB0);
		//Off MOSI port
		if(ReadADC(3) < ReadADC(2)) PORTB &= ~ (1 << PB0);
	}
}
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: ADC minta használata - Működik? (tesztkörnyezetet kerese

Hozzászólás Szerző: csabeszq »

Mi gátol abban, hogy kézzel összeállítsad?

Két poti és egy LED nem tartozik a legkeményebb mikrokontroller kapcsolásokhoz.

Én biztos vagyok magamban, mégis gyakran 1-2 nap eltelik, mire beizzítok valamit úgy, hogy tényleg működjön.
Papíron nem lehet programozni, főleg mikrokontrollert nem.
Válasz küldése