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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

LPC2101, Keil и все вокруг этого

Непрочитано 30.12.2009, 20:09  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

Сообщение от Alexey_1811 Посмотреть сообщение
на такую строку
PINSEL0 &= ~(1‹‹31);
Может я что не так делаю?
Да нормально все. Кейлом не пользуюсь, GCC варнингов не дает, что и неудивительно. Может это "недокрякнутость" так себя проявляет?
Код:
PINSEL0 &= ~(1‹‹31);
*  	E59F200C   ldr r2, [pc, #+0x00C]
*  	E5923000   ldr r3, [r2]
*  	E3C33102   bic r3, r3, #0x80000000
*  	E5823000   str r3, [r2]
А вообще интересный способ работы с этим регистром. Там для выбора переферийной функции группы по два бита. Сброс одного не дает однозначности.
Реклама:
kison вне форума  
Непрочитано 30.12.2009, 22:26  
Alexey_1811
Частый гость
 
Аватар для Alexey_1811
 
Регистрация: 10.11.2006
Адрес: Київ
Сообщений: 34
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alexey_1811 на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

Сообщение от kison Посмотреть сообщение
А вообще интересный способ работы с этим регистром. Там для выбора переферийной функции группы по два бита. Сброс одного не дает однозначности.
Да я вкурсе, просто PINSEL0 &= ~(1‹‹31); для примера привел.
Все конечно работает, но наличие варнинга бесит.
Alexey_1811 вне форума  
Непрочитано 31.12.2009, 03:22  
avr123-nm-ru
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,552
Сказал спасибо: 75
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

Сообщение от Alexey_1811 Посмотреть сообщение
Почему Keil ругается:
warning: #61-D: integer operation result is out of range
на такую строку
PINSEL0 &= ~(1‹‹31);
Может я что не так делаю?
Наверно потому что в Си числа-константы считаются int по-умолчанию - т.е. 16 бит

Проверьте, наверно при сдвиге до 15 не будет ругаться и вот так наверно тоже

PINSEL0 &= ~( ((long)1)‹‹31);

Возможно и 1UL прокатит - это как в WinAVR приписывают тип к обозначению частоты кварца в Гц.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 31.12.2009, 04:05  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

Сообщение от avr123-nm-ru Посмотреть сообщение
Наверно потому что в Си числа-константы считаются int по-умолчанию - т.е. 16 бит
Вообще то int в С - не меньше 16 бит, а вовсе не равно. Хотя и тут есть исключения, на некоторых машинах int 8-мибитный.
Но на ARM платформе int имеет честные 32 бита.
У меня ГЦЦ прекрасно переваривает такие конструкции, и несмотря на включенные все предупреждения не ругается. Там какой то другой С?
Может кейлу не нравится, что со знаковой величиной работаем как с беззнаковой?
kison вне форума  
Непрочитано 31.12.2009, 13:01  
Alexey_1811
Частый гость
 
Аватар для Alexey_1811
 
Регистрация: 10.11.2006
Адрес: Київ
Сообщений: 34
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
Alexey_1811 на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

C PINSEL0 &= ~( ((long)1)‹‹31); тоже самое.
Ругается только когда я меняю 31 бит. Ну да ладно.
У меня другая проблема. Пробую прикрутить SD карточку через SPI интерфейс. Карточки инициализируется нормально, но при попытке прочитать любой сектор я получаю одни и теже данные. Данные, что интересно, берутся с SD но это середина какого то 3ххх
сектора.
Код ниже:
Вложения:
Тип файла: rar SDCard_FAT.rar (5.0 Кб, 58 просмотров)
Alexey_1811 вне форума  
Непрочитано 31.12.2009, 13:41  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

Сообщение от Alexey_1811 Посмотреть сообщение
меня другая проблема. Пробую прикрутить SD карточку через SPI интерфейс.
Может просто взять FATFS? Там все работает сразу, протестирована тысячами человек, и это очень быстрая файловая система.
Я никогда в фате не ковырялся, брал творение Чана и н жалел об этом.
LFN там тоже уже поддерживаются.
kison вне форума  
Непрочитано 31.12.2009, 14:52  
avr123-nm-ru
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,552
Сказал спасибо: 75
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

Сообщение от kison Посмотреть сообщение
Может кейлу не нравится, что со знаковой величиной работаем как с беззнаковой ?
Наверняка. 31 как раз на знак приходится.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 07.01.2010, 04:15  
roxfan
Временная регистрация
 
Регистрация: 25.11.2009
Сообщений: 61
Сказал спасибо: 1
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
roxfan на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

А так?
PINSEL0 &= ~( (unsigned long)(1‹‹31) );
roxfan вне форума  
Непрочитано 08.01.2010, 23:16  
yarunt
Прописка
 
Регистрация: 11.07.2007
Сообщений: 127
Сказал спасибо: 8
Сказали Спасибо 24 раз(а) в 18 сообщении(ях)
yarunt на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

Помогите с прерыванием. С RTC идет секундное перывание ,которое на цветном графическом дисплее рисует время.Процесс довольно длительный но меня вполне устраивает,проблема в другом , прерывание "срет" мусором по картинке. Я так понял что не сохраняется состояние регистров перед входом в прерывание,на асме PUSH POP а на Си Кейл как это делается?
Код:
unsigned char BCD[8];
 void Time_lcd (void) __irq;
 void Rtc_init (void)
{
//RTC_PREINT 			= 0x00000392;						//Set RTC prescaler for 12.000Mhz Xtal
//RTC_PREFRAC 		= 0x00004380;
RTC_CIIR			= 0x00000001;						//Enable seconds counter interrupt
//RTC_AMR				= 0x000000FE;						//Enable seconds Alarm
RTC_CCR 			= 0x00000011;


  VICVectAddr13 = (unsigned long)Time_lcd ;
  VICVectCntl13 = 15;       
  VICIntEnable  = 1 ‹‹ 13; 


}

					  
 void Time_lcd (void)  __irq
 {

LCD_WriteString8("Time:\n",70,123,0xf0,0);

BinToDec(RTC_HOUR) ;
LCD_WriteStringM(BCD,100,123,0xff,0,2);

BinToDec(RTC_MIN) ;
LCD_WriteStringM(BCD,121,123,0xff,0,2);
LCD_WriteString8(".\n",115,123,0xff,0);

BinToDec(RTC_SEC) ;
LCD_WriteStringM(BCD,144,123,0xff,0,2);
LCD_WriteString8(".\n",136,123,0xff,0);

RTC_ILR 		= 0x00000003;
VICVectAddr     = 0X00000000;
return ;
}
Миниатюры:
Нажмите на изображение для увеличения
Название: IMG_6095.JPG
Просмотров: 101
Размер:	45.3 Кб
ID:	3470  
yarunt вне форума  
Непрочитано 08.01.2010, 23:49  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

Сообщение от yarunt Посмотреть сообщение
Я так понял что не сохраняется состояние регистров перед входом в прерывание,на асме PUSH POP а на Си Кейл как это делается?
Нет, дело явно в другом. Например в величине стека для режима IRQ. Раз в прерывании вызывается куча функций, что в общем то очень плохой стиль программирования, то надо и стек установить соответственно большой.
Или другие причины. Вообще вывод на индикатор должен быть через одну функцию-драйвер. Если это не так и во время процесса вывода придет прерывание, в котором есть свой вывод, то эффекты могут быть самыми разными и обычно неприятными Если это так и есть, то пересматривайте алгоритм работы программы.
kison вне форума  
Сказали "Спасибо" kison
yarunt (09.01.2010)
 
Опции темы

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

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

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


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


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