Форум Trainsim  

Вернуться   Форум Trainsim > Разное > IT, компьютеры, электроника

Ответ
 
Опции темы Опции просмотра
Старый 19.07.2017, 00:57   #1
Dublin
Матёрый пользователь
 
Аватар для Dublin
 
Регистрация: 24.05.2010
Адрес: Херсон
Сообщений: 1,565
Вы сказали Спасибо: 871
Поблагодарили 695 раз(а) в 285 сообщениях
Dublin стоит на развилке (репутация по умолчанию)
По умолчанию Микроконтроллеры. Всё обо всём.

Решил я немного поизучать эти все дела микроконтрольные (через книжки естественно), и весь вечер ломаю голову над одной проблемой.
Покажу фрагмент программы (микро attiny 2313)
Скрытый текст:

if ((PIND&(1<<PD0))==0)
{
perem=0b10000000;
while(perem !=0)
{
PORTB = ~perem;
perem= perem >> 1;
_delay_ms(200);

}
}
else {
perem=0x00000001;
while (perem !=0) {
PORTB = ~perem;
perem= perem << 1;
_delay_ms(200);

Программа простая как двери: есть 8 светодиодов, которые должны переключатся одна за другой. Не понятен принцип работы цикла с инверсией(~). Если убрать инверсию, то переключение ламп в этом случае происходит, но горят одновременно все лампы.
Если изначально включить инверсию (~perem) то байт 0x00000001 станет 0x11111110, тогда за счет открытости порта должны гореть 7 из 8 ламп (я так думаю, но так не происходит) А дальше по программе если двигать единицу и инвертировать байт, то вообще нифига не пойму, как тогда переключение происходит. Вообщем кто в этом понимает, - объясните на пальцах, пожалуйста.
__________________
хоп хэй лалалэй

Последний раз редактировалось Dublin; 19.07.2017 в 01:01.
Dublin вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо Dublin за это полезное сообщение:
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА

 
Старый 19.07.2017, 21:11   #2
Dublin
Матёрый пользователь
 
Аватар для Dublin
 
Регистрация: 24.05.2010
Адрес: Херсон
Сообщений: 1,565
Вы сказали Спасибо: 871
Поблагодарили 695 раз(а) в 285 сообщениях
Dublin стоит на развилке (репутация по умолчанию)
По умолчанию

Разобрались с ситуацией. Кому интересно - объясню.
Скрытый текст:

Так как один конец диода запитан на "+", другие соответственно подключены на выводы микроконтроллера (то есть необходимо для зажигания подавать "-" (или логический 0) на выход, этот момент мимо головы и пролетел).
А теперь по циклу: Переменной изначально присваивается значение 0b10000000. Далее, в соответствии с циклом, это значение инвертируется, присваивается порту выхода (PORTB) и становится 0b01111111. 7 диод загорелся. Далее происходит побитовый сдвиг единицы в байте (0b01000000) и его инверсия с присвоением (0b10111111). Таким образом происходит поочередный перебор всех светодиодов в одном направлении. (с условием что переменная не равна 0b00000000. Если бы это было так, то 8 светодиодов последовательно бы зажглись и цикл бы закончился). В цикле else же светодиоды мигают в другую сторону.
__________________
хоп хэй лалалэй
Dublin вне форума   Ответить с цитированием
Старый 20.07.2017, 00:59   #3
RUSHPIL
Разработчик
 
Аватар для RUSHPIL
 
Регистрация: 20.06.2008
Адрес: Сергиев-Посад
Сообщений: 1,475
Вы сказали Спасибо: 1,669
Поблагодарили 1,804 раз(а) в 309 сообщениях
RUSHPIL стоит на развилке (репутация по умолчанию)
Отправить сообщение для RUSHPIL с помощью ICQ
По умолчанию

Знакомые картинки с Шпротеуса Тоже пишу программы под чипы Atmel. Правда в Bascom-AVR. Так уж сложилось, что несколько лет назад нужно было править исходник одной железяки и на тот момент я не понимал в программировании ни грамма. А исходник был написан в Баскоме. Поэтому пришлось сесть и начать... С тех пор пишу на Бейсике прошивки. Но посматриваю в сторону Си. Вы в Win AVR пишите или подобном?

Отработку в железе делал сперва на макетках с Atmega8, но когда появились Ардуины, то перешел на них. Гораздо дешевле, чем покупать специализированные отладочные платы за несколько тысяч рублей. Ну а когда устройство отработано, то адаптирую прошивку под нужный камень, делаю печатную плату и юзаю.

Сейчас заинтересовался HMI Nextion:



Позволяет выводит на дисплей инфу из микроконтроллера и вводить данные в него. Все по UART интерфейсу.
RUSHPIL вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо RUSHPIL за это полезное сообщение:
Старый 20.07.2017, 10:52   #4
Dublin
Матёрый пользователь
 
Аватар для Dublin
 
Регистрация: 24.05.2010
Адрес: Херсон
Сообщений: 1,565
Вы сказали Спасибо: 871
Поблагодарили 695 раз(а) в 285 сообщениях
Dublin стоит на развилке (репутация по умолчанию)
По умолчанию

Цитата:
Сообщение от RUSHPIL Посмотреть сообщение
Вы в Win AVR пишите или подобном?
Ну почти - Atmel Studio. Я раньше немного интересовался С++, поэтому выбор языка для меня уже был очевиден. Базовый материал прохожу по книжке Белова А.В, так он там использует и ассемблер и Си; с ассемблером как то я сразу не подружился, а Си он использовал в Codevisionavr, в котором отладчика нет, да и свои подводные камни есть. Единственное чем понравился Codevisionavr - при создании проекта он сразу выдаёт "шпаргалку" на инициализацию портов, таймеров и т.д.

Добавлено через 5 минут
Вот с Ардуино еще не знаком. Рановато пока туда лезть)
__________________
хоп хэй лалалэй
Dublin вне форума   Ответить с цитированием
Старый 21.07.2017, 19:26   #5
RUSHPIL
Разработчик
 
Аватар для RUSHPIL
 
Регистрация: 20.06.2008
Адрес: Сергиев-Посад
Сообщений: 1,475
Вы сказали Спасибо: 1,669
Поблагодарили 1,804 раз(а) в 309 сообщениях
RUSHPIL стоит на развилке (репутация по умолчанию)
Отправить сообщение для RUSHPIL с помощью ICQ
По умолчанию

В итоге все равно придете к Ардуино. Ибо на сегодняшний день нет удобнее и дешевле платформы с Atmel контроллерами на борту. Мне нравится в ней наличие встроенного USB-Uart конвертера, который позволяет прошивать контроллер по USB, не прибегая к использованию ISP программаторов типа USBASP. Плюс куча различных модулей периферрии на все случаи жизни, совместимые с этой платформой. Даже если самому по раздельности покупать микроконтроллер, обвязку к нему из кварца, кондеров и резистора на Reset, сделать плату самому, то выйдет дороже, чем купить Arduino Pro Mini, к примеру.
Ну а раз Вы на Си пишите, то стандартная программная оболочка для разработки программ Ардуины (Arduino IDE) Вам придется по душе
RUSHPIL вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо RUSHPIL за это полезное сообщение:
Старый 21.07.2017, 20:18   #6
Dublin
Матёрый пользователь
 
Аватар для Dublin
 
Регистрация: 24.05.2010
Адрес: Херсон
Сообщений: 1,565
Вы сказали Спасибо: 871
Поблагодарили 695 раз(а) в 285 сообщениях
Dublin стоит на развилке (репутация по умолчанию)
По умолчанию

Читал раньше, читал, не вкурил, а теперь Вы открыли мне глаза. Получается есть готовый модуль, уже с готовой обвязкой, с МК, а к этому модулю можно подсоединять дополнительные модули, которые уже доведенные до ума. Так? То есть не надо заниматься ерундой по изготовлению плат, если есть уже готовые решения. Правда заметил, что младшие модели уже с впаянным процессором, и подбирать соотв. модель платы нужно под свои нужды. Так выходит.
__________________
хоп хэй лалалэй
Dublin вне форума   Ответить с цитированием
Старый 21.07.2017, 20:50   #7
Zlodey
Инженер
 
Аватар для Zlodey
 
Регистрация: 19.04.2008
Адрес: Север
Сообщений: 6,848
Вы сказали Спасибо: 10,521
Поблагодарили 7,116 раз(а) в 2,439 сообщениях
Zlodey стоит на развилке (репутация по умолчанию)
По умолчанию

Ардуино - штука удобная.
К ней всяких доп. модулей, от LAN и Card Reader и до всяких там термодатчиков, акселерометров, GPS и магнитных компасов, дисплеев, сервоприводов (хоть простеньких, хоть мощных, на своём питалове через релюшку) готовых продаётся уйма. И софтину готовую найти можно в виде открытого исходного кода.

Кто роботов лепит из них, кто охранные системы в авто, кто свистелки-перделки, кто "умный дом". У кого на что фантазии хватит.

На работе с Mega, Uno и Pro Mini баловался. Ценники приемлемые вполне.
__________________
Internet is for cat

Последний раз редактировалось Zlodey; 21.07.2017 в 20:56.
Zlodey вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо Zlodey за это полезное сообщение:
Старый 22.07.2017, 01:52   #8
RUSHPIL
Разработчик
 
Аватар для RUSHPIL
 
Регистрация: 20.06.2008
Адрес: Сергиев-Посад
Сообщений: 1,475
Вы сказали Спасибо: 1,669
Поблагодарили 1,804 раз(а) в 309 сообщениях
RUSHPIL стоит на развилке (репутация по умолчанию)
Отправить сообщение для RUSHPIL с помощью ICQ
По умолчанию

Цитата:
Сообщение от Dublin Посмотреть сообщение
Получается есть готовый модуль, уже с готовой обвязкой, с МК
Именно. Если взять младшую модель из линейки - Arduino Pro Mini, то там МК с обвязкой, кнопка сброса, подключенная к Reset контроллера и стабилизатор на 3,3 Вольта для питания периферии (типа дисплеев от Нокиа).

Цитата:
Сообщение от Dublin Посмотреть сообщение
заметил, что младшие модели уже с впаянным процессором, и подбирать соотв. модель платы нужно под свои нужды.
Все модели идут с контроллером на борту. В большинстве случаев это ATMega328, которая нафарширована всем необходимым. Если портов мало, то можно использовать Arduino Mega c ATmega2560.
ATTiny есть смысл использовать, если кране критично энергопотребление. Из готовых модулей на Тини могу посоветовать Digispark с ATTiny85 на борту и софтовой эмуляцией USB интерфейса. На ATTiny2313 готовых решений не встречал.
RUSHPIL вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо RUSHPIL за это полезное сообщение:
Старый 23.07.2017, 00:16   #9
Dublin
Матёрый пользователь
 
Аватар для Dublin
 
Регистрация: 24.05.2010
Адрес: Херсон
Сообщений: 1,565
Вы сказали Спасибо: 871
Поблагодарили 695 раз(а) в 285 сообщениях
Dublin стоит на развилке (репутация по умолчанию)
По умолчанию

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

Последний раз редактировалось Dublin; 23.07.2017 в 00:23.
Dublin вне форума   Ответить с цитированием
Старый 24.07.2017, 02:05   #10
RUSHPIL
Разработчик
 
Аватар для RUSHPIL
 
Регистрация: 20.06.2008
Адрес: Сергиев-Посад
Сообщений: 1,475
Вы сказали Спасибо: 1,669
Поблагодарили 1,804 раз(а) в 309 сообщениях
RUSHPIL стоит на развилке (репутация по умолчанию)
Отправить сообщение для RUSHPIL с помощью ICQ
По умолчанию

Я тоже не приветствую программную оболочку Ардуины, т.к. привык дергать регистрами и отключать ненужную периферию МК, которая по умолчанию запускается при работе в Arduino IDE. Поэтому серьезные программеры не жалуют её из-за отсутствия оптимизации.
Но никто нам не запрещает использовать Ардуины как кусок текстолита с распаянными МК. Тобишь чисто железо. А программы писать в том компиляторе, где нам удобно. В этом весь смак. Вы можете и дальше писать в Atmel Studio и заливать скомпиленный hex в Arduino через штатный загрузчик. Я пользую программу XLoader для заливки своей прошивки в Arduino. При этом пишу прогу в Bascom'e. В платформе Arduino нет жесткой привязки ихнего софта и железа между собой, поэтому спокойно пользуем её как печатную плату с МК и разведенными ногами.
RUSHPIL вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо RUSHPIL за это полезное сообщение:
Старый 24.07.2017, 23:05   #11
Dublin
Матёрый пользователь
 
Аватар для Dublin
 
Регистрация: 24.05.2010
Адрес: Херсон
Сообщений: 1,565
Вы сказали Спасибо: 871
Поблагодарили 695 раз(а) в 285 сообщениях
Dublin стоит на развилке (репутация по умолчанию)
По умолчанию

Я правильно понимаю - создать свои программку, отладить, а потом через стороннюю программу просто экспортнуть hex в МК? А не будет ли проблем с фьюзами или это уже неважно (в данном случае)?
На просторах гугла увидел еще вариант использовать ардуино как программатор. Интересная идея, если на борту вшитый МК. Хотя с другой стороны, можно ведь взять ардуино уно, менять МК (главное чтоб подходил) и прошивать как душе угодно?
__________________
хоп хэй лалалэй
Dublin вне форума   Ответить с цитированием
Старый 25.07.2017, 14:58   #12
E69
Лентяй и флудер
 
Аватар для E69
 
Регистрация: 10.04.2007
Адрес: Транссиб, 3339 км.
Сообщений: 5,645
Вы сказали Спасибо: 2,049
Поблагодарили 2,350 раз(а) в 777 сообщениях
E69 хороший собеседник
По умолчанию

Цитата:
Вот с Ардуино еще не знаком. Рановато пока туда лезть)
Наоборот, он создан для начинающих и проще, чем Атмеловские официальные продукты. Собственная плата ускоряет разработку и действительно может быть дешевле в розницу, хотя для компактных и массовых проектов её применение неудобно. И да, на низкий уровень залезть сложнее, но сейчас возможности таковы, что это оказывается действительно необходимым не так часто.
Единственное, для Ардуино нет симулятора, как у Атмел/avr, тестить программы можно только в железе.
Цитата:
можно ведь взять ардуино уно, менять МК (главное чтоб подходил) и прошивать как душе угодно?
В принципе это можно (обвязку, разумеется, каждый раз придется паять для новых мест установки). Более того, с уно в принципе можно программировать и некоторые другие контроллеры АВР, например, тот же про мини, не имеющий встроенного программатора (хотя удобнее купить программатор для него, чем тянуть провода).
__________________
🚆🚆🚆

Последний раз редактировалось E69; 25.07.2017 в 15:03.
E69 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Winamp велел всем жить долго. E.depo IT, компьютеры, электроника 16 29.11.2013 23:55
установка дополнений: пропускать всё или заменять всё? alevlaslo TrainZ — Об игре 18 24.08.2011 10:40
Тухнет сигнализация на всем маршруте DAVID75 MSTS - Маршруты 6 05.11.2010 19:25
Обо всём, что может ещё понадобиться в законченном маршруте кроме КС, полотна и сигн. NickLon TrainZ - Маршруты и сценарии 28 20.07.2008 07:08


Текущее время: 15:16. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim
TopList Нажми для появления дома Trainsim на карте Intermap
Что это?