AVR Studio meckert bei diesem Programm rum:
Code:
/*
* XMega.c
*
* Timer C0 wird ist auf 1 Sekunde eingestellt.
*
* Created: 22.03.2012 19:42:07
* Author: Daniel
*/
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
void Clock_init(void);
void PLL_init(void);
void Int_init(void);
void Port_init(void);
void UART_init(void);
void DAC_init(void);
void ADCA_init(void);
void TimerC0_init(void);
void Send_UART(void);
void ADC_Cal(void);
void Start_Conversion(void);
int main(void)
{
// Variablen
volatile int ADC_Value = 0x00;
volatile int Calibration_Value_ADC; // Buffer für ADC Kalibrationswert
Clock_init(); // Konfiguriert die Clock
PLL_init(); // PLL konfigurieren
Int_init(); // Interrupts konfigurieren
DAC_init(); // DAC konfigurieren
ADCA_init(); // ADC konfigurieren
ADC_Cal(); // ADC kalibrieren
TimerC0_init(); // Timer C0 konfigurieren
Port_init(); // Ports konfigurieren
UART_init(); // UART konfigurieren
while(1)
{
}
}
void DAC_init()
{
DACA.CTRLC = ~(DAC_REFSEL_gm | DAC_LEFTADJ_bm); // Interne 1V Referenz, right adjust (12 Bit);
DACA.CTRLA = (DAC_CH0EN_bm | DAC_ENABLE_bm); // 1CLK Takt, Refresh 16CLKs
// DACA.TIMCTRL = 0x00;
// DAC aktivieren
}
void ADCA_init()
{
ADCA.CTRLA = 0x01; // ADC Enable
ADCA.CTRLB = 0x04; // Unsigned Mode / 8 Bit
ADCA.REFCTRL = 0x00; // Interne 1.0V Referenz
}
void Clock_init(void)
{
OSC.CTRL |= OSC_RC32MEN_bm; // Oszillator auf 32Mhz stellen
while(!(OSC.STATUS & OSC_RC32MRDY_bm)); // Warten bis der Oszillator bereit ist
CCP = CCP_IOREG_gc;
CLK.CTRL = 0x01; // Clock auf 32MHz stellen
}
void PLL_init(void)
{
}
void Int_init(void)
{
PMIC.CTRL |= PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm; // Interrupts (Highlevel,Mediumlevel und Lowlevel freigeben)
sei(); // Globale Interruptfreigabe
}
void Port_init(void)
{
PORTB.DIR = 0xFF; // Kompletten PortB auf Ausgang stellen
}
void TimerC0_init(void)
{
TCC0.CTRLA = TC_CLKSEL_DIV1024_gc; // Vorteiler einstellen
TCC0.PER = 31249; // Timer-Topwert einstellen
TCC0.CTRLB = 0x00; // Timer in Normalmodus stellen
TCC0.INTCTRLA = 0x03; // Interrupt konfigurieren
}
void UART_init(void)
{
}
void Send_UART(void)
{
}
void Start_Conversion(void)
{
ADCA.CH0.CTRL = 0x81; // Messung starten und Input-Mode auf Singleended stellen
ADC_Value = ADCA_CH0RES;
}
void ADCA_Cal(void)
{
Calibration_Value_ADC = 0x00;
ADCA_CAL = Calibration_Value_ADC;
}
ISR(TCC0_OVF_vect)
{
PORTB.OUT ^= 0x01;
}
Als Fehler kommt das hier:
Bild hier
Dabei habe ich die Variablen doch deklariert....
Hat jemand ne Lösung für das Problem?
Danke schonmal!
Lesezeichen