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

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

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

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

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

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


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

 
Опции темы
Непрочитано 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.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,547
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
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.RU
 
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
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.RU
 
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
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.RU
 
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
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.RU
 
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Здравствуй, ARM. Запуск "на коленке"

while (U0LSR & 0x01) {
// Считываем символ
.....
}
как раз чтение из фифо
pambaru вне форума  
Непрочитано 13.11.2009, 00:07  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
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.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
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, время: 12:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot