Stránka 1 z 1

Atmega32 AD převodník

Napsal: 29 bře 2012, 01:38
od pepabruna
Zdravím, začínám s programováním na kitu evb4.3 a chtěl bych vytvořit takovýto program.

Na vstup převodníku např.PINA.0 budu přivádět napětí a výsledek chci zobrazovat na diodách připojených k portu B. Dejme tomu, že chci zobrazit pouze registr ADCL(mám pouze 8diod takže výsledek ADCW nelze celý zobrazit). Začal jsem takto:

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
DDRB=0xFF;
ADMUX=0;
ADCSRA=0x40;
PORTB=ADCL;

}

A ještě bych prosil o vysvětlení jak fungují tyto příkazy




#include <avr/io.h>


int main (void) //hlavní funkce
{

DDRB = 0xff; //(0xff = 0b11111111) -> Piny 0 - 7 portu "B" budou výstupní
DDRD = 0; //Port "D" bude vstupní (tlačítko je připojeno k portu "D")

while (1)
{


if(PIND & 0b00000001)

{
PORTB = 0b11110000; //Rozsviť vybrané ledky
}
else
{
PORTB = 0; //zhasni všechny ledky
}

}

}

celkem všemu rozumím až na toto: if(PIND & 0b00000001)
nerozumím tomu jak funguje tento příkaz. Proč nefunguje klasické porovnání if(PIND == 0b00000001)??
Tlačítka jsou připojena přes zem přímo k pinům uPC. Děkuji za odpovědi.

Napsal: 29 bře 2012, 07:38
od Habesan
pepabruna píše:if(PIND & 0b00000001)

Střelím od boku: ampersand plní funkci AND pin po pinu a celkový výraz je vyhodnocení zda nejméně významný bit se rovná jedné.

Záleží jestli PIND je deklarován jako jeden jednobitový pin, nebo jako celý osmibitový port.

Napsal: 29 bře 2012, 08:51
od petus
if(!(PIND&(1<<PD0)))
{
}


nebylo by tohle lepší?

Napsal: 29 bře 2012, 09:18
od Andrea
pepabruna píše:int main(void)
{
DDRB=0xFF;
ADMUX=0;
ADCSRA=0x40;
PORTB=ADCL;
}

Takhle ti to fungovat nebude. A/D převodník je potřeba zapnout, správně nakonfigurovat (ty máš zvenku připojenou referenci?), spustit převod, počkat na konec převodu a pak teprve lze přečíst výsledek.
A co má ten program dělat, až ten výsledek přečte?

Napsal: 31 bře 2012, 12:19
od Atlan
Mensia reklama na webe svetelktro robia nieco sAD prevodnikom tak sa inspiruj... http://svetelektro.com/clanky/programuj ... t-472.html