ARM7 с нуля
Re: ARM7 с нуля
Забыл про это-
IOPINx
FIOxPIN Регистр, из которого можно получить информацию о текущем состоянии портов ввода/вывода, независимо от направления ввода/вывода и назначения пинов. Нулевой бит соответствует порту Px.0 …. 31й – Px.31. Используется только для чтения.
IOPINx
FIOxPIN Регистр, из которого можно получить информацию о текущем состоянии портов ввода/вывода, независимо от направления ввода/вывода и назначения пинов. Нулевой бит соответствует порту Px.0 …. 31й – Px.31. Используется только для чтения.
Re: ARM7 с нуля
Каждая ножка МК может использоваться 4-мя перефирийными устройствами МК,например таймер, UART и т.д. PINSEL подключает вывод мк к нужному устройству. 
Re: ARM7 с нуля
Для дальнейшего изучения нужно подключить на выходы что-то, светодиодами баловаться не будем,подключим 2-хстрочный LCD и темпер.датчик DS18B20. Ну тут может быть перерыв в несколько дней.. 

- romazan
- Потрогал лапой паяльник
- Сообщения: 335
- Зарегистрирован: Чт май 21, 2009 13:54:07
- Откуда: Москва
- Контактная информация:
Re: ARM7 с нуля
Могу скинуть исходники для работы с ЛСД 3310, правда для AT91SAM7. Писал сам.
Re: ARM7 с нуля
Давай,мало ли что-пригодится,я всё что встречается по арм-ам собираю.
Re: ARM7 с нуля
Может у кого то есть исходник для нескольких DS18B20?
Re: ARM7 с нуля
Спасибо, сохранил.
Блин, или Протеус тупит- в Протеусе на LPC2137 соединил 2-хстрочный LCD, нашел библиотеку для HD44780- но ножки не дергаются, если сам заставляю-моргают выводы, на симуляторе KEIL нормально бегает, может точно Протеус тупит? Вот код:
Тем более сначала Прот ругался,что на выводе Vват не 3,3 в, а 5в, все настроил-без толку, потом на этот выв.питания соединил аккумулятор 3 вольта с большой емкостью- он питание до 3,2 вольа посадил и перестал ругаться..
Блин, или Протеус тупит- в Протеусе на LPC2137 соединил 2-хстрочный LCD, нашел библиотеку для HD44780- но ножки не дергаются, если сам заставляю-моргают выводы, на симуляторе KEIL нормально бегает, может точно Протеус тупит? Вот код:
Код: Выделить всё
#include <lpc213x.h>
/* ЖК подключен к PORT0 выводы 4 битн данных P0.0..3
E - P0.4; RS - P0.5 */
#define E 4
#define RS 5
#define _BV(x) (1<<x)
#define TIME 150 // задержка для F_cpu=72 MHz
void HD44780_data_send(unsigned char p);
void HD44780_com(unsigned char p);
void HD44780_dat(unsigned char p);
void HD44780_init(void);
void HD44780_puts(unsigned char *data);
void HD44780_3dig (unsigned long val, unsigned char pos);
void HD44780_4dig(unsigned long val, unsigned char pos);
void HD44780_5dig(unsigned long val, unsigned char pos);
void pause(unsigned int p)
{
unsigned int i=0;
for (i=0;i<p;i++);
}
void HD44780_data_send(unsigned char p) //"p"-байт данных или команд
{
FIO0CLR |=0x0000000f;
//FIO0CLR |= ~(p>>4);
FIO0SET |= (p>>4); //Старший ниббл
pause(TIME);
FIO0CLR |= _BV(E); //EN=0, запись информации в ЖКИ
pause (TIME);
FIO0SET |= _BV(E); //Сигнал EN=1
FIO0CLR |=0x0000000f;
// FIO0CLR |= ~(p & 0x0f);
FIO0SET |= (p & 0x0f); //Младший ниббл
pause (TIME);
FIO0CLR |= _BV(E); //EN=0, запись информации в ЖКИ
pause (5*TIME);
}
void HD44780_com(unsigned char p)
{
FIO0CLR |= _BV(RS);
FIO0SET |= _BV(E); //RS=0, EN=1
HD44780_data_send(p); //Вызов общей части функций lcd_com, lcd_dat
}
void HD44780_dat(unsigned char p)
{
FIO0SET |= _BV(RS);
FIO0SET |= _BV(E); //RS=1, EN=1
HD44780_data_send(p); //Вызов общей части функций lcd_com, lcd_dat
}
void HD44780_init(void) //Режим 4-бит, мигающий курсор
{ HD44780_com(0x33); pause(500*TIME); //Подготовка
HD44780_com(0x32); HD44780_com(0x28); //4-бит, две строки
HD44780_com(0x08); //Полное выключение дисплея
HD44780_com(0x01); pause(1000*TIME); //Очистка дисплея
HD44780_com(0x06); //Направление сдвига курсора - вправо
HD44780_com(0x0c); //Включение дисплея,отсутствуют курсор
}
void HD44780_puts(unsigned char *data) //"data"=стринг
{ while(*data) HD44780_dat(*(data++)); //Смена символов
}
//---------- вывода значений на ЖКИ--------------
void HD44780_5dig(unsigned long val, unsigned char pos)
{
HD44780_com(pos); //Установка курсора
HD44780_dat(val/10000 + 0x30); //Индикация единиц
HD44780_dat((val%10000)/1000 + 0x30);
//HD44780_dat(','); //Индикация запятой
HD44780_dat((val%1000)/100 + 0x30); //Сотни
HD44780_dat((val%100)/10 + 0x30); //Десятки
HD44780_dat(val%10 + 0x30); //Единицы
return;
}
void HD44780_4dig(unsigned long val, unsigned char pos)
{
HD44780_com(pos); //Установка курсора в нижней строке
HD44780_dat(val/1000 + 0x30); //Индикация единиц
// HD44780_dat(','); //Индикация запятой
HD44780_dat((val/100)%10 + 0x30); //Сотни
HD44780_dat((val/10)%10 + 0x30); //Десятки
HD44780_dat(val%10 + 0x30); //Единицы
return;
}
//---------- вывода значений на ЖКИ--------------
void HD44780_3dig (unsigned long val, unsigned char pos)
{
HD44780_com(pos); //Установка курсора в нижней строке
HD44780_dat((val/100)%10 + 0x30); //Сотни
HD44780_dat(val/10 + 0x30); //Индикация единиц
HD44780_dat(val%10 + 0x30); //Единицы
return;
}
int main(void)
{
IO0DIR=0x0000003F;
HD44780_init ();
//HD44780_4dig(1234,1);
while(1){
//HD44780_data_send('D');
HD44780_3dig(567,3);
/* Если только это оставить-ножки моргают.
IO0SET= 0x0000003F;
pause(300);
IO0CLR= 0x0000003F;
pause(300);
*/
}}
Тем более сначала Прот ругался,что на выводе Vват не 3,3 в, а 5в, все настроил-без толку, потом на этот выв.питания соединил аккумулятор 3 вольта с большой емкостью- он питание до 3,2 вольа посадил и перестал ругаться..

- romazan
- Потрогал лапой паяльник
- Сообщения: 335
- Зарегистрирован: Чт май 21, 2009 13:54:07
- Откуда: Москва
- Контактная информация:
Re: ARM7 с нуля
Что-то мне твои нагромождения из вот этого |= _BV() не нравятся, в Atmel есть два регистра(только запись): один ставит в единицу вывод, другой в ноль. Думаю в этом камне тоже самое. Поэтому можно с - |= не парится, а просто слать через =.
Re: ARM7 с нуля
да, |= для них абсолютно бестолку.
****VAL |= _BV(x) приобретает смысл ***SET = _BV(x)
а
****VAL &= ~_BV(x) приобретает смысл ***CLR = _BV(x)
****VAL |= _BV(x) приобретает смысл ***SET = _BV(x)
а
****VAL &= ~_BV(x) приобретает смысл ***CLR = _BV(x)
Re: ARM7 с нуля
Ну убрал эти дурацкие |= _BV(x),сделал так
#define E 0x00000010
#define RS 0x00000020
Но не в этом было дело-а в этом-
IO0CLR = E;
т.е. вместо FIO - IO, ножки заморгали,а цифр и букв нет, что-то в инициализации или типа того неправильно,надо разбираться.
#define E 0x00000010
#define RS 0x00000020
Но не в этом было дело-а в этом-
IO0CLR = E;
т.е. вместо FIO - IO, ножки заморгали,а цифр и букв нет, что-то в инициализации или типа того неправильно,надо разбираться.
-
Mr.Denis
- Прорезались зубы
- Сообщения: 220
- Зарегистрирован: Пт авг 07, 2009 22:06:49
- Откуда: Россия, Москва
Re: ARM7 с нуля
Всем привет! Я тут надумал изучать arm, но не знаю с какому МК начать.
Посоветуйте МК под который больши информации и примеров,
И вообще раскажите о первых шагах и отладочных платах.
Взаимное спасибо!
Посоветуйте МК под который больши информации и примеров,
И вообще раскажите о первых шагах и отладочных платах.
Взаимное спасибо!
STM32F4 Discovery + KEIL + Windows 7
Re: ARM7 с нуля
без разницы. смотри что по параметрам, корпусу, цене больше нравится.
а начать бы советовал с копеечного комплекта, в котором есть сразу все для начала - и маленькая платка с контроллером, и программатор-отладчик, и триальная среда разработки и примеры
STM32DISCOVERY - около 500р за все сразу, чтоб сесть и пробоать.

