Перейти к содержанию
    

Добрый день.

 

Недавно начал осваивать сабж, для меня это первый опыт работы с ARM-ми. В качестве инструментария выбрал WinARM. Посмотрел примеры, которые идут с ним. По похожести контроллера самый близкий пример там для ADuC7020. Как я понял из этого примера, чтобы скомпилировать прогу под 7060, мне понадобятся кое-какие файлы, типа ADuC7060.h, ADuC7060-RAM.ld, ADuC7060-ROM.ld, может еще что-то... ADuC7060.h я нашел в интернетах, а вот с файлами *.ld пока туговато. Если в make-файле я поменяю SUBMDL = ADuC7020 на SUBMDL = ADuC7060, то естественно проект перестает компилироваться, требуя эти файлы. Не могло бы уважаемое сообщество помочь мне разобраться, как имеющуюся прогу под 7020 переделать на 7060?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В местных закромах есть компилятор rowley crossstudio, который представляет собой графическую оболочку и GNU C.

Настроечные файлы для ADUC70xx можно взять с сайта разработчика www.rowley.co.uk/arm/

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как я понял из этого примера, чтобы скомпилировать прогу под 7060, мне понадобятся кое-какие файлы, типа ADuC7060.h, ADuC7060-RAM.ld, ADuC7060-ROM.ld, может еще что-то...
Вы можете пересохранить под этими названиями имеющиеся файлы и исправить их под ADuC7060.

ADuC7060.h я нашел в интернетах
А вы уверены, что он писан под ваш компилятор?

а вот с файлами *.ld пока туговато.
Вам нужно один раз прочитать документацию на линкер. Вероятнее всего вам потребуется лишь изменить размер памяти кристалла в секции MEMORY в начале файла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В качестве инструментария выбрал WinARM.

Выбрали самый древний из существующих.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выбрали самый древний из существующих.
Какой посоветуете из бесплатных и современных?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какой посоветуете из бесплатных и современных?

 

Бесплатные:

 

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

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какой посоветуете из бесплатных и современных?

Code Sourcery Lite.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы можете пересохранить под этими названиями имеющиеся файлы и исправить их под 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 тоже постоянные уровни, хотя по идее выбран внешний кристалл, согласно даташиту. Знач что-то не так компилируется, хотя ошибок не выдает. Понять бы что не так...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какой посоветуете из бесплатных и современных?

А про IAR (32KB KickStart edition) забыли? Для ADuC7060 (32 kB (16 kB × 16) Flash/EE memory) самое то!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А про IAR (32KB KickStart edition) забыли? Для ADuC7060 (32 kB (16 kB × 16) Flash/EE memory) самое то!

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понадобилось переключить 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". Поменял. Не работает. В какую сторону копать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему может не работать синхронизация 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;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

мк ADuC7060. нужен SPI интерфейс , но весь. можно ли и будет ли работать, если ноги SPI будут конфигурированы след образом:

MOSI -> MOSI

SCK -> SCK

MISO -> GPIO

SS -> GPIO

 

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

 

так вот - будет ли такое работать и нет ли подводных камней (вопрос тем, кто работал с SPI ADuC7060) ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще вопрос - в каком состоянии будут ноги контроллера после резета (интересно, что в датащите об этом ни слова) или где еще это может быть документально описано ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...