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.
Code:
#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?
Lesezeichen