Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопросы програмирования LPC2294
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
kuk
Я тут поглядел как устроен порты ввода вывода в lpc2294 и ужаснулся ктоже такое придумал это копец я хочу спросить про то как можно вывести какое то число в порт как я понял устанавливаются они записью 1 в IO0SET а сбрасываются записью 1 в IO0CLR а что касается чтение данных это вообще производится из регистра IOPIN так вот исходя из этого извращения вопрос как кто реализовывал запись и чтение данных в/из порта help.gif
SimpleSoft
Цитата(kuk @ Feb 1 2006, 14:05) *
Я тут поглядел как устроен порты ввода вывода в lpc2294 и ужаснулся ктоже такое придумал это копец я хочу спросить про то как можно вывести какое то число в порт как я понял устанавливаются они записью 1 в IO0SET а сбрасываются записью 1 в IO0CLR а что касается чтение данных это вообще производится из регистра IOPIN так вот исходя из этого извращения вопрос как кто реализовывал запись и чтение данных в/из порта help.gif


// Запись в порт
IO0DIR = 0xFFFFFFFF; //Все GPIO на вывод.
IO0SET = (1<<n), где n-номер бита, который требуется установить.
IO0CLR = (1<<n), где n-номер бита, который требуется сбросить.

//Чтение из порта
IO0DIR = 0x0; // Все GPIO на вход
Value = IO0PIN; // Читаем состояние портов

Очень даже удобно с SET и CLR сделано, по ходу программирования поймёшь. Просто надо изменить подход к программированию портов с 51го biggrin.gif
kuk
Да побитно еще ничего ну я если нужно вывести например 8 битное число то ???
SimpleSoft
Цитата(kuk @ Feb 1 2006, 15:05) *
Да побитно еще ничего ну я если нужно вывести например 8 битное число то ???


// Запись в порт
IO0DIR = 0xFFFFFFFF; //Все GPIO на вывод.
IO0CLR = 0xFFFFFFFF; //Сбрасываем все биты
IO0SET = 0x55; // Выводим в порт 0x55
asen
Да а может можно как то записать в IAR например в 3 байт порта одно байтное число не двигая его в сторону старшего разряда много много раз
aaarrr
Цитата(asen @ Feb 1 2006, 14:35) *
Да а может можно как то записать в IAR например в 3 байт порта одно байтное число не двигая его в сторону старшего разряда много много раз


Ну так напишите IO0SET = (0x55 << 0x18), и ничего больше двигать не надо smile.gif
SimpleSoft
Цитата(aaarrr @ Feb 1 2006, 17:08) *
Цитата(asen @ Feb 1 2006, 14:35) *

Да а может можно как то записать в IAR например в 3 байт порта одно байтное число не двигая его в сторону старшего разряда много много раз


Ну так напишите IO0SET = (0x55 << 0x18), и ничего больше двигать не надо smile.gif



Запись на asm::::
LDR R0, =0xE0028000
MOV R1, 0x55
MVN R2, 0x00
STR R2, [R0, #8]
STR R2, [R0, #0xC]
STR R1, [R0, #4]
vesago
Цитата(asen @ Feb 1 2006, 15:35) *
Да а может можно как то записать в IAR например в 3 байт порта одно байтное число не двигая его в сторону старшего разряда много много раз


Я когда ознакомился с яром для авр и вообще с авр сначала не понял удобства конструкции типа PORT = (0x3 << 2) - PORT = 00001100, но потом очень понравилось. Компилятор вычисляет константы - в данном случае 00001100 и подставляет в качестве операнда. В яре и хедеры на это заточены. В карме мне очень не хватает таких хедеров, где все биты сфр таким образом прописаны. Народ если у кого есть такой хедер может поделитесь?
SimpleSoft
Цитата(vesago @ Feb 2 2006, 12:29) *
Цитата(asen @ Feb 1 2006, 15:35) *

Да а может можно как то записать в IAR например в 3 байт порта одно байтное число не двигая его в сторону старшего разряда много много раз


Я когда ознакомился с яром для авр и вообще с авр сначала не понял удобства конструкции типа PORT = (0x3 << 2) - PORT = 00001100, но потом очень понравилось. Компилятор вычисляет константы - в данном случае 00001100 и подставляет в качестве операнда. В яре и хедеры на это заточены. В карме мне очень не хватает таких хедеров, где все биты сфр таким образом прописаны. Народ если у кого есть такой хедер может поделитесь?



ИМХО. Проще на ассемблере изваять, темболее проще и удобнее ассемблера для процессоров я не встречал.
vesago
Да, действительно, ассемблер у армов замечательный и не сложный (как мне показалось). Но не хочется разбираться с тонкостями архитектуры, досконально вникать в режимы адресации или банально запоминать мнемонику. Хочеться сконцетрироваться на алгоритме цельного устройства.
zltigo
Цитата(vesago @ Feb 2 2006, 10:29) *
В карме мне очень не хватает таких хедеров, где все биты сфр таким образом прописаны. Народ если у кого есть такой хедер может поделитесь?

Так возьмите красивые *.h из IAR. Какие проблемы. Ну разве убрать местами всунутую проверку на IARовский компилятор.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.