Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Порты от H до L в ATMEGA2560
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
vadimp61
Какая нотация обращения к битам портов начиная с H до L
для записи битов и для чтения битов.
Работаю в CV 2.05
desh
Цитата(vadimp61 @ May 19 2016, 08:02) *
Какая нотация обращения к битам портов начиная с H до L
для записи битов и для чтения битов.


Должна быть такая же. Смотрите заголовочные файлы. Вероятно там чего то не дописали.
Хотя, так как порты H и выше находятся выше IO памяти (той, в котором работают инструкции CBI и SBI), то может быть он просто в принципе не умеет с с ними работать в таком ключе.
В таком случае только второй вариант.

Цитата(vadimp61 @ May 19 2016, 08:02) *
Работаю в CV 2.05


Сочувствую. Сталкивался.
Ferrum
Не знаю как в CV 2.05, но с такой проблемой сталкивался при написании программ на ассемблере.
Точно не выяснял по какой причине, но некоторые регистры портов ввода-вывода ведут себя как регистры оперативной памяти (регистры памяти SRAM контроллера), то есть для записи и чтения регистров ввода-вывода используются команды out и in, а для записи и чтения регистров SRAM команды sts и lds, так вот уже при конфигурировании (настройки) портов ввода-вывода часть регистров настраивается при помощи команды out, а часть при помощи команды sts.
KRS
Цитата(Ferrum @ May 19 2016, 14:06) *
при написании программ на ассемблере.
Точно не выяснял по какой причине,

Все таки при использовании асма - надо знать архитектуру biggrin.gif
Onkel
Цитата(vadimp61 @ May 19 2016, 08:02) *
Какая нотация обращения к битам портов начиная с H до L
для записи битов и для чтения битов.
Работаю в CV 2.05

сделайте шаблон,назначив порту, нотация которого непонятна, например iwire и посмотрите в шаблоне кода.
Genadi Zawidowski
Судя по тому, что автор темы поместил точку с запятой в конец части строк с define, он знает толк в маршрутах по граблям. Мы ещё не видели текста, где define используются.
Автору: посмотрите как подобные вещи делаются в правильных проектах:

Код
    #define DISPLAY_BUS_DATA_SET(v) do { \
        LCD_DATA_PORT = \
            (LCD_DATA_PORT & ~ LCD_DATAS_BITS) | \
            (((v) << LCD_DATAS_BIT_LOW) & LCD_DATAS_BITS); \
        } while (0)



Код
    #define LCD_STROBE_PORT_S(v) do {    TARGET_PORT_S(7, v); } while (0)
    #define LCD_STROBE_PORT_C(v) do {    TARGET_PORT_C(7, v); } while (0)
Копейкин
А зачем последовательности заключены в операторы do{...}while(0) ?
Блоки ведь можно было просто в фигурные скобки забрать.
Сергей Борщ
QUOTE (Копейкин @ May 20 2016, 12:44) *
А зачем последовательности заключены в операторы do{...}while(0) ?
Google-> "do while(0)". Возможно, вам попадутся ссылки и на этот форум.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.