Перейти к содержанию
    

Порты от H до L в ATMEGA2560

Какая нотация обращения к битам портов начиная с H до L

для записи битов и для чтения битов.

Работаю в CV 2.05

post-39872-1463634103_thumb.png

Изменено пользователем vadimp61

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какая нотация обращения к битам портов начиная с H до L

для записи битов и для чтения битов.

 

Должна быть такая же. Смотрите заголовочные файлы. Вероятно там чего то не дописали.

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

В таком случае только второй вариант.

 

Работаю в CV 2.05

 

Сочувствую. Сталкивался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю как в CV 2.05, но с такой проблемой сталкивался при написании программ на ассемблере.

Точно не выяснял по какой причине, но некоторые регистры портов ввода-вывода ведут себя как регистры оперативной памяти (регистры памяти SRAM контроллера), то есть для записи и чтения регистров ввода-вывода используются команды out и in, а для записи и чтения регистров SRAM команды sts и lds, так вот уже при конфигурировании (настройки) портов ввода-вывода часть регистров настраивается при помощи команды out, а часть при помощи команды sts.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

при написании программ на ассемблере.

Точно не выяснял по какой причине,

Все таки при использовании асма - надо знать архитектуру :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какая нотация обращения к битам портов начиная с H до L

для записи битов и для чтения битов.

Работаю в CV 2.05

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Судя по тому, что автор темы поместил точку с запятой в конец части строк с 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)

Изменено пользователем Genadi Zawidowski

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем последовательности заключены в операторы do{...}while(0) ?

Блоки ведь можно было просто в фигурные скобки забрать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем последовательности заключены в операторы do{...}while(0) ?
Google-> "do while(0)". Возможно, вам попадутся ссылки и на этот форум.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...