а начать бы советовал с копеечного комплекта, в котором есть сразу все для начала - и маленькая платка с контроллером, и программатор-отладчик, и триальная среда разработки и примеры
STM32DISCOVERY - около 500р за все сразу, чтоб сесть и пробоать.
Re: ARM7 с нуля
Поглядел, уже даже не 500, а 320р.
http://www.terraelectronica.ru/news_postup.php?ID=2139
и почитать http://www.terraelectronica.ru/images/n ... 11_2_4.pdf
http://www.terraelectronica.ru/news_postup.php?ID=2139
и почитать http://www.terraelectronica.ru/images/n ... 11_2_4.pdf
-
SII
- Вымогатель припоя
- Сообщения: 635
- Зарегистрирован: Пт янв 30, 2009 14:50:35
- Откуда: Солнечногорск
Re: ARM7 с нуля
А в словарь посмотреть и обнаружить, что Divider -- это делитель?
Re: ARM7 с нуля
Круто! А поточнее обьяснить..? Цитата-
PLL позволяет входную тактовую частоту, находящуюся в пределах от 10 до 25 МГц,
умножать, получая внутреннюю тактовую частоту в пределах от 10 до 60 МГц. Множитель должен
быть целым числом в диапазоне от 1 до 32 (для LPC2106 – от 1 до 6).-Это ясно.
Частота работы внутреннего управляемого генератора должна находится в пределах от 1566 до 320 МГц, что требует наличия дополнительного делителя, для приведения в соответствие выходной частоты, рабочей частое кристалла. Выходной делитель может работать с коэффициентом 2,4,8 и 16. Минимальное значение для делителя – 2.-Вот тут непонятки..
PLL позволяет входную тактовую частоту, находящуюся в пределах от 10 до 25 МГц,
умножать, получая внутреннюю тактовую частоту в пределах от 10 до 60 МГц. Множитель должен
быть целым числом в диапазоне от 1 до 32 (для LPC2106 – от 1 до 6).-Это ясно.
Частота работы внутреннего управляемого генератора должна находится в пределах от 1566 до 320 МГц, что требует наличия дополнительного делителя, для приведения в соответствие выходной частоты, рабочей частое кристалла. Выходной делитель может работать с коэффициентом 2,4,8 и 16. Минимальное значение для делителя – 2.-Вот тут непонятки..
Re: ARM7 с нуля
на pll Mul = 11 (+1), Div 0 (+1)
на clk делитель 4
на clk делитель 4
Re: ARM7 с нуля
ARM7 писал(а):Круто! А поточнее обьяснить..? Цитата-
PLL позволяет входную тактовую частоту, находящуюся в пределах от 10 до 25 МГц,
умножать, получая внутреннюю тактовую частоту в пределах от 10 до 60 МГц. Множитель должен
быть целым числом в диапазоне от 1 до 32 (для LPC2106 – от 1 до 6).-Это ясно.
Частота работы внутреннего управляемого генератора должна находится в пределах от 1566 до 320 МГц, что требует наличия дополнительного делителя, для приведения в соответствие выходной частоты, рабочей частое кристалла. Выходной делитель может работать с коэффициентом 2,4,8 и 16. Минимальное значение для делителя – 2.-Вот тут непонятки..
Элементарно.
частота PLL должна быть в диапазоне 156-320мхз
частота PLL = частота кварца * Mul / Div
частота ядра = PLL / N, где N =2,4,8,16
Re: ARM7 с нуля
Элементарно для вас, а для меня не ясно- почему нужен внутренний управляемый генератор, который должен находится в пределах от 1566 до 320 МГц, раз подключен 12 мгц кварц-умножитель ставим на 6=получается 72 мгц, и всё, а остальное зачем, что за "внутренний управляемый генератор, который должен находится в пределах от 1566 до 320 МГц", зачем это? обьясните мне(и не только мне наверно) тупому,только популярно 

