ich hab hier nen STK600 mit nem ATxmega129a1 drinne
ich hab mal folgendes programm geschrieben um die LEDS ans PORTA einfach mal so als lauflicht im 1sekunden takt laufen zu lassen
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
ISR(TCC0_OVF_vect)
{
PORTA.OUT <<= 1;
if(PORTA.OUT == 0) PORTA.OUT = 1;
}
int main(void)
{
CCP = CCP_IOREG_gc;
OSC.CTRL |= OSC_RC32MEN_bm;
while(!OSC.STATUS & OSC_RC32MRDY_bm);
CCP = CCP_IOREG_gc;
CLK.CTRL = CLK_SCLKSEL_RC32M_gc;
sei();
PORTA.DIR = 0xff;
PORTA.OUT = 1;
TCC0.PER = 31250;
TCC0.CTRLA = (TCC0.CTRLA & ~TC0_CLKSEL_gm) | TC_CLKSEL_DIV1024_gc;
TCC0.CTRLB = (TCC0.CTRLB & ~TC0_WGMODE_gm) | TC_WGMODE_SS_gc;
TCC0.INTCTRLA = (TCC0.INTCTRLA & ~TC0_OVFINTLVL_gm) | TC_OVFINTLVL_LO_gc;
PMIC.CTRL |= PMIC_HILVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_LOLVLEN_bm;
while(1);
return 0;
}
theoretisch müsste ich auf internen 32MHz takt gestellt haben, den timer prescaler auf 1024 gestellt, als single slope konfiguriert und somit auf 1 überlauf pro sekunde gebracht haben ... das ergebnis sieht aber anders aus ... es sind 16 sekunden pro überlauf, er steht also noch immer bei 2Mhz intern ... auch das umstellen auf externen takt ist fehlgeschlagen und fuses für den takt gibt es nicht!
hat evtl. jemand schon erfahrung mit atxmega? ich find den zwerg ja mal endgeil ^^
auch wenn er ungleich komplizierter geworden ist ... liegt aber mehr daran, dass die registerbezeichnungen so vielfältig aber sinnheitlich verarmt sind
ich benutze mittlerweilen eclipse wegen der autovervollständigung um mich durch den registerjungel zu hangeln
Lesezeichen