Jens81
11.09.2006, 16:27
Hallo,
ich bräuchte mal ein wenig hilfe.
Ich möchte an PORTA PIN 0 den Enfernungssensor GP2D12 anschließen.
Wenn die Spannung größer wie 1V wird sollen die LED's 1..4 angehen.
Habe auch ein Quellcode, verstehe aber nicht warum es nicht funktioniert.
Mit den Tastern hat das geklappt.
#include <avr/io.h>
#define SYSCLK 16000000
void init(void);
unsigned char get_adc(void);
// Hauptprogramm
int main(void)
{
unsigned char w;
init();
while(1)
{
/* Ergebnis auslesen und anzeigen */
w = get_adc();
if (w > 40)
PORTC = 0x70;
else
PORTC = 0x7f;
}
return 0;
}
/*
* Initialisierung des µC
*/
void init(void)
{
DDRA = 0x00; // Port als Eingang deklarieren
PORTA = 0xff;
DDRB = 0xff; // Port als Ausgang deklarieren
PORTB = 0x00;
DDRC = 0xff; // Port als Ausgang deklarieren
PORTC = 0x00;
DDRD = 0xff; // Port als Ausgang deklarieren
PORTD = 0x00;
// Analog zu Digital Wandler aktivieren ( Prescaler = 128, interne +5V Referenz, "8-Bit" Ergebnis )
ADMUX = (1<<REFS0)|(1<<ADLAR);
ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
}
unsigned char get_adc(void)
{
unsigned char i;
/* ADC0 mit Vcc als Referenzspannung */
ADMUX = (1<<REFS0)|(1<<ADLAR)|0x0e;
/* AD Wandler starten */
ADCSRA |= (1<<ADSC);
/* Warten bis das Ergebniss zur Verfügung steht */
while(!(ADCSRA & (1<<ADIF)));
/* Ergebnis auslesen und anzeigen */
i = ADCH;
return i;
}
Bitte helft mir.
Im vorraus schon mal danke
LG Jens
ich bräuchte mal ein wenig hilfe.
Ich möchte an PORTA PIN 0 den Enfernungssensor GP2D12 anschließen.
Wenn die Spannung größer wie 1V wird sollen die LED's 1..4 angehen.
Habe auch ein Quellcode, verstehe aber nicht warum es nicht funktioniert.
Mit den Tastern hat das geklappt.
#include <avr/io.h>
#define SYSCLK 16000000
void init(void);
unsigned char get_adc(void);
// Hauptprogramm
int main(void)
{
unsigned char w;
init();
while(1)
{
/* Ergebnis auslesen und anzeigen */
w = get_adc();
if (w > 40)
PORTC = 0x70;
else
PORTC = 0x7f;
}
return 0;
}
/*
* Initialisierung des µC
*/
void init(void)
{
DDRA = 0x00; // Port als Eingang deklarieren
PORTA = 0xff;
DDRB = 0xff; // Port als Ausgang deklarieren
PORTB = 0x00;
DDRC = 0xff; // Port als Ausgang deklarieren
PORTC = 0x00;
DDRD = 0xff; // Port als Ausgang deklarieren
PORTD = 0x00;
// Analog zu Digital Wandler aktivieren ( Prescaler = 128, interne +5V Referenz, "8-Bit" Ergebnis )
ADMUX = (1<<REFS0)|(1<<ADLAR);
ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
}
unsigned char get_adc(void)
{
unsigned char i;
/* ADC0 mit Vcc als Referenzspannung */
ADMUX = (1<<REFS0)|(1<<ADLAR)|0x0e;
/* AD Wandler starten */
ADCSRA |= (1<<ADSC);
/* Warten bis das Ergebniss zur Verfügung steht */
while(!(ADCSRA & (1<<ADIF)));
/* Ergebnis auslesen und anzeigen */
i = ADCH;
return i;
}
Bitte helft mir.
Im vorraus schon mal danke
LG Jens