Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


Результаты опроса: Запуск "на коленке" часть 2. Что дальше будем обсмакивать?
RTC (часы реального времени) 119 11.39%
USB 541 51.77%
Базовые навыки работы с портами ввода-вывода 248 23.73%
АЦП 108 10.33%
ЦАП 29 2.78%
Голосовавшие: 1045. Вы ещё не голосовали в этом опросе

 
Опции темы

Здравствуй, ARM. Запуск "на коленке"

Непрочитано 12.11.2009, 17:53  
Alexey_1811
Частый гость
 
Аватар для Alexey_1811
 
Регистрация: 10.11.2006
Адрес: Київ
Сообщений: 34
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alexey_1811 на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Объясните что такое IRQ slots.
Реклама:
Alexey_1811 вне форума  
Непрочитано 12.11.2009, 17:59  
AJScorp
Почётный гражданин KAZUS.RUN
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,550
Сказал спасибо: 384
Сказали Спасибо 735 раз(а) в 416 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от Alexey_1811 Посмотреть сообщение
Если прописываю VICDefVecyAddr = 0x00000120 то в прерывание попадаю (Хотя я понимаю что это через ж...у).
Попробуйте включить векторизацию для канала прерываний.

VICDefVectAddr - Default Vector Address Register. This register holds the address of the Interrupt Service routine (ISR) for non-vectored IRQs.

Код:
VICIntSelect=0x00000000;
VICVectAddr0=(unsigned int)Tmr0_func;
VICVectCntl0=0x24;			//Vectorization enabled(0x20), source 4(TMR0)
VICIntEnable=Tmr0_Src;			//(1‹‹4)
AJScorp вне форума  
Сказали "Спасибо" AJScorp
Alexey_1811 (12.11.2009)
Непрочитано 12.11.2009, 18:13  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,394
Сказал спасибо: 85
Сказали Спасибо 672 раз(а) в 392 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от AJScorp Посмотреть сообщение
VICVectCntl0=0x24; //Vectorization enabled(0x20), source 4(TMR0)
Да, в LPC2468 эти регистры отвечают только за приоритет.
pambaru вне форума  
Непрочитано 12.11.2009, 18:19  
Alexey_1811
Частый гость
 
Аватар для Alexey_1811
 
Регистрация: 10.11.2006
Адрес: Київ
Сообщений: 34
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alexey_1811 на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Передачу настроил
/* initialize the serial interface */
PINSEL0 = 0x00050000; /* Enable RxD1 and TxD1 */
U1LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */
U1DLL = 97; /* 9600 Baud Rate @ 15MHz VPB Clock */
U1LCR = 0x03;

Как сделать чтобы по приходу байта вызывалось прерывание. (Желательно с использованием ФИФО)
Alexey_1811 вне форума  
Непрочитано 12.11.2009, 18:22  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,394
Сказал спасибо: 85
Сказали Спасибо 672 раз(а) в 392 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от Alexey_1811 Посмотреть сообщение
Как сделать чтобы по приходу байта вызывалось прерывание. (Желательно с использованием ФИФО)
Инициализация у меня:

void InitUART(byte baud){
U0LCR=0x87;
U0DLL=baud;
U0DLM=baud ›› 8;
U0LCR=0x07;
U0FCR=0xC7; //0b11000111
U0IER=0x05;
U0TER=0x80;
PINSEL0=(PINSEL0 & ~(0x0F ‹‹ 4)) | (0x05 ‹‹ 4);
VICVectAddr6=(unsigned)UART_Handler;
VICVectCntl6=0x08; //приоритет
VICIntEnable = (1 ‹‹ 6); //разрешаем UART interrupt
}

не забывайте только про правильную инициализацию своего VICVectCntl, у меня это приоритет
pambaru вне форума  
Непрочитано 12.11.2009, 18:23  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,394
Сказал спасибо: 85
Сказали Спасибо 672 раз(а) в 392 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Обработчик:

__irq void UART_Handler (void){
dword idval;
idval=U0IIR;
idval=(idval & 0x0F) ›› 1;

switch (idval) {
case 0x01: //TX buffer empty
if (UARTTransCount) {
U0THR=*UARTTransPtr;
UARTTransCount--;
UARTTransPtr++;
}
else {UART_TX_Complete=1;
U0IER=0x05; //запрещаем прерывание TX empty
};
break;
case 0x02:
case 0x06: //Получены данные
if (UART_RX_Complete)
{
while (U0LSR & 0x01) U0RBR;
UARTRXTimer=0;
}
else {
if (!UARTRXTimer || !UARTPacketSize) {UARTPacketSize=U0RBR;
if (UARTPacketSize›5) {UARTRecCount=1;
*UARTRecBuff=UARTPacketSize;
}
else {UARTRecCount=0;
UARTPacketSize=0;
};
};
while (U0LSR & 0x01) {
// Считываем символ
UARTRecBuff[UARTRecCount]=U0RBR;
UARTRecCount++;
if (UARTRecCount›=UARTPacketSize) {UART_RX_Complete=1;
while (U0LSR & 0x01) U0RBR;
};
};
if (!UART_RX_Complete) UARTRXTimer=MaxUARTByteSpace;
else UARTRXTimer=0;
}; //else if (UART_RX_Complete)
break;
default: //ошибка
UARTRXTimer=0;
UARTPacketSize=0;
break;
};
VICVectAddr=0;
}

