Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



XMega - Bascom AVR Basic

Сообщений 1 страница 30 из 51

1

Т.к. заканчивается разработка новой печатной платы для ClearDroid сегодня на макетке васиком запустил ХМегу  :cool:
понюхал кнопку, поморгал светодиодом
прошивал 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

0

2

Кто нибудь знает как на Хмеге включить 32МГц при 16МГц кварце?

0

3

Лучше взять ARM 9 или 7, поставить линукс(да прямомо в конроллер) и дешевле и быстрее. Нет смысла наворачивать 8-ми разрядный контроллер.

0

4

Если до меня наконец доедет Хмега, то думаю темка оживет. ;)

0

5

Так, красавица наконец доехала до меня, я ещё не включал, но судя из датащита, 32МГц должны включаться обычным способом через фюзы как во всех аврках, встроен он изначально.

Ещё есть момент один: если питание больше 2.7В, то МК стартует на 32МГц, если ниже, то автоматом включается 12МГц.

Отредактировано RDW (2012-02-13 12:13:10)

0

6

RDW написал(а):

... 32МГц должны включаться обычным способом через фюзы как во всех аврках, встроен он изначально.....

А вот и я вырос до Xmega, в Bascom`е в настройках Fuse не увидел ничего, чтоб изменить тактовую частоту. По умолчанию Xmega как работает? Очень интересен опыт  :rolleyes:

0

7

Программно. http://avrhelp.mcselec.com/config_osc.htm
http://avrhelp.mcselec.com/config_sysclock.htm

+1

8

Да, программно, можно тем самым разгонять.

Обычно строки инициализации для внутреннего RC на штатную частоту:

Код:
$crystal = 32000000

$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014

Config Osc = Disabled , Pllosc = Enabled , 32mhzosc = Enabled , Pllsource = Rc2mhz , Pllmul = 16
Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1

Правда - это строки для последней версии баскома 2.0.7.9. Не уверен, что подойдут на предыдущую, там чуть по другому было:

Код:
Config Osc = Enabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1

Счетчик секунд ("RTC") на внешний часовой кварц запускается так:

Код:
Config Clock = Soft , Rtc = 1khz_32khz_crystosc , Gosub = Sectic
...
...
Sectic:
      ' ---- обработчик секундного времени
Return

+1

9

Подтверждаю. В Bascom 2.0.5 работает только это:

Код:
$crystal = 32000000

$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014

Config Osc = Disabled , Pllosc = Enabled , 32mhzosc = Enabled , Pllsource = Rc2mhz , Pllmul = 16
Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1

Столкнулся ещё и стем, что Timer уже по другому  :'(  Всё перекроили заново.

0

10

Что-то с таймером изменения не заметил, может как-то другой режим не использовал...

0

11

RDW написал(а):

Что-то с таймером изменения не заметил,........

Они вообще другие.
Вот, для Xmega выглядит вот так:

Код:
Config Tcd0 = Normal , Prescale = 64
Tcd0_per = &H30                                             ' period register

Создал тему, буду рад знаниям - Timer в Xmega

0

12

Ах ты про это, да, в ХМега многое по другому, более логично, гибко и круто. :)
В хелпе программы много примеров для двух архитектур присутствует.

0

13

Странно всё. Не могу понять, от чего она резонирует? Кварц стоит, но сигнала нет.

Код:
$crystal = 32000000

$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014

Config Osc = Disabled , Pllosc = Enabled , 32mhzosc = Enabled , Pllsource = Rc2mhz , Pllmul = 16
Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1

Кварц на Xtail 16мГц.

Отредактировано Ev3658 (2016-10-13 14:54:42)

0

14

Ты что пытаешься сделать, запустить внешний 16МГц кварц как Sectic или просто МК от внешки?

0

15

Ev3658 написал(а):

32mhzosc = Enabled

Если МК тактируется от кварца, то не нужно включать внутренний RC генератор на 32 МГц.

Попробуйте так

Код:
Config Osc = Disabled , Pllosc = Enabled , RANGE = 12MHZ_16MHZ , Pllsource = EXTCLOCK , Pllmul = 2

+1

16

Так совсем глухо.
Может я чего не правильно проверяю?
Сделал простую программу, но на выходе получаю не более 2 мегагерц.

Код:
$regfile = "xm256a3def.dat"
$crystal = 32000000
$hwstack = 64
$swstack = 64
$framesize = 64

$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014

Config Osc = Disabled , Range = 12mhz_16mhz , 32mhzosc = Enabled
Config Sysclock = 32mhz

Config Portd.7 = Output 

Do
PortD.7 = Not PortD.7
Loop

Отредактировано Ev3658 (2016-10-13 15:23:53)

0

17

Попробуй так:

Код:
Config Osc = Disabled , EXTOSC = Enabled , Pllosc = Enabled , Pllsource = EXTCLOCK , RANGE = 12MHZ_16MHZ , Pllmul = 2
Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1

0

18

RDW написал(а):

Попробуй так:....


Вот! Так уже такты переключает через Xtail, правда пальцем по контактам. Не могу в хелпе понять, где указывать, что стоит кристал, а не генератор сигналов.
Сама по себе не пускается, от кварца не работает.

Добавлено спустя 30 минут 15 секунд:

Вот это "Startup = Xtal_256clk" завело, но опять-же выход 2 мегагерца. Может выводы МК не могут больше 2х мегагерцов?

Код:
Config Osc = Disabled , Extosc = Enabled , Pllosc = Enabled , Pllsource = Extclock , Range = 12mhz_16mhz , Pllmul = 2 , Startup = Xtal_256clk
Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1

Pllmul = 4 - даёт 2,6мГц. Описание не могу найти.

Отредактировано Ev3658 (2016-10-13 16:31:01)

0

19

А хотя бы так?

Код:
$crystal = 16000000 ' 16MHz
'Enable the external oscillator with Range 12MHz....16MHz
Config Osc = Disabled , Extosc = Enabled , Range = 12mhz_16mhz , Startup = Xtal_256clk
Config Sysclock = External , Prescalea = 1 , Prescalebc = 1_1 'EXTERNAL 16MHz

0

20

Есть ещё такой пример из хелпа баскома:

Код:
$crystal = 32000000
Config Osc = Disabled , Extosc = Enabled , Range = 12mhz_16mhz , Startup = Xtal_1kclk , 32khzosc = Enabled
' Set PLL OSC conditions:
Osc_pllctrl = &B1100_0010                                   ' reference external oscillator, set the PLL' multiplication factor to 2 (bits 0 - 4)
Set Osc_ctrl.4                                             ' Enable PLL Oscillator
Bitwait Osc_status.4 , Set                                 ' wait until the pll clock reference source is stable
Clk_ctrl = &B0000_0100                                     ' switch system clock to pll
Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1

Правда пример для "xm128a3def.dat".

Отредактировано RDW (2016-10-13 16:35:49)

0

21

RDW написал(а):

Config Osc = Disabled , Extosc = Enabled , Range = 12mhz_16mhz , Startup = Xtal_256clk
Config Sysclock = External , Prescalea = 1 , Prescalebc = 1_1 'EXTERNAL 16MHz


666,7 кГц  :huh:

0

22

RDW написал(а):

onfig Osc = Disabled , Extosc = Enabled , Range = 12mhz_16mhz , Startup = Xtal_1kclk , 32khzosc = Enabled
' Set PLL OSC conditions:
Osc_pllctrl = &B1100_0010                                   ' reference external oscillator, set the PLL' multiplication factor to 2 (bits 0 - 4)
Set Osc_ctrl.4                                             ' Enable PLL Oscillator
Bitwait Osc_status.4 , Set                                 ' wait until the pll clock reference source is stable
Clk_ctrl = &B0000_0100                                     ' switch system clock to pll
Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1


1,333мГц

0

23

попробуй старап поменять на внешку

Код:
Config Osc = Disabled , Extosc = Enabled , Range = 12mhz_16mhz , Startup = EXTCLK
Config Sysclock = External , Prescalea = 1 , Prescalebc = 1_1 'EXTERNAL 16MHz

А вообще, если глянуть осцилом ноги кварца, то они должны запускаться/работать - это верный признак, что МК сконфигурирован на работу с внешки. Но тут надо быть уверенным, что кварц отдает реальную частоту, а не работает на Н-гармонике.
У тебя емкости запускные стоят на кварце? Должны быть!

0

24

RDW написал(а):

попробуй старап поменять на внешку

А вообще, если глянуть осцилом ноги кварца, то они должны запускаться/работать - это верный признак, что МК сконфигурирован на работу с внешки. Но тут надо быть уверенным, что кварц отдает реальную частоту, а не работает на Н-гармонике.
У тебя емкости запускные стоят на кварце? Должны быть!


Во-во, с внешнего еле получилось. Но на 16 мегагерц не выходит. Стоит 16 мегагерц кварц и 22пФ.
Пробовал без конденсаторов, результат тот-же.

RDW написал(а):

Config Osc = Disabled , Extosc = Enabled , Range = 12mhz_16mhz , Startup = EXTCLK
Config Sysclock = External , Prescalea = 1 , Prescalebc = 1_1 'EXTERNAL 16MHz


Не, не запускает.

Самый быстрый с кварца получается этот:

Код:
Config Osc = Disabled , Extosc = Enabled , Pllosc = Enabled , Pllsource = Extclock , Range = 12mhz_16mhz , Pllmul = 2 , Startup = Xtal_1kclk
Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1

Но и он работает не на 32 мегагерца.

Отредактировано Ev3658 (2016-10-13 16:54:30)

0

25

Ещё один из способов проверки запуска от кварца (без прибора) - это тупо закоротить ноги кварца. :) Если в ПО дальнейшее действие не приводит к работе - значит он работает от внешки.)))

Pllmul - это множитель умножителя частоты(PLL), если он стоит 2 - значит внешняя частота кварц умножается МК на 2, если при нём у тебя жалкие показания - значит кварц у тебя не работает на 16МГц от природы (брак).
Я вообще частоту не на ножке МК мерил, а тупо делал простой код в do/loop мигание светодиодом, типа:

toggle PortD.7
waitms 500

должно мигать раз в сек
но на это влияет настройка "$crystal = 32000000"
если раз в секунду не пыхает ,значит проблемы: физическая с кварцем или сконфигурированнием запуска

0

26

RDW написал(а):

.....
toggle PortD.7
waitms 500
...

Это без проблем мигает и совпадает. Тут другой факт интересен, скорость обработки программы меньше, чем на Atmega328p.

Отредактировано Ev3658 (2016-10-13 17:04:18)

0

27

Видимо Bascom или чего-то ещё жрёт кучу тактов в простом участке кода:

Код:
Do
Portb.4 = Not Portb.4
Loop

На Atmega328p - 1.14мГц
На Xmega256 - 2,4мГц

Если это так, то от кварца 16 мГц строка правильная:

Код:
Config Osc = Disabled , Extosc = Enabled , Pllosc = Enabled , Pllsource = Extclock , Range = 12mhz_16mhz , Pllmul = 2 , Startup = Xtal_1kclk
Config Sysclock = Pll , Prescalea = 1 , Prescalebc = 1_1

0

28

А ты дебагни код, вообще в хмеге есть работа с виртуальными портами, которые убыстряют работы с ними в разы, возможно умный компилятор баскома этот приём вне гласно использует...хотя для этого их надо отдельно настраивать.

0

29

Познавательная статейка: https://people.overclockers.ru/zauropod … ost_SDRAM/

0

30

Эх...ма.... в АЦП тоже не всё так просто  o.O
Может кто видел краткую информацию, а то везде прям мигрень уже.

...12-разрядный АЦП с максимальным быстродействием до 2 млн. преобразований в секунду. На входе АЦП предусмотрен мультиплексор, который дает возможность оцифровывать 4 внутренних (датчик температуры, выход ЦАП, деленное на 10 напряжение питания VCC и источник опорного напряжения) и до 16 внешних сигналов. Возможно измерение как несимметричных, так и дифференциальных сигналов.

:canthearyou:

0