-
- Я что-то такое писал - не жреть. Порт - он sfr, написать -=John=-(67 знак., 11.11.2008 19:05)
- Что-то вы меня запутали. Не поленился, расчехлил IAR: Сергей Борщ(1797 знак., 11.11.2008 23:12)
- ну пусть будет void func (uint8_t volatile __io *port, uint8_t mask). А В пиках с понятной адресацией - как? - Сергей Борщ(11.11.2008 22:01)
- 4.20A не хочет - ругается Vit(103 знак., 11.11.2008 22:08)
- Хм, а привести __io к простому указателю он дает? Ведь все порты отображаются в АП данных, тока адреса на 0x20 больше. - she(11.11.2008 22:14)
- Ну дык даёт. Мне пофиг 0x20 там или сколько - компилер это умеет разгребать - нафига ему это ещё раз объяснять? - Vit(11.11.2008 22:36, ссылка)
- Сам численное значение модифицирует? Ух ты. Умный, зараза. - she(11.11.2008 22:43)
- Ну дык даёт. Мне пофиг 0x20 там или сколько - компилер это умеет разгребать - нафига ему это ещё раз объяснять? - Vit(11.11.2008 22:36, ссылка)
- Хм, а привести __io к простому указателю он дает? Ведь все порты отображаются в АП данных, тока адреса на 0x20 больше. - she(11.11.2008 22:14)
- 4.20A не хочет - ругается Vit(103 знак., 11.11.2008 22:08)
- Попробовал - компилится, но есть нюансы;) Vit(248 знак., 11.11.2008 20:20)
- тут ничего не напутано? Какой смысл в приведении типа внутри функции? Скорее оно нужно при вызове. - Сергей Борщ(11.11.2008 22:14)
- Из боязни;), так как через __generic не получилось. Я не знаю даже, работает оно или нет. Vit(76 знак., 11.11.2008 22:22)
- если внутри функции приведение не нужно, то на что же ругался компилятор у -=John=-? __generic - вообще неоправданная трата ресурсов в этом случае. Тип параметра известен заранее. - Сергей Борщ(11.11.2008 22:55)
- Понимаю так, что __io это атрибут, порождающий нечто похожее на #define PORTn (*(unsigned char*)(_ADDR+IO_BASE)), где IO_BASE равно известному 0x20, потому у него нет явной типизации, но некоторые действия как с указателями всё-таки применимы. Vit(729 знак., 12.11.2008 01:27)
- Атрибут __io еще меняет порядок чтения/записи байт в 2-х байтовых регистрах. Например позволяет работать с таймером как с int. - Михаил Е.(12.11.2008 11:44)
- Спасибо, интересно - Vit(12.11.2008 12:09)
- Атрибут __io еще меняет порядок чтения/записи байт в 2-х байтовых регистрах. Например позволяет работать с таймером как с int. - Михаил Е.(12.11.2008 11:44)
- Понимаю так, что __io это атрибут, порождающий нечто похожее на #define PORTn (*(unsigned char*)(_ADDR+IO_BASE)), где IO_BASE равно известному 0x20, потому у него нет явной типизации, но некоторые действия как с указателями всё-таки применимы. Vit(729 знак., 12.11.2008 01:27)
- Проверил в C-Spy - фунциклирует - Vit(11.11.2008 22:32)
- если внутри функции приведение не нужно, то на что же ругался компилятор у -=John=-? __generic - вообще неоправданная трата ресурсов в этом случае. Тип параметра известен заранее. - Сергей Борщ(11.11.2008 22:55)
- Из боязни;), так как через __generic не получилось. Я не знаю даже, работает оно или нет. Vit(76 знак., 11.11.2008 22:22)
- тут ничего не напутано? Какой смысл в приведении типа внутри функции? Скорее оно нужно при вызове. - Сергей Борщ(11.11.2008 22:14)
- Индекс периферийной микросхемы все равно нужно как-то добавить - создать массив указателей на порты, потом массив масок... Потом компилятор вызовет подпрограмму умножения для вычисления индекса. Внешне получится красиво, конечно. Но медленно. - Vladimir Ljaschko(11.11.2008 18:58)
- Я что-то такое писал - не жреть. Порт - он sfr, написать -=John=-(67 знак., 11.11.2008 19:05)