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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Передача в качестве параметра порта ввода-вывода, как?
singlskv
сообщение Oct 8 2007, 16:51
Сообщение #16


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(rezident @ Oct 8 2007, 20:42) *
Потому что порт это аппаратура, "железка" т.с., а не переменная. И оптимизировать обращение к порту компилятор не имеет права.
Проблемма в том что я обращения к портам еще не увидел smile.gif
А читать структру содержащую адреса портов можно и через volatile, тока зачем ?
Go to the top of the page
 
+Quote Post
ReAl
сообщение Oct 8 2007, 16:54
Сообщение #17


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(singlskv @ Oct 8 2007, 18:19) *
Объясните мне пожалуйста, зачем эту структуру содержащую адреса регистров портов нужно объявлять volatile ? Недопонимаю...
В данном конкретном случае - может и не нужно. Но рано или поздно захочется написать
while( pport->pin & mask ) { }
и тут уже в полный рост встанет то, что оптимизатор компилятора не имеет права делать предположения типа "раз только что прочитано это значение, то ещё раз его читать не нужно".

Цитата(singlskv @ Oct 8 2007, 18:51) *
Проблемма в том что я обращения к портам еще не увидел smile.gif
А читать структру содержащую адреса портов можно и через volatile, тока зачем ?

Да не адреса портов в структуре!
Вся структура "мапится" на пространство ввода-вывода, у нас указатель на структуру, мы говорим, что она лежит по такому-то адресу, а там не память, а порты.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
singlskv
сообщение Oct 8 2007, 17:14
Сообщение #18


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(ReAl @ Oct 8 2007, 20:54) *
Да не адреса портов в структуре!
Вся структура "мапится" на пространство ввода-вывода, у нас указатель на структуру, мы говорим, что она лежит по такому-то адресу, а там не память, а порты.

В таком варианте, согласен, тока я не понял как предполагается реализация того что спрашивал
автор поста, те по сути, нужно некоторое количество например входов, которые "произвольным"
образом размазаны по портам и их нужно опрашивать.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Oct 8 2007, 20:01
Сообщение #19


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(singlskv @ Oct 8 2007, 19:14) *
В таком варианте, согласен, тока я не понял как предполагается реализация того что спрашивал автор поста, те по сути, нужно некоторое количество например входов, которые "произвольным" образом размазаны по портам и их нужно опрашивать.
Ну это у топикстартера спрашивать надо. По-видимому,

Код
ResetAll() {
    OneWireReset(channel1_pport, channel1_mask);
    OneWireReset(channel2_pport, channel2_mask);
    OneWireReset(channel3_pport, channel3_mask);
}


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
AlexMad
сообщение Oct 13 2007, 19:37
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 262
Регистрация: 18-02-05
Из: SPb
Пользователь №: 2 743



Цитата(ReAl @ Oct 9 2007, 00:01) *
Ну это у топикстартера спрашивать надо. По-видимому,

Код
ResetAll() {
    OneWireReset(channel1_pport, channel1_mask);
    OneWireReset(channel2_pport, channel2_mask);
    OneWireReset(channel3_pport, channel3_mask);
}

Именно так и есть. ReAl - спасибо, внимательно изучил ваш код и нашел грабли у себя. Теперь все сделано именно так.
Go to the top of the page
 
+Quote Post

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

 


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


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