aaarrr 69 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба AT91C_BASE_PIOA->PIO_OWER = 0xFF0000FF; AT91C_BASE_PIOA->PIO_ODSR = 0xYY0000ZZ; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба aaarrr спасибо, то что надо. то есть OWER нужно включать единожды? И все что в нем единица будет рабоать как старый добрый PORTA=0xAA ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба то есть OWER нужно включать единожды? Можно единожды. И все что в нем единица будет рабоать как старый добрый PORTA=0xAA ? При записи в ODSR - да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба А второй строкой вы что хортели сделать?Сбросить в 0 те биты, которые равны нулю в байтах a и b. Для этого на месте этих битов надо записать единицы в CODR. НИже код - наличие/присутствие строки ничего в симуляторе не изменило.Естественно - результат вашего выражения - ноль, а запись нулевых битов в CODR не имеет эффекта. Именно поэтому ваши средние биты остаются нетронутыми в моей записи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 13 мая, 2010 Опубликовано 13 мая, 2010 (изменено) · Жалоба Тьфу, тфу разобрался. Напаял на плату светодиодов, сделал через (1<<i) в цикле бегущий огонь (OSDR) и заполняющийся столбик (SODR). Разобрался почему у меня не запускался код в RAM. ТОлько объясните моему детскому мозгу, чем же контроллер порта в ARM круче чем в AVR, коль требует к себе такого отношения? P.S. Сцк, интересный однако, камень, почему я не напрягся с ним раньше?... Изменено 13 мая, 2010 пользователем zheka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба ТОлько объясните моему детскому мозгу, чем же контроллер порта в ARM круче чем в AVR, коль требует к себе такого отношения? Какого отношения - чтения документации? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 13 мая, 2010 Опубликовано 13 мая, 2010 · Жалоба Какого отношения - чтения документации? Представляю, что случится с zheka, когда он узнает о, например, существовании Luminary :) - там 20 регистров за каждым восьмибитовым GPIO + еще восемь в bit-band итого 28 :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zheka 1 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Какого отношения - чтения документации? Не спорю. Но описание OWER и ODSR в документации не сразу наталкивает на мысль что это решение моей проблемы. Если бы вам дали задание найти кухонный нож, а на коробке было бы написано что-то вроде "твердотельный дезинтегратор органических энергоносителей для питания билогических систем" вы бы сразу догадались что в коробке то что вам нужно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vallav 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба А причем тут какое-либо ядро к организации GPIO конкретного контроллера? В отношении Cortex-M3, ну там разве только от ядра bit-band может быть использован для частичной эмуляции помянутых Вами LPC-шных SET/CLR А при чем тут bit-band и частичная эмуляция? Bit-band - это четвертый способ ввода/вывода в регистры - с побитовой адресацией. И все они не эмулируются а существуют на аппаратном уровне - в железе. Или Вы имели в виду, что нужно было вместо "переходите на кортекс" сказать "переходите на lpc1xxx"? Но прямо об этом сказать постеснялись... Тьфу, тфу разобрался. Напаял на плату светодиодов, сделал через (1<<i) в цикле бегущий огонь (OSDR) и заполняющийся столбик (SODR). Разобрался почему у меня не запускался код в RAM. ТОлько объясните моему детскому мозгу, чем же контроллер порта в ARM круче чем в AVR, коль требует к себе такого отношения? P.S. Сцк, интересный однако, камень, почему я не напрягся с ним раньше?... Да не, просто чип кривоватый. Ваша задача на lpc1768 делается так: LPC_GPIO0->FIOPIN0=a; // вывод в младший байт порт_0 байта a LPC_GPIO0->FIOPIN3=b; // вывод в старший байт порт_0 байта b Но тут беда в другом - не все биты порта выведены на пины. Почему? А кто же его знает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Или Вы имели в виду... Я имел ввиду, то, что я написал - Ваши расуждения о свойствах GPIO конкретного LPC нималейшего отношения к какому-либо ядру не имеют и только по факту переходе на ядро Cortex-M3 счастья от обладания такими GPIO не появится. Все. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vallav 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Я имел ввиду, то, что я написал - Ваши расуждения о свойствах GPIO конкретного LPC нималейшего отношения к какому-либо ядру не имеют и только по факту переходе на ядро Cortex-M3 счастья от обладания такими GPIO не появится. Все. Только у lpc GPIO реализовано корректно? Как ячейка памяти. То есть поддерживает команду - вывод значения регистра в память? У остальных производителей микропроцессоров на ядре кортекс GPIO не поддерживает этой команды и ее приходится эмулировать? Извините, я этого не знал. И что Вы так нервничаете? Сказали бы - есть производители кортексов, у которых GPIO кривое, и все дела... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Сказали бы - есть производители кортексов, у которых GPIO кривое, и все дела... Есть производители микроконтроллеров, использующие Cortex ядро. Как они сделают порты - их дело. Обычно делают, как надо. Это не вытекает из Cortex напрямую. Кстати, bit-band для портов - вещь мало нужная. Вполне должно хватать и тех регистров, которые отвечают за биты порта. Для того они и созданы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vallav 0 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Есть производители микроконтроллеров, использующие Cortex ядро. Как они сделают порты - их дело. Обычно делают, как надо. Это не вытекает из Cortex напрямую. Кстати, bit-band для портов - вещь мало нужная. Вполне должно хватать и тех регистров, которые отвечают за биты порта. Для того они и созданы. Вы в курсе, что в кортексе нет пространства ввода-вывода. И GPIO отображается на память. В кортексе есть команды записи в память значения региситра. Если по адресу GPIO стандартная команда ядра не работает - GPIO реализовано криво. Согласны? Кстати, есть такие кортексы, в которых эта команда для GPIO не реализована? Или это чисто теоретические рассуждения - мол вполне может быть не реализована... А в SAM7 насамом деле нет команды записи из регистра в GPIO? А вот что Вы сюда bit-band пристроили, непонеятно. Если и мало нужная то вроде и не мешает... А понадобится, используем. По этому поводу не ко мне, это не я заявлял - "В отношении Cortex-M3, ну там разве только от ядра bit-band может быть использован для частичной эмуляции помянутых Вами LPC-шных SET/CLR" На мой вопрос - это про что - ответа не получено... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Вот и Вы, похоже, нервничаете :) У ядра Cortex, которое Вы упомянули, есть только адресное пространство для периферийных устройств 0x40000000-0x5FFFFFFF. Какие там будут устройства, зависит от производителя конкретного микропроцессора. Когда Вы сказали "переходите на Cortex", подразумевая там некие регистры портов, это вызвало справедливое замечание zltigo. Надеюсь, я объяснил правильно? А bit-band я просто так упомянул, высказал свое мнение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 140 14 мая, 2010 Опубликовано 14 мая, 2010 · Жалоба Вы в курсе, что в кортексе нет пространства ввода-вывода. И GPIO отображается на память. В кортексе есть команды записи в память значения региситра. Вы в курсе, что в ARM7 (и в AT91SAM7 в частности) нет пространства ввода-вывода? И GPIO отображается на память? В ARM7 есть команды записи в память значения регистра. И чем же тогда кортекс лучше? А в SAM7 насамом деле нет команды записи из регистра в GPIO?Если вы этого не знаете, то как можете делать вывод что кортекс лучше? На мой вопрос - это про что - ответа не получено...Это про LPC и SAM7, которые вы обвиняете в кривизне. Как выясняется - даже не зная, как они устроены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться