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

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

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

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

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

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

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

 
Опции темы
Непрочитано 30.12.2009, 20:09  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
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.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 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.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
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.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

Сообщение от Alexey_1811 Посмотреть сообщение
меня другая проблема. Пробую прикрутить SD карточку через SPI интерфейс.
Может просто взять FATFS? Там все работает сразу, протестирована тысячами человек, и это очень быстрая файловая система.
Я никогда в фате не ковырялся, брал творение Чана и н жалел об этом.
LFN там тоже уже поддерживаются.
kison вне форума  
Непрочитано 31.12.2009, 14:52  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 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.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: LPC2101, Keil и все вокруг этого

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

Закладки
Опции темы

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

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

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


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


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