Страница 7 из 7

Re: ARM7 с нуля

Добавлено: Вт апр 12, 2011 14:47:22
Satyr
чтобы было куда ловить прерывания от таймера надо сделать то, о чем говорится в книжке - настроить контроллер прерываний.

но чтобы еще и было что получать, надо разрешить после прерывания в настройках самого таймера.

Re: ARM7 с нуля

Добавлено: Вт апр 12, 2011 14:48:47
Satyr
ARM7 писал(а):А правда,что там так можно?-
IO1DIR_bit.P1_20=1;
Там, это где ?
С хеадерами, что идут под LPC**** в IARе так можно.
Что там в комплекте с кейлом не в кусре.

Re: ARM7 с нуля

Добавлено: Вт апр 12, 2011 16:00:57
Satyr
Сейчас проверил еще один большой плюс за ARMы
Из SEGGER SAM-ICE за 6тр сделал J-link v6 за 1.5тр -))))

В чем суть - под ARMы можно сделать самому БЕЗ НЕОБХОДИМОСТИ заливать его предварительно другим программатором (который надо откуда то взять -))) ) из кучки деталей рублей за 250 свой нормальный USB-шный, а не на несуществующий уже LPT-порт программатор-ОТЛАДЧИК, поддерживаемый всеми основными средами разработки.

Re: ARM7 с нуля

Добавлено: Вт апр 19, 2011 21:27:06
ARM7
Как объявить битовую переменную в Keil ?
Как написать такое?- void Write (bit Data)

Re: ARM7 с нуля

Добавлено: Ср апр 20, 2011 10:41:16
ARM7
Похоже нету такого, хотя можно наверно и unsigned int вместо bit.?

Re: ARM7 с нуля

Добавлено: Чт апр 21, 2011 20:26:08
romazan
Будет байт

Re: ARM7 с нуля

Добавлено: Чт апр 21, 2011 21:18:02
ARM7
Что то я туплю.Ну а как работать с байтами? :dont_know:

Re: ARM7 с нуля

Добавлено: Чт апр 21, 2011 21:43:47
romazan
typedef unsigned char byte;
typedef unsigned int word;

Re: ARM7 с нуля

Добавлено: Пт апр 22, 2011 09:30:13
ARM7
ARM7 писал(а):Что то я туплю.Ну а как работать с байтами? :dont_know:
Неправильно написал,блин, как работать с БИТами ?

Re: ARM7 с нуля

Добавлено: Пт апр 22, 2011 10:10:35
ARM7
Ладно,нашел способ-

Код: Выделить всё

//Флаг на 8 бит
uint8_t Flag;
//Определяем биты флага
#define ONE        0
#define TWO       1
#define THREE   2
#define FOUR     3
#define FIVE       4
#define SIX          5
#define SEVEN    6
#define EIGHT     7

//Проверка соответствующего бита в флаге

//Проверить установлен ли бит ONE можно так
if(Flag & (1 << ONE))
  {
    //бит ONE установлен, делаем что-то
  }
//Првоерить сброшен ли бит ONE можно так
if(!(Flag & (1 << ONE)))
  {
    //бит ONE сброшен, делаем что-то
  }

//Сброс бита в 0
Flag&= ~(1 << ONE);

//Установка бита в 1
Flag|= (1 << ONE);
Начал переделывать код для DS18B20(не изобретать же велосипед) под LPC для Keil- наткнулся на bit, вот и вопрос возник не по теме.

Re: ARM7 с нуля

Добавлено: Пт апр 22, 2011 10:21:05
ChipKiller
ARM7 писал(а):Ладно,нашел способ-
... это битовая маска, только проще ИМХО писать не

Код: Выделить всё

#define ONE        0
#define TWO       1
, а

Код: Выделить всё

#define ONE        0x1
#define TWO       0x2
.. тогда вместо if(Flag & (1 << ONE)) будет if(Flag & ONE) ... покороче в записи

Re: ARM7 с нуля

Добавлено: Пт апр 22, 2011 10:31:28
ARM7
Ну и так можно.
ARM7 писал(а): код для DS18B20(
-хочу разобраться с этой мелочёвкой (не для них же такой мощный проц расчитан)-пригодятся в проектах, потом более высокими вещами займемся,опять таки не изобретая велосипеда :)) Заранее вопросик оставлю здесь-а как это интересно делается,как в начале теме-вэб браузер и там в HTML страницу можно передавать значения переменных,значит можно в той же странице нажимать кнопки и дергать ногами МК. HTML я знаю, а дальше куда смотреть-что изучать ?

Re: ARM7 с нуля

Добавлено: Вт апр 26, 2011 09:07:43
ARM7
Иногда надо бывает-вот посмотрел цифровым осциллом временные задержки для 72 мгц-

Код: Выделить всё

// unsigned int i;
// for (i=0; i<1; i++); 
 // В этом цикле если i<...
 // 1- 1,18 us   15- 6,1 us     150- 53 us      1500- 520 us
 // 2- 1,58 us   20- 7,8 us     200- 70,5 us    2000- 695 us
 // 3- 1,9 us     30- 11,3 us    300- 105 us    3000- 1 ms
 // 4- 2,24 us   40- 14,75 us  400- 140 us    6000- 2 ms
 // 5- 2,56 us   50- 18,2 us    500- 174us     30000- 10 ms
 // 6- 2,96 us   60- 21,7 us    600- 209 us    60000- 20 ms
 // 7- 3,3 us     70- 25,2 us    700- 244 us    3000000- чуть больше 1 сек
 // 8- 3,62 us   80- 28,6 us    800- 279 us
 // 9- 3,96 us   90- 32,2 us    900- 314 us
 // 10-4,34 us  100-35,6 us   1000-348 us

Код: Выделить всё

int main(void)
{  
 IODIR0= 1<<16;
 while(1){
 IOSET0=1<<16;
 for (i=0; i<3000000; i++); 
 IOCLR0=1<<16;
 for (i=0; i<3000000; i++); 
}
}

Re: ARM7 с нуля

Добавлено: Пт май 20, 2011 19:00:28
ARM7
Что то я забросил всё это дело-весна-работ прибавилось.. Не могу победить этот DS18B20. Дайте кто нибудь код для LPC чтоли для этих штучек, всё понятно-как инициализировать- держим низкий уровень не менее 480 мкс и отпускаем ногу мк и если на линии есть датчик-он должен посадить линию,в моем коде этого не происходит. :cry: