ahoj do uC jsem nahral tento program a podle simulatoru by mel fungovat. problem ale je ze nejede. nejsem si jisty, jestli mam spravne zapojeny napajeni prevodniku. Do AVCC mam pres tlumivku napajeni +5V a zaroven vyvod mam spojen pres kondenzator do GND. AREF mam pres kondenzator na GND. Kondenzatory jsem pouzil 1uF elektrolyt. keramickej nemam. Muze byt problem v tom kondenzatoru? Nebo v programu. Dik moc za rady.
[code]#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#define LED_1_ON PORTD |= (1<<PD2) //LED 1 zapnout
#define LED_1_OFF PORTD &= ~(1<<PD2) //LED 1 vypnout
#define LED_2_ON PORTD |= (1<<PD3)
#define LED_2_OFF PORTD &= ~(1<<PD3)
#define SENSOR_REF sensor[0] // citlivost
#define SENSOR_L sensor[1] // levy senzor
#define SENSOR_C sensor[2] // stredni senzor
#define SENSOR_R sensor[3] // pravy senzor
#define NONE 0
#define READ_SENSORS read_sensors();
#define WAIT(x) _delay_ms(x)
volatile unsigned int sensor[4];
void read_sensors(void)
{
volatile int i;
for(i=0; i<4; i++)
{
ADMUX = i;
ADCSRA |= (1<< ADSC);
while(ADCSRA & 0x10)
;
ADCSRA |= (1<< ADIF);
sensor* = ADCW;
}
for(i=1; i < 4; i++)
{
if(SENSOR_REF > sensor*)
sensor* = NONE;
}
}
int main(void)
{
ADMUX = 0;
ADCSRA |= (1<<ADEN) |(1 << ADPS1) |(1 << ADPS0);
DDRB |= (1 << DDB1) |(1 << DDB2);
DDRD |= (1 << DDD2) |(1 << DDD3) |(1 << DDD6) |(1 << DDD7);
while(1)
{
read_sensors();
if(SENSOR_R > 0)
LED_2_ON;
else
LED_2_OFF;
if(SENSOR_L > 0)
LED_1_OFF;
else
LED_1_ON;
}
return 0;
}
[/code]
administrator: přejmenováno z “Atmega8 - AD prevodnik”***