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

valeroon

Участник
  • Постов

    38
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о valeroon

  • Звание
    Участник
    Участник
  1. помощь с ARM

    Не вопрос /************************************************************************* * * Used with ICCARM and AARM. * * © Copyright IAR Systems 2007 * * File name : main.c * Description : Define main module * * History : * 1. Data : 28, February 2007 * Author : Stanimir Bonev * Description : Create * * This example project shows how to use the IAR Embedded Workbench for ARM * to develop code for the IAR LPC-P2378-SK board. It shows basic use of the I/O, * the timer and the interrupt controllers. * It starts by blinking USB Link LED. * * Note: * After power-up the controller get clock from internal RC oscillator that * is unstable and may fail with J-Link auto detect, therefore adaptive clocking * should always be used. The adaptive clock can be select from menu: * Project->Options..., section Debugger->J-Link/J-Trace JTAG Speed - Adaptive. * * $Revision: 1.1.2.2 $ ******************************************************************************/ #include <inarm.h> #include <stdio.h> #include <iolpc2378.h> #include "board.h" #define bitset(var,bitno)((var)|=1<<(bitno))//set bit #define bitclr(var,bitno)((var)&=~(1<<(bitno)))//clear bit #define testbit(var, bitno)((var>> bitno)&0x01)//test bit //***************Объявление переменных и прототипов функций********************* int a,b; void timer(void); //****************************************************************************** #pragma vector=0x1C //определение положения вектора fiq на карте памяти(0x1C) __fiq __arm void fiq_handler(void)//обработчик прерываний { a++; timer(); T0IR_bit.MR0INT=1; } /******************************************************************************* * Function Name: InitClock * Parameters: void * Return: void * * Description: Initialize PLL and clocks' dividers. Hclk - 288MHz, * Cclk- 57.6MHz, Usbclk - 48MHz * ******************************************************************************/ void InitClock(void) { // 1. Init OSC SCS_bit.OSCRANGE = 0; SCS_bit.OSCEN = 1; // 2. Wait for OSC ready while(!SCS_bit.OSCSTAT); // 3. Disconnect PLL PLLCON_bit.PLLC = 0; PLLFEED = 0xAA; PLLFEED = 0x55; // 4. Disable PLL PLLCON_bit.PLLE = 0; PLLFEED = 0xAA; PLLFEED = 0x55; // 5. Select source clock for PLL CLKSRCSEL_bit.CLKSRC = 1; // Selects the main oscillator as a PLL clock source. // 6. Set PLL settings 288 MHz PLLCFG_bit.MSEL = 24-1; PLLCFG_bit.NSEL = 2-1; PLLFEED = 0xAA; PLLFEED = 0x55; // 7. Enable PLL PLLCON_bit.PLLE = 1; PLLFEED = 0xAA; PLLFEED = 0x55; // 8. Wait for the PLL to achieve lock while(!PLLSTAT_bit.PLOCK); // 9. Set clk divider settings CCLKCFG = 5-1; // 1/5 Fpll - 57.6 MHz USBCLKCFG = 6-1; // 1/6 Fpll - 48 MHz PCLKSEL0 = PCLKSEL1 = 0; // other peripherals - 18MHz // 10. Connect the PLL PLLCON_bit.PLLC = 1; PLLFEED = 0xAA; PLLFEED = 0x55; } /************************************************************************* * Function Name: GpioInit * Parameters: void * Return: void * * Description: Reset all GPIO pins to default: primary function * *************************************************************************/ void GpioInit(void) { // Set to inputs IO0DIR = \ IO1DIR = \ FIO0DIR = \ FIO1DIR = \ FIO2DIR = \ FIO3DIR = \ FIO4DIR = 0; // Enable Fast GPIO 0,1 SCS_bit.GPIOM = 1; // clear mask registers FIO0MASK =\ FIO1MASK =\ FIO2MASK =\ FIO3MASK =\ FIO4MASK = 0; // Reset all GPIO pins to default primary function PINSEL0 =\ PINSEL1 =\ PINSEL2 =\ PINSEL3 =\ PINSEL4 =\ PINSEL5 =\ PINSEL6 =\ PINSEL7 =\ PINSEL8 =\ PINSEL9 =\ PINSEL10= 0; } //****************************************************************************** void VicInit(void) { bitset(VICINTSELECT,4);// TMR0 int-FIQ bitset(VICINTENABLE,4);// разрешить прер. } //****************************************************************************** //***************************Подпрограммы*************************************** void timer() { if(testbit(FIO1PIN,19)){bitset(FIO1CLR,19);} else{bitset(FIO1SET,19);}// индикация входа в прерывание по TMR0 } /******************************************************************************* * Function Name: main * Parameters: none * * Return: none * * Description: main * ******************************************************************************/ void main(void) { // MAM init MAMCR_bit.MODECTRL = 0; MAMTIM_bit.CYCLES = 3; // FCLK > 40 MHz MAMCR_bit.MODECTRL = 2; // MAM functions fully enabled // Init clock InitClock(); // Init GPIO GpioInit(); // Init VIC VicInit(); //********************Инициализация и настройка режимов TMR0******************** PCONP_bit.PCTIM0=1;//TMR0 запитан T0TCR_bit.CR=1;//таймер сброшен T0TC=0;T0PC=0;//счетчик таймера и предделителя сброшены T0TCR_bit.CE=1;//разрешение счета T0PR=0x0FFF;//коэфф предделителя T0MR0=0x00FF;//значение совпадения c T0TC reg T0MCR_bit.MR0I=1;//разрешить установку флага прерывания T0MCR_bit.MR0R=1;//сброс счетчика T0TC по совпадению T0TCR_bit.CR=0;//счет T0IR_bit.MR0INT=1;//сброс флага рперывания по совпадению //*************************Тест работы LED************************************** bitset(FIO1DIR,19);// P1.19-выход bitset(FIO1SET,19);// P1.19-установлен в 1 bitset(FIO1CLR,19);// P1.19-сброшен в 0 //****************************************************************************** __enable_interrupt(); while(1) {b++;} }
  2. помощь с ARM

    Здравствуйте.Прошу помощи по началам работы с LPC2378(плата LPC-P2378-SK) за основу был взят пример с диска в комплекте сплатой под который написал свой код(fiq прерывание от TMR0) Проблема в следующем-когда обработчик прерывания прописан в теле функции fiq,отладка в железе идет нормально-но стоит оформить обработчик в виде функции и вызывать ее при прирываниии то-кирдык. В чем я не прав помогите. Среда IAR отладка через JLINK.
  3. Помогите правильно настроить отладчик mVision 3 для совместной работы с платой LPC-2378-SK. На плате встроенный USB-JLINK. При попытке соединения (в файле только startup.s и пустой main.c) кроме всего прочего вижу такие строки ***JLink Error: Failed to verify @ address 0x00000004 (Expected: 0xE59FF018, Found: 0x00000000) JTAG speed: 2285 kHz ***JLink Error: JTAG Timeout during adaptive clocking: RTCK did not respond. Спасибо за совет.
  4. например LPC-2378-SK в Терраэлектронике около 6000р
  5. А с J-LINK усбовым он дружит?
  6. А как с этим делом в других средах обстоит?
  7. вопрос по IAR симулятору

    Добрый день.Помогите советом начинающему.Нужно симулировать таймер,но не понятно как быть с инициализацией системы.На цикле типа while(!SCS_bit.OSCSTAT);симулятор циклится а принудительный взвод этого бита -мое ощущение-игнорируется.
  8. Спасибо всем отозвавшимся.Сообщаю что этот исходник заработал за одним изменением-регистры типа IOxSET,CLR,PIN,DIR были заменены на FIOxSET и тп.В чем разница думаю разберусь самостоятельно. Насчет бездумного копирования кода-за пример был взят исходник из книги(П.П. Редькин Микроконтроллеры ARM семейства LPC2000).Не имел оснований не доверять написанному. Данный пример компилировался в IAR EW-и программа выполняется из ОЗУ.Вопрос-как осуществить запись и выполнение программы из FLASH.
  9. Здравствуйте!Приобрел плату с LPC2378 и как нормальный начинающий сразу сел в лужу.То ли неправильно сконфигурированы GPIO то ли еще чего,но включить/выключить светодиод(классика) не удается(P0.13).Эмулятор через J-LINK плату видит нормально.Вот мой первый исходник для ARM- (сам я электронщик а не программист поэтому написан извините как понимаю).Прошу помощи ! #include <iolpc2378.h> //****************************************************************************** int main() { //***********************Инициализация акселератора FLASH памяти**************** MAMCR_bit.MODECTRL = 0;//MAM blocked MAMTIM_bit.CYCLES = 1;// FCLK<20 MHz MAMCR_bit.MODECTRL = 2;// MAM functions fully enabled MEMMAP=0x00000002; //***************************Инициализация системы****************************** SCS_bit.OSCRANGE = 0;// Fosc=1-20MHz SCS_bit.OSCEN = 1;//Main oscillator enabled while(SCS_bit.OSCSTAT==0);//waiting OSC ready //Disconnect PLL PLLCON_bit.PLLC = 0; PLLFEED = 0xAA; PLLFEED = 0x55; //Disable PLL PLLCON_bit.PLLE = 0; PLLFEED = 0xAA; PLLFEED = 0x55; //***********************Конфигурирование выводов портов************************ IO0DIR=0x00002000;// //IO1DIR=0x00080000;// PINSEL0=0; PINSEL1=0; //****************************************************************************** IO0CLR=0x00002000; IO0SET=0x00002000; IO0CLR=0x00002000; IO0SET=0x00002000; IO0CLR=0x00002000; IO0SET=0x00002000; for( ; ; ) {} }
  10. помогите с выбором платы

    Добрый день всем.Есть желание да и необходимость не за горами начать работу с ARM.Для себя определился с интересной для меня архитектурой-это AT91SAM7A3 или AT91SAM7X256.Помогите с выбором отладочной платы.Возможны варианты-все в одном,так и дополняемые модулями(если таковые существуют).Для информации-на сегодняшний день работаю с PIC18 пишу на hi-tech C. Заранее спасибо откликнувшимся.Валера
  11. sot353

    Добрый день.Ремонтирую дорогой прибор и столкнулся с проблемой идентификации неисправного компонента.Выполнен в корпусе типа sot353,выводы 1,3 входы 4,5 выходы 2 на массу схемы.Cудя по конфигурации печатных проводников должен быть спаренный стабилитрон или защитный диод.Поискал но ничего подходящего по топологии не увидел(выводы1,3 печатью не соединяются с 4,5)Прошу помощи. Да забыл еще -на корпусе маркировка FA и как бы повернутая на 90 градусов буква H
  12. Подтолкнул к решению проблемы следующий факт-пик завешивается и при подключении к схеме земли осциллографа.Предпринял меры: 1.Землю схемы на корпус прибора через RC. 2.Нейтраль трехфазного ввода на корпус. 3.Радуюсь жизни!!!
  13. Завешиваются RB7,RB6
  14. особенности 16f873a

    Добрый день.Вчера просил помощи на форуме микрочип.ру Защелкиваются входа на 16F873a.Перекомпилил без изменений под 16f877-сбои исчезли.Меня давай лечить про кривую программу,разводку,схему и тп.И про "толстую" технологию в 16f877.Проясните чем 8XXa отличается от 8XX.И на кой нужна "тонкая" технология ?Сколько не писал под 16F877-работает как танк хрен завесишь и убьешь
×
×
  • Создать...