Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 21.03.2010, 12:05  
neiver
Временная регистрация
 
Регистрация: 30.07.2007
Сообщений: 51
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
neiver на пути к лучшему
По умолчанию Re: О программировании AVR на C++.

kison, Вы абсолютно правы на счет недостатков. Собственно о них и как от них избавится я собирался писать далее. Причем не теряя всех достоинств. Это только первый пример. Не всё сразу.
Реклама:
neiver вне форума  
Непрочитано 21.03.2010, 12:43  
neiver
Временная регистрация
 
Регистрация: 30.07.2007
Сообщений: 51
Сказал спасибо: 1
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
neiver на пути к лучшему
По умолчанию Re: О программировании AVR на C++.

Сообщение от kison Посмотреть сообщение
В общем реальный плюс один - лентяям, не желающим один раз за проект написать несколько дефайнов, способ понравится.
Да я ленивый - это минус,
Но я пишу на Си плюс плюс...

ЗЫ
Писать дефайны один раз, а использовать - много.
neiver вне форума  
Непрочитано 21.03.2010, 13:47  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: О программировании AVR на C++.

Ногодрыганье, как по мне, это не самое главное предназначение МК. И здесь, ваши примеры - просто примеры. Мне кажется многие пробовали соптимизировать работу с портами и, похоже, большинство приходит к старому сишному стилю. К дефайнам.
Как для меня, то это не только программирование. Файл определений ног - это визитная карточка проекта (с точки зрения схемотехники) или вариантов платы. То есть он хорош сам по себе.
И потом - если мы стремимся к абстракции - то зачем вводить абстракцию на уровне пина? Почему не выбрать сразу ф-цию выполняемую этим пином?
Например ввести "светодиод" со своими методами. ШД.

Это я не в критику. Тема интересна, просто пример с портами - чуть за уши притянут, на мой взгляд. Давайте дальше двигайтесь.
SasaVitebsk вне форума  
Непрочитано 21.03.2010, 14:14  
Gnider
Почётный гражданин KAZUS.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
Gnider на пути к лучшему
По умолчанию Re: О программировании AVR на C++.

Современная тэндэнция - отходить от прямого ногодрыгания.
Фактически это осталось только в управлении реле,светодиодами,кнопки и джамперы.
Там особо скорость и оптимизация не нужна.
Gnider вне форума  
Непрочитано 21.03.2010, 14:30  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: О программировании AVR на C++.

neiver, отлично все пишете, пожалуйста, продолжайте!
Я сам в свое время от дефайнов отказался, так как время не резиновое, и ножки контроллера, кстати, тоже, всё на один порт редко когда удается повесить.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Непрочитано 21.03.2010, 15:45  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: О программировании AVR на C++.

Сообщение от alexgap Посмотреть сообщение
Я сам в свое время от дефайнов отказался, так как время не резиновое, и ножки контроллера, кстати, тоже, всё на один порт редко когда удается повесить.
Вы бы свою позицию объяснили что ли. А то все, что выше точно так же реализуется через дефайны. И нельзя сказать что писанины больше - практически столько же. Собственно и недостатки будут те же - работа с каждым выводом отдельно. Это иногда существенно замедляет выполнение. Вообще пример с GPIO очень удачный. Что может быть проще махания ножками? Однако и тут можно заблудиться.
kison вне форума  
Непрочитано 21.03.2010, 16:08  
alexgap
Гражданин KAZUS.RU
 
Аватар для alexgap
 
Регистрация: 08.07.2006
Сообщений: 886
Сказал спасибо: 119
Сказали Спасибо 1,110 раз(а) в 177 сообщении(ях)
alexgap на пути к лучшему
По умолчанию Re: О программировании AVR на C++.

Сообщение от kison Посмотреть сообщение
Вы бы свою позицию объяснили что ли. А то все, что выше точно так же реализуется через дефайны
Нужно было пару раз подключать HD44780-совместимый LCD через I2C расширитель ввода-вывода. Через дефайны, конечно же, это было нереально. А вот через абстракцию пина - запросто.
Скорость, конечно же, в этом случае страдает.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
alexgap вне форума  
Непрочитано 21.03.2010, 16:43  
kison
Почётный гражданин KAZUS.RU
 
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: О программировании AVR на C++.

Сообщение от alexgap Посмотреть сообщение
Нужно было пару раз подключать HD44780-совместимый LCD через I2C расширитель ввода-вывода. Через дефайны, конечно же, это было нереально. А вот через абстракцию пина - запросто.
Любопытно. Я в таком случае пользуюсь абстракцией всего индикатора Хотя и с пинами это тоже реально - #define это по сути обертка, а внутри может сидеть что угодно вплоть до функций. А с индикатором пример все же приведите. Хотя бы кусочек - строб E. Думаю не только мне любопытно.
kison вне форума  
Непрочитано 21.03.2010, 17:33  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: О программировании AVR на C++.

Сообщение от kison Посмотреть сообщение
Любопытно. Я в таком случае пользуюсь абстракцией всего индикатора Хотя и с пинами это тоже реально - #define это по сути обертка, а внутри может сидеть что угодно вплоть до функций. А с индикатором пример все же приведите. Хотя бы кусочек - строб E. Думаю не только мне любопытно.
+10.
Написание файла определений ножек и функций займёт от силы 20 минут по схеме принципиальной. Никакого отношения к библиотеке LCD в частности - не имеет. То есть библиотека не переписывается ни в коем разе. Я даже не представляю, как надо её написать, чтобы при изменении ножек - ломалась библиотека. Более того, такая библиотека как HD44780, при правильном написании, будет работать на любом МК. Если идёт управление то выглядит типа "SET_RS;" Если данными, то типа функцией.

Если работаете с портом, то объявляйте соответственно типа
DDRHDDATA &= ~MASKA_HDDATA;
PORTHDDATA |= MASKA_HDDATA;

То есть в самом файле я определяю и порты и работу с ними. Указываю особенности при работе с разными версиями пп. Например выпускался проект сначала на 1 плате, потом переразвели и некоторые ф-ции поменяли. Но ф-ции и проект - это разные вещи. Так зачем мне несколько проектов поддерживать? Вот эти особенности я описываю в файле определений. А проект общий. Иначе пойдут несовместимости, затрудняется устранение хомутов и поддержка проектов.
SasaVitebsk вне форума  
Непрочитано 21.03.2010, 17:47  
Gnider
Почётный гражданин KAZUS.RU
 
Регистрация: 30.06.2005
Сообщений: 3,399
Сказал спасибо: 5
Сказали Спасибо 431 раз(а) в 306 сообщении(ях)
Gnider на пути к лучшему
По умолчанию Re: О программировании AVR на C++.

Проблемы возникают когда ножки контроллера разбросаны по разным портам,а до этого были в одном.Бывает в одном случае работаем по прерыванию,в другом случае просто задержкаи тд...
Вообщем универсальную библиотеку трудно сделать. А даже если сделать то появиться щадача где она не пройдет по обьему или скорости.
Gnider вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AVR JTAGICE MKII - проблемы firmware... Luxurious AVR 25 20.10.2014 10:50
Ищу книги по AVR rocky7 Микроконтроллеры, АЦП, память и т.д 9 17.03.2010 12:43
AVR. Как правильно совместить LCD и ISP на PORTB? Serg3621 Микроконтроллеры, АЦП, память и т.д 8 04.02.2010 14:03


Часовой пояс GMT +4, время: 21:17.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot