Hallo mein Name ist Artur,
ich bin 23 Jahre alt und studiere Elektrotechnik mit Fachrichtung Energietechnik. Bis vor kurzem hatte ich mit µC sehr wenig bis gar nichts zu tun. Ich möchte aber gerne mal über den Tellerrand schauen und beschäftige mich intensiv mit dem Thema. Auf ein Board habe ich verzichtet und dafür mir nur einen USB zu ISP Adapter (mySmartUSBlight) gekauft. Aufbauen tue ich alles auf einem Steckbrett. Als Lern-µC habe ich ein AtMega8, welchen ich in AVR Studio 5 programmiere. Paar kleinere Testprogramme laufen schon. Jetzt ist es an der Zeit mich mit dem Thema ADC zu beschäftigen. Leider hab ich da gleich ein Problem, was ich noch nicht lösen konnte.
Folgender Aufbau:
An PC0 kann ich die Spannung mit Hilfe eines Pots zwischen 0V und 5V variieren. An den PC5-PC1 habe ich LED's angeschlossen um zu überprüfen, ob überhaupt etwas passiert. Wenn ich die Spannungsversorgung zuschalte, erhalte ich auch den Binärcode, welchen ich an den LED's sehen kann. Leider ändert sich nichts, wenn ich am Poti drehe um eine andere Spannung an PC0 anzulegen.
Hier mein Code, ich freue mich über jede Unterstützung.
ich bin 23 Jahre alt und studiere Elektrotechnik mit Fachrichtung Energietechnik. Bis vor kurzem hatte ich mit µC sehr wenig bis gar nichts zu tun. Ich möchte aber gerne mal über den Tellerrand schauen und beschäftige mich intensiv mit dem Thema. Auf ein Board habe ich verzichtet und dafür mir nur einen USB zu ISP Adapter (mySmartUSBlight) gekauft. Aufbauen tue ich alles auf einem Steckbrett. Als Lern-µC habe ich ein AtMega8, welchen ich in AVR Studio 5 programmiere. Paar kleinere Testprogramme laufen schon. Jetzt ist es an der Zeit mich mit dem Thema ADC zu beschäftigen. Leider hab ich da gleich ein Problem, was ich noch nicht lösen konnte.
Folgender Aufbau:
An PC0 kann ich die Spannung mit Hilfe eines Pots zwischen 0V und 5V variieren. An den PC5-PC1 habe ich LED's angeschlossen um zu überprüfen, ob überhaupt etwas passiert. Wenn ich die Spannungsversorgung zuschalte, erhalte ich auch den Binärcode, welchen ich an den LED's sehen kann. Leider ändert sich nichts, wenn ich am Poti drehe um eine andere Spannung an PC0 anzulegen.
Hier mein Code, ich freue mich über jede Unterstützung.
Code:
/
#include <avr/io.h>
#include <avr/interrupt.h>
void ADCL_auf_PORTC(char Pin_C,char Pin_ADCL);
int main(void)
{
ADMUX |= (0<<REFS1)|(1<<REFS0); //Interne Referenzspannung Vcc
ADMUX |= (0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0); // ADC Kanal 0 PC0
ADMUX |= (0<<ADLAR); // 8 Niederwertigsten Bits werden in ADCL abgelegt
ADCSRA |= (1<<ADEN); // ADC Enable
ADCSRA |= (0<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // ADC Prescaler = 8
ADCSRA |= (0<<ADIE); // ADC Interrupt Disable
ADCSRA |= (0<<ADFR); // ADC Free Running Disable
DDRC |= (1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(0<<0); // PC5 - PC1 = Ausgänge PC0 = Eingang
while(1)
{
ADCSRA |= (1<<ADSC); // Start der ADC
while(ADCSRA & (1<<ADSC));
ADCL_auf_PORTC(0,1); // PORTC.1 = ADCL.0
ADCL_auf_PORTC(1,2); // PORTC.2 = ADCL.1
ADCL_auf_PORTC(2,3); // PORTC.3 = ADCL.2
ADCL_auf_PORTC(3,4); // PORTC.4 = ADCL.3
ADCL_auf_PORTC(4,5); // PORTC.5 = ADCL.4
ADCSRA &= ~(1<<ADSC);
}
}
void ADCL_auf_PORTC(char Pin_ADCL,char Pin_C) // PORTC.PIN_C= ADCL.PIN_ADCL
{
if (((ADCL>>Pin_ADCL)&1)==1)
{
PORTC |= (1<<Pin_C);
}
else
{
PORTC &= ~(1<< Pin_C);
}
}