Технический форум по робототехнике.
EdGull » 25 ноя 2010, 18:03
сегодня на макетке васиком запустил ХМегу
понюхал кнопку, поморгал светодиодом
прошивал AVR ISP mkII из под AVR Studio
- Код: Выделить всё • Развернуть
$regfile = "xm128a1def.dat"
$crystal = 2000000
Config Porta.5 = Output
Config Porta.4 = Input
Do
If Pina.4 = 1 Then
Porta.5 = 1 : Waitms 900
Porta.5 = 0 : Waitms 100
Else
Porta.5 = 0
End If
Loop
SkyStorm » 25 ноя 2010, 18:29
А что частота какая то странная?
EdGull » 25 ноя 2010, 18:33
внутренний RC по умолчанию с завода
на кварец еще не переключался
avr123.nm.ru » 25 ноя 2010, 21:50
Отлично.
galex1981 » 26 ноя 2010, 13:21
Замечательно! От меги обычной прога не отличается...
EdGull » 26 ноя 2010, 13:40
сегодня буду запускать AVR-DOS на microSD и естественно uart
EdGull » 26 ноя 2010, 18:34
Запустил uart
Без подключений библиотек не хотел компилировать
- Код: Выделить всё • Развернуть
$regfile = "xm128a1def.dat"
$crystal = 2000000
$hwstack = 40 ' default use 32 for the hardware stack
$swstack = 40 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
$LIB "XMega.LIB", "mcsbyte.lbx "' , "MCS.lib"
CONFIG COM5 = 2400 , Mode=0 , Parity=None, Stopbits=1, Databits=8
Open "Com5:" For Binary As #1
Config Porta.5 = Output
Config Porta.4 = Input
Dim A as Byte
Print #1, "Start"
Do
Print #1 , A
Incr A
wait 1
If Pina.4 = 1 Then
Porta.5 = 1 : Waitms 900
Porta.5 = 0 : Waitms 100
Else
Porta.5 = 0
End If
Loop
Как в AVR Studio с помощью AVR ISP mkII переключить ХМегу на внешний кварец?
Doniak » 27 ноя 2010, 19:35
Как в AVR Studio с помощью AVR ISP mkII переключить ХМегу на внешний кварец?
Это делается программно. В ДШ написано.
если как то поможет так выглядит настройка на 32МГц внутренних в CVAVR
- Код: Выделить всё • Развернуть
void system_clocks_init(void){ // настройка тактовой частоты МК 32МГц
unsigned char n,s;
#pragma optsize-
s=SREG;
#asm("cli")
OSC.CTRL|=2;
DFLLRC32M.CTRL&= ~DFLL_ENABLE_bm;
n=(CLK.CTRL & (~CLK_SCLKSEL_gm)) | CLK_SCLKSEL_RC32M_gc;
CCP=CCP_IOREG_gc;
CLK.CTRL=n;
OSC.CTRL&= ~(OSC_RC2MEN_bm | OSC_RC32KEN_bm | OSC_XOSCEN_bm | OSC_PLLEN_bm);
PORTCFG.CLKEVOUT=(PORTCFG.CLKEVOUT & (~PORTCFG_CLKOUT_gm)) | PORTCFG_CLKOUT_OFF_gc;
SREG=s;
#pragma optsize+
}
EdGull » 27 ноя 2010, 20:10
это для какого программатора в CVAVR?
Doniak » 27 ноя 2010, 20:13
EdGull писал(а):это для какого программатора в CVAVR?
компилятор CVAVR
Прошивал AVRISPmkII в AVRstudio.
в XMege нету фьюз, частота выставляется программно.
Duhas » 27 ноя 2010, 20:15
а причем тут программный выбор такта и нету Fuse ?
EdGull » 27 ноя 2010, 20:16
выложи плиз ELF файл который по этим настройкам сгенерировал CVAVR
Duhas » 27 ноя 2010, 20:18
Эд, у тебя в васике АСМ мона вставлять?
EdGull » 27 ноя 2010, 20:20
легко!
Duhas » 27 ноя 2010, 20:29
я себе делал для кварца 14.74...
- Код: Выделить всё • Развернуть
CLOCK_init:
ldi tmp1, 0b11000011
sts OSC_XOSCCTRL, tmp1
ldi tmp1, 1<<OSC_XOSCEN_bp
sts OSC_CTRL, tmp1
wait_for_cystal_stable:
lds tmp1, OSC_STATUS
sbrs tmp1, OSC_XOSCRDY_bp
rjmp wait_for_cystal_stable
ldi tmp1, 0b11001000
sts OSC_PLLCTRL, tmp1
lds tmp1, OSC_CTRL
ori tmp1, 1<<OSC_PLLEN_bp
sts OSC_CTRL, tmp1
wait_for_PLL_stable:
lds tmp1, OSC_STATUS
sbrs tmp1, OSC_PLLRDY_bp
rjmp wait_for_PLL_stable
ldi tmp1, CCP_IOREG_gc
out CPU_CCP, tmp1
ldi tmp1, 0b00000011
sts CLK_PSCTRL, tmp1
ldi tmp1, CCP_IOREG_gc
out CPU_CCP, tmp1
ldi tmp1, 0b00000100
sts CLK_CTRL, tmp1
ret
внешний кварц, PLL х4 или х8, потом деление.. кароче на АЛУ у тебя будет 32 при квафрце 16..
могешь поковыряться в ДШ и изменить соответствующие значение загружаемые в регистры...
ну и tmp1 заменить на какой нить регистр... + наверна его еще и в стеке сохранить нада бы )