Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Освоение ADuC7060
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Sargass
Добрый день.

Недавно начал осваивать сабж, для меня это первый опыт работы с ARM-ми. В качестве инструментария выбрал WinARM. Посмотрел примеры, которые идут с ним. По похожести контроллера самый близкий пример там для ADuC7020. Как я понял из этого примера, чтобы скомпилировать прогу под 7060, мне понадобятся кое-какие файлы, типа ADuC7060.h, ADuC7060-RAM.ld, ADuC7060-ROM.ld, может еще что-то... ADuC7060.h я нашел в интернетах, а вот с файлами *.ld пока туговато. Если в make-файле я поменяю SUBMDL = ADuC7020 на SUBMDL = ADuC7060, то естественно проект перестает компилироваться, требуя эти файлы. Не могло бы уважаемое сообщество помочь мне разобраться, как имеющуюся прогу под 7020 переделать на 7060?
etoja
В местных закромах есть компилятор rowley crossstudio, который представляет собой графическую оболочку и GNU C.
Настроечные файлы для ADUC70xx можно взять с сайта разработчика www.rowley.co.uk/arm/
Сергей Борщ
Цитата(Sargass @ Jul 14 2010, 09:16) *
Как я понял из этого примера, чтобы скомпилировать прогу под 7060, мне понадобятся кое-какие файлы, типа ADuC7060.h, ADuC7060-RAM.ld, ADuC7060-ROM.ld, может еще что-то...
Вы можете пересохранить под этими названиями имеющиеся файлы и исправить их под ADuC7060.
Цитата(Sargass @ Jul 14 2010, 09:16) *
ADuC7060.h я нашел в интернетах
А вы уверены, что он писан под ваш компилятор?
Цитата(Sargass @ Jul 14 2010, 09:16) *
а вот с файлами *.ld пока туговато.
Вам нужно один раз прочитать документацию на линкер. Вероятнее всего вам потребуется лишь изменить размер памяти кристалла в секции MEMORY в начале файла.
AHTOXA
Вот минимальный проект для aduc706x под gcc: Нажмите для просмотра прикрепленного файла
IgorKossak
QUOTE (Sargass @ Jul 14 2010, 09:16) *
В качестве инструментария выбрал WinARM.

Выбрали самый древний из существующих.
Sargass
Цитата(IgorKossak @ Jul 14 2010, 05:43) *
Выбрали самый древний из существующих.
Какой посоветуете из бесплатных и современных?
etoja
Цитата(Sargass @ Jul 15 2010, 11:09) *
Какой посоветуете из бесплатных и современных?


Бесплатные:

Yagarto: http://www.yagarto.de/

Eclipse: http://forum.puppyrus.org/index.php?action...ge;topic=2645.0

Платные:

Rowley Crossstudio (ссылка была ранее) : 150 USD

Imagecraft http://www.imagecraft.com/ : 249 USD


IgorKossak
QUOTE (Sargass @ Jul 15 2010, 10:09) *
Какой посоветуете из бесплатных и современных?

Code Sourcery Lite.
Sargass
Цитата(Сергей Борщ @ Jul 14 2010, 03:50) *
Вы можете пересохранить под этими названиями имеющиеся файлы и исправить их под ADuC7060.
В общем переделал вроде бы все файлы под себя, пока прога отказывается работать.

Код
#include "aduc7060.h"

static void delay(const unsigned long length)
{
    volatile unsigned long cnt;
    
    cnt = length;
    
    while (cnt > 0) {
        cnt--;
    }
}

int main(void)
{    
T1LD = 0x80; // 32,768 clock ticks
T1CON = 0xC0; // Periodic mode, enable
// timer, 32,768 Hz clock/1
IRQEN |= 0x10; // Enable Timer1 interrupt

// source
PLLKEY1 = 0xAA; // Switch to external crystal
PLLCON = 0x02;
PLLKEY2 = 0x55;

POWKEY1 = 0x01; // Enter nap mode
POWCON0 = 0x70; //10mhz
POWKEY2 = 0xF4;

    GP0DAT = 0x04000000;            // P0.2 configured as an output. LED is turned on    

    while (1) {
        GP0DAT ^= 0x00040000;        // Complement P0.2
        delay(2000UL);
    }
    
    return 0; /* never reached */
}

