Robo2004
27.05.2004, 14: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?
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?