Ну тут у меня упоминаются буферы приема и счетчики. FIFO вроде используется
pambaru вне форума  
Эти 2 пользователя(ей) сказали Спасибо pambaru за это сообщение:
Alexey_1811 (12.11.2009), Eleman11 (08.12.2009)
Непрочитано 12.11.2009, 18:24  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,394
Сказал спасибо: 85
Сказали Спасибо 672 раз(а) в 392 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

while (U0LSR & 0x01) {
// Считываем символ
.....
}
как раз чтение из фифо
pambaru вне форума  
Непрочитано 13.11.2009, 00:07  
alexgap
Гражданин KAZUS.RUN
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Дальше будет!

Спасибо всем проголосовавшим и ответившим, нарисовался такой план:
  1. Изучаем ввод-вывод на ARM архитектуре. Начнем с небольшого введения об адресном пространстве ARM и классифицируем архитектуру среди других известных. Потом рассмотрим GPIO vs Fast IO, вход, выход, pull-up, pull-down. Вкл./выкл. светодиод одной кнопкой.
  2. Учимся правильно тактировать ARM. Выбор источника тактовой частоты, умножение частоты, введение в PLL, настройка и использование PLL
  3. Связываем контроллер с внешним миром: USART (синхронный) и компьютер. Смотрим на результаты работы микропрограммы через терминал на компьютере
  4. Таймеры и прерывания

Выполняем четко и последовательно. После этого мы будем очень близки к USB.

П.С.: "Запугивателям" вещающих "о сложности ARM", "об исключительной особенности этой архитектуры", "о жизненной необходимости изучать новую архитектуру с сеточных вычислений и кластеров", "о великом VIC'e" советую не терять время, ведь скоро на рынке ARM-труда станет тесно (не без нашей помощи ) Лучше просто заранее повышайте свою квалификацию и не несите "заумь", новичкам не это нужно, а профессионалы и так всё давно знают. В 8-ми разрядных машинках это всё тоже доступно, ровно как и в персональных компьютерах.

Помним, что "железка", это всего лишь средство для "хостинга" наших программ. А это как "хостинг" вэб-сайта, главное чтобы было надежно, много, быстро и дешево.

Если делаете качественный софт, то он прекрасно будет себя чувствовать как в "тесненькой" ATtiny (AVR), так и в жирном LPC2368 (ARM7).

Удачи!
alexgap вне форума  
Эти 27 пользователя(ей) сказали Спасибо alexgap за это сообщение:
Andreisela (13.11.2009), ASU1956 (05.05.2010), CERGEI1982 (13.11.2009), Djakovskij (07.01.2012), Eleman11 (08.12.2009), eliseevrci (14.11.2009), FreshManGood (03.01.2015), gdtron (28.09.2010), Gerbicid (13.11.2009), GremLine (23.12.2010), Highlander (22.12.2010), jek_point (17.10.2011), lanceloth (22.02.2010), lvadia (04.12.2009), MisterDi (13.11.2009), mousew1 (16.04.2010), pinco (09.11.2010), renatavr (13.11.2009), revector (13.09.2010), savarez (13.11.2009), toxxinus (20.11.2009), ua4nfx (16.11.2009), Uz_Sleep_Walker (13.11.2009), xinod (13.11.2009)
Непрочитано 13.11.2009, 13:47  
Gnider
Почётный гражданин KAZUS.RUN
 
Регистрация: 30.06.2005
Сообщений: 3,392
Сказал спасибо: 5
Сказали Спасибо 429 раз(а) в 305 сообщении(ях)
Gnider на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Выкладываю пример проекта.
В нем есть корректная инициализация периферии
Вложения:
Тип файла: rar mnt.rar (11.4 Кб, 564 просмотров)
Gnider вне форума  
Эти 8 пользователя(ей) сказали Спасибо Gnider за это сообщение:
alexgap (13.11.2009), mousew1 (16.04.2010), muravskiy (14.11.2009), sidoral (17.11.2009)
Непрочитано 13.11.2009, 22:22  
colombo_2006
Частый гость
 
Регистрация: 09.11.2007
Сообщений: 28
Сказал спасибо: 3
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
colombo_2006 на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

Сообщение от mrKirill Посмотреть сообщение
Те кто предлагал часы на основе RTC + плюшки - намного разумнее подход.
В общем согласен, хотя голосовал за USB.
USB это из разряда "дорвались", то чего всегда не хватало, плюс у AVR особых хитростей в работе с портами нет, а здесь как я понимаю собрались люди которым мелких контроллеров не хватает, а более крупный попробовать не получилось.

Более подробное руководство по серии LPC23xx
http://www.nxp.com/acrobat_download/.../UM10211_1.pdf

Последний раз редактировалось colombo_2006; 13.11.2009 в 22:34.
colombo_2006 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 11:35.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.