Осциллографом смотрел - на P0.2 получается постоянная еденица, на XTAL1 и XTAL0 тоже постоянные уровни, хотя по идее выбран внешний кристалл, согласно даташиту. Знач что-то не так компилируется, хотя ошибок не выдает. Понять бы что не так...
Шурила
Цитата(Sargass @ Jul 15 2010, 10:09) *
Какой посоветуете из бесплатных и современных?

А про IAR (32KB KickStart edition) забыли? Для ADuC7060 (32 kB (16 kB × 16) Flash/EE memory) самое то!
Sargass
Цитата(Шурила @ Jul 16 2010, 15:07) *
А про IAR (32KB KickStart edition) забыли? Для ADuC7060 (32 kB (16 kB × 16) Flash/EE memory) самое то!

Если честно, я про него и не знал, чтобы забыть) Спасибо за подсказку, поставил, попробовал - решает.
Sargass
Понадобилось переключить aduc на внешний кристалл, в даташите пишут:

Код
To switch to an external crystal, users must follow this procedure:
1. Enable the Timer1 interrupt and configure it for a timeout period of >120 μs.
2. Follow the write sequence to the PLLCON register, setting the OSEL bits to [10] and clearing the EXTCLK bit.
3. Force the part into nap mode by following the correct write sequence to the POWCON register.
4. When the part is interrupted from nap mode by the Timer1 interrupt source, the clock source has switched to the external crystal.

Example source code

T1LD = 0x80; // 32,768 clock ticks
T1CON = 0xC0; // Periodic mode, enable timer, 32,768 Hz clock/1
IRQEN |= 0x10; // Enable Timer1 interrupt source

PLLKEY1 = 0xAA; // Switch to external crystal
PLLCON = 0x2;
PLLKEY2 = 0x55;

POWKEY1 = 0x1; // Enter nap mode
POWCON0 = 0x73;
POWKEY2 = 0xF4;

Сделал простейший код, генерирующий импульсы на P0.2, когда вставил в него приведенный кусок - импульсов нема. Ощущение, что ядро не выходит из power-down. Почитав еще немного, заметил, что хотя везде говорится про "nap mode", в примере получается не "nap" а "pause". Поменял. Не работает. В какую сторону копать?
Sargass
Почему может не работать синхронизация PWM от внешнего сигнала?

Код
GP1CON =  BIT9;
  
  GP2CON  = BIT5 + BIT4 + BIT1 + BIT0; //Enable P2.0 & P2.1 as PWM0 & PWM5 Outputs
  PWMCON  = BIT14 + BIT8 + BIT7 + BIT6 + BIT0; //SYNC + PWMEN + /256
  
  PWM0COM0 = 0x190;
  PWM0COM1 = 0xC8;
  PWM0COM2 = 0x40;
  PWM0LEN = 0x190;

  PWMCLRI=0x00;
swisst
да бы не плодить темы - спрошу здесь. вопрос дилетантский, но тем не менее...

мк ADuC7060. нужен SPI интерфейс , но весь. можно ли и будет ли работать, если ноги SPI будут конфигурированы след образом:
MOSI -> MOSI
SCK -> SCK
MISO -> GPIO
SS -> GPIO

писать по SPI хочу аппаратно (по прерываниям) в 2 микросхемы. в целях экономии ног - хочу использовать MISO и SS в качестве сигналов CS для этих микросхем.

так вот - будет ли такое работать и нет ли подводных камней (вопрос тем, кто работал с SPI ADuC7060) ?
swisst
еще вопрос - в каком состоянии будут ноги контроллера после резета (интересно, что в датащите об этом ни слова) или где еще это может быть документально описано ?
Сергей Борщ
Цитата(swisst @ Sep 29 2010, 10:19) *
интересно, что в датащите об этом ни слова
Открываем даташит:
Нажмите для просмотра прикрепленного файла
Внимательно смотрим на колонку Default value. Делаем то же самое для остальных регистров. Думаем.
swisst
спасибо. ткнули, так ткнули...на самом деле после атмеловской документации ожидал увидеть (ну хотя бы) такое же описание от АД...ну или хотя бы подобную фразу
Цитата
The port pins are tri-stated when a reset condition becomes active, even if no clocks are running.


