PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Analog Eingänge mit AVR-GCC Programmmieren



Robo2004
27.05.2004, 13:58
Hallo zusammen,
ich hab ein problem mit der Programmierung der Analog Eingange.
Meine Hardware:
- µC: ATMega8-16PI
- Taktfrequenz: 3,6864MHz
_ an Pin PC0 ein 25K Poti (Verbunden mit Masse und Ub+=5V)
- Pin PC6 mit Reset
- Pin PB6 und PB7 mit Quarz
- Pin PD0 mit TxD (Max232)
- Pin PD1 mit RxD
- Compiler AVR-GCC


Das Folgende Programm soll die Analoge Spannung von PC0 Messen (10Bit auflösung)
und die Daten in die Variablen c1 und c2 speichern, welche dann über das UART
gesendet werden.




#include <avr/io.h>
#include <avr/iom8.h>

#include "TypeDef.h"
#include "UARTInit.h"
#include "UARTTransmit.h"


#define fOSC 3686400 // 3686Khz
#define UART_BAUD_RATE 9600 // 9600 baud


int main(void)
{
int x = 0;
char c1, c2;

// USART initiieren
USART_INIT(fOSC, UART_BAUD_RATE);

ADCSRA = _BV(ADEN) | _BV(ADPS2);

for (;;)
{
// Select pin ADC0 using MUX
ADMUX = 0;

//Start conversion
ADCSR |= _BV(ADSC);
ADCSR |= _BV(ADEN); // enable ADC


// wait until converstion completed
while (ADCSR & _BV(ADSC) )
{
asm volatile ("nop");
}

c1 = ADCL;
c2 = ADCH;

// disable the ADC
ADCSR &= ~_BV(ADEN);

// Übertrage Low Byte über UART
USART_Transmit(c1);
// Übertrage High Byte über UART
USART_Transmit(c2);

// Pause
for(x=0; x<0xFFFF; x++){}
}

return 0;
}


Jetzt zu meinem Problem die Daten von c1 und c2 bleiben Konstant egal vieviel man am Poti dreht.
Weiss nicht ob es wichtig ist aber c1=03h und c2=FFh
Kann mir jemand ein Tip geben woran das liegt?

27.05.2004, 14:50
Hallo

Hast du denn auch AVCC, AREF und AGND beschaltet ???

MFG

Robo2004
27.05.2004, 15:37
Nein sind nicht beschaltet.
In diesem Beispiel geht es mir auch noch nicht um genaue Präzision.
Deshalb müssen diese doch auch nicht beschaltet werden, oder?

Kjion
27.05.2004, 15:41
Doch natürlich. Die sollten sogar immer beschaltet werden, egal ob man die ADWandler nutzt oder nicht!
Wenn du die nicht angeschloßen hast kann da auch gar nix funktionieren!
( siehe http://www.kreatives-chaos.com/index.php?seite=avrgrund )

Das " #include <avr/iom8.h> " brauchst du übrigens gar nicht!

MfG Kjion

Robo2004
27.05.2004, 16:23
Danke euch,
hat an der Fehlenden Beschaltung gelegen jetzt funktionierts.