реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Порты от H до L в ATMEGA2560
vadimp61
сообщение May 19 2016, 05:02
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 599
Регистрация: 28-08-08
Из: Ростов папа
Пользователь №: 39 872



Какая нотация обращения к битам портов начиная с H до L
для записи битов и для чтения битов.
Работаю в CV 2.05

Сообщение отредактировал vadimp61 - May 19 2016, 05:11
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
desh
сообщение May 19 2016, 05:54
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 113
Регистрация: 25-10-07
Из: Краснодар
Пользователь №: 31 725



Цитата(vadimp61 @ May 19 2016, 08:02) *
Какая нотация обращения к битам портов начиная с H до L
для записи битов и для чтения битов.


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

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


Сочувствую. Сталкивался.
Go to the top of the page
 
+Quote Post
Ferrum
сообщение May 19 2016, 11:06
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 6-08-15
Из: город Москва
Пользователь №: 87 869



Не знаю как в CV 2.05, но с такой проблемой сталкивался при написании программ на ассемблере.
Точно не выяснял по какой причине, но некоторые регистры портов ввода-вывода ведут себя как регистры оперативной памяти (регистры памяти SRAM контроллера), то есть для записи и чтения регистров ввода-вывода используются команды out и in, а для записи и чтения регистров SRAM команды sts и lds, так вот уже при конфигурировании (настройки) портов ввода-вывода часть регистров настраивается при помощи команды out, а часть при помощи команды sts.
Go to the top of the page
 
+Quote Post
KRS
сообщение May 19 2016, 11:13
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Ferrum @ May 19 2016, 14:06) *
при написании программ на ассемблере.
Точно не выяснял по какой причине,

Все таки при использовании асма - надо знать архитектуру biggrin.gif
Go to the top of the page
 
+Quote Post
Onkel
сообщение May 19 2016, 17:42
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 708
Регистрация: 8-05-11
Из: Чг
Пользователь №: 64 861



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

сделайте шаблон,назначив порту, нотация которого непонятна, например iwire и посмотрите в шаблоне кода.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение May 19 2016, 18:34
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Судя по тому, что автор темы поместил точку с запятой в конец части строк с 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 - May 19 2016, 18:40
Go to the top of the page
 
+Quote Post
Копейкин
сообщение May 20 2016, 09:44
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



А зачем последовательности заключены в операторы do{...}while(0) ?
Блоки ведь можно было просто в фигурные скобки забрать.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 20 2016, 10:27
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Копейкин @ May 20 2016, 12:44) *
А зачем последовательности заключены в операторы do{...}while(0) ?
Google-> "do while(0)". Возможно, вам попадутся ссылки и на этот форум.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:12
Рейтинг@Mail.ru


Страница сгенерированна за 0.01413 секунд с 7
ELECTRONIX ©2004-2016