по предыдущему вопросу ничего не скажете ?
Сергей Борщ
Цитата(swisst @ Sep 29 2010, 15:01) *
по предыдущему вопросу ничего не скажете ?
Нет, не скажу. 706x живьем не видел, да и с предыдущими работал мало. Читайте внимательно даташит, напишите в службу поддержки АД, в крайнем случае. Или позвоните в представительство, свяжут со спецом по применению. У него наверняка есть какой-либо кит и он может проверить на нем ваш вопрос. А если не сможет - пишите в головное представительство, чтобы пинали местных.
Dir
Цитата(Сергей Борщ @ Sep 29 2010, 17:45) *
Нет, не скажу. 706x живьем не видел, да и с предыдущими работал мало. Читайте внимательно даташит, напишите в службу поддержки АД, в крайнем случае. Или позвоните в представительство, свяжут со спецом по применению. У него наверняка есть какой-либо кит и он может проверить на нем ваш вопрос. А если не сможет - пишите в головное представительство, чтобы пинали местных.


А у них по ADuCам служба поддержки есть? Я в свое время так и не достучался. Тем более непонятно куда... А вопросов была куча. Поскольку более гм ... "краткой" документации, чем по ADuC7xxx, в жизни не встречал. Единственный выход - идти на FTP ftp://ftp.analog.com и там в разделе pub/MicroConverter скачать все что видите по ADuC7xxx. По крайней мере я только так въехал в ADuC7128. Особенно в их PLA.

PS. По поводу назначения ног (если они прописаны в таблице) в ADuC7128 вроде бы багов не было, как и проблем с SPI. Можно, думаю, того же ожидать и от ADuC7060. Помню не заладился у меня аппаратный I2C и непонятки возникли при работе с контроллером флеш-памяти. Ввиду спешки не стал искать причины, выкрутился программным I2C, а на установку защиты вообще плюнул. И так сошло.
Sargass
Цитата(Dir @ Oct 1 2010, 02:13) *
А у них по ADuCам служба поддержки есть?
На analog.com есть конфа для разработчиков. На вопросы отвечают, не мгновенно конечно, но отвечают.
Паф
Цитата(Dir @ Oct 1 2010, 02:13) *
А у них по ADuCам служба поддержки есть? Я в свое время так и не достучался. Тем более непонятно куда... А вопросов была куча. Поскольку более гм ... "краткой" документации, чем по ADuC7xxx, в жизни не встречал. Единственный выход - идти на FTP ftp://ftp.analog.com и там в разделе pub/MicroConverter скачать все что видите по ADuC7xxx. По крайней мере я только так въехал в ADuC7128. Особенно в их PLA.

Вот называется у них Engineer Zone. Ветка Микроконтроллеры
Sargass
Цитата(Sargass @ Sep 9 2010, 11:07) *
Понадобилось переключить aduc на внешний кристалл, в даташите пишут:

Код
To switch to an external crystal, users must follow this procedure:
1. Enable the Timer1 interrupt and configure it for a timeout period of >120 μs.
2. Follow the write sequence to the PLLCON register, setting the OSEL bits to [10] and clearing the EXTCLK bit.
3. Force the part into nap mode by following the correct write sequence to the POWCON register.
4. When the part is interrupted from nap mode by the Timer1 interrupt source, the clock source has switched to the external crystal.

Example source code

T1LD = 0x80; // 32,768 clock ticks
T1CON = 0xC0; // Periodic mode, enable timer, 32,768 Hz clock/1
IRQEN |= 0x10; // Enable Timer1 interrupt source

PLLKEY1 = 0xAA; // Switch to external crystal
PLLCON = 0x2;
PLLKEY2 = 0x55;

POWKEY1 = 0x1; // Enter nap mode
POWCON0 = 0x73;
POWKEY2 = 0xF4;

Сделал простейший код, генерирующий импульсы на P0.2, когда вставил в него приведенный кусок - импульсов нема. Ощущение, что ядро не выходит из power-down. Почитав еще немного, заметил, что хотя везде говорится про "nap mode", в примере получается не "nap" а "pause". Поменял. Не работает. В какую сторону копать?

У кого-нибудь есть мысли по этому поводу?
gmp
Сам недавно начал осваивать ADUC7061.
У вас разрешены прерывания по таймеру

IRQEN |= 0x10; // Enable Timer1 interrupt source

А обработка прерывания описана в программе? Если нет, то контроллер "крутится" по адресу 0x4 "Undefined instruction" и в "main" не попадет.
LexaryStyle
1. При закорачивании входа перемычкой для дифф включения АЦП дрейф 4 младших бита(Ку = 8), это нормально?
2. Кто получал лучший результат по шумовым характеристикам АЦП, какой режим лучше использовать?
3. Скорость процессора 10Мгц, имеет ли смысл уменьшать?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.