roboforum.ru

Технический форум по робототехнике.

XMega - Bascom AVR Basic

XMega - Bascom AVR Basic

EdGull » 25 ноя 2010, 18:03

сегодня на макетке васиком запустил ХМегу :Yahoo!:
понюхал кнопку, поморгал светодиодом
прошивал 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

Re: XMega - Bascom AVR Basic

SkyStorm » 25 ноя 2010, 18:29

А что частота какая то странная?

Re: XMega - Bascom AVR Basic

EdGull » 25 ноя 2010, 18:33

внутренний RC по умолчанию с завода
на кварец еще не переключался

Re: XMega - Bascom AVR Basic

avr123.nm.ru » 25 ноя 2010, 21:50

Отлично.

Re: XMega - Bascom AVR Basic

galex1981 » 26 ноя 2010, 13:21

Замечательно! От меги обычной прога не отличается...

Re: XMega - Bascom AVR Basic

EdGull » 26 ноя 2010, 13:40

сегодня буду запускать AVR-DOS на microSD и естественно uart

Re: XMega - Bascom AVR Basic

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 переключить ХМегу на внешний кварец?

Re: XMega - Bascom AVR Basic

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+
}

Re: XMega - Bascom AVR Basic

EdGull » 27 ноя 2010, 20:10

это для какого программатора в CVAVR?

Re: XMega - Bascom AVR Basic

Doniak » 27 ноя 2010, 20:13

EdGull писал(а):это для какого программатора в CVAVR?

компилятор CVAVR
Прошивал AVRISPmkII в AVRstudio.

в XMege нету фьюз, частота выставляется программно.

Re: XMega - Bascom AVR Basic

Duhas » 27 ноя 2010, 20:15

а причем тут программный выбор такта и нету Fuse ?

Re: XMega - Bascom AVR Basic

EdGull » 27 ноя 2010, 20:16

выложи плиз ELF файл который по этим настройкам сгенерировал CVAVR

Re: XMega - Bascom AVR Basic

Duhas » 27 ноя 2010, 20:18

Эд, у тебя в васике АСМ мона вставлять?

Re: XMega - Bascom AVR Basic

EdGull » 27 ноя 2010, 20:20

легко!

Re: XMega - Bascom AVR Basic

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 заменить на какой нить регистр... + наверна его еще и в стеке сохранить нада бы )


cron
Rambler\'s Top100 Mail.ru counter