Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.12.2011, 11:45
|
|
Вид на жительство
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от RECTO
|
movlw 1
xorwf PORTB, f
|
Должно подойти, проц PIC16F877A, только у меня там задержки нет.
|
|
|
|
03.12.2011, 11:57
|
|
Гражданин KAZUS.RU
Регистрация: 14.11.2008
Сообщений: 701
Сказал спасибо: 298
Сказали Спасибо 283 раз(а) в 193 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от Slava-martyn
|
Должно подойти, проц PIC16F877A, только у меня там задержки нет.
|
Да, без задержки он будет красиво мигать.
|
|
|
|
03.12.2011, 12:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от kittec
|
И эта команда была и есть во всех АВР, и "старых" и "новых".
|
учите матчасть, вьюнош!
сравните м8 и м88, s2313 и t2313, напишите отчет, огласите нам и приходите на собеседование
(подсказка - на телесиськах надцать лет тому мы с AVR/Mbedder-om приводили список)
|
|
|
|
03.12.2011, 12:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 22.06.2004
Адрес: Харьков
Сообщений: 1,488
Сказал спасибо: 3,207
Сказали Спасибо 3,010 раз(а) в 686 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от kittec
|
И эта команда была и есть во всех АВР, и "старых" и "новых".
|
Команда SBI есть, но во многих новых AVR РАБОТАЕТ эта команда.
В старых (AT90S2313) PINx только для чтения
Для Slava-martyn наши рассуждения не понадобятся, у него PIC.
|
|
|
|
03.12.2011, 12:41
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от alvadep
|
В выходной регистр RB0 записан 0. При чтении RB0 (как бы не был настроен порт, читаем с пина, а не с регистра), мы ожидает там 0, но прошла помеха и мы считали 1. Теперь инвертируем и получаем тоже состояние, что и было. И такие случаи не редки.
|
Уточню, пожалуй... Т. к. сей вопрос есть "тайна за семью печатями" даже не для начинающих...
В Микрочиповской апноте чётко сказано... бесовство с RMW возникает в случаях: повышенная ёмкость нагрузки и/или повышенная нагрузка на пин по току, когда уже не выдерживается текущее состояние пина, по причине конечного сопротивления его выходного каскада... Если эти два фактора нивелированы, то никаких козней с RMW не возникает... Т.е. если не махать ногами на максимальной частоте (сказывается собственная ёмкость пина, монтажа и нагрузки) и не грузить пин чрезмерно, то всё работает как надо...
Использование фантомного порта (дополнительной переменной) всегда даёт 100% правильный результат (не забывая про атомарность)...
|
|
|
|
03.12.2011, 12:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от st_1
|
Использование фантомного порта (дополнительной переменной) всегда даёт 100% правильный результат
|
Правильно на 100%.
|
|
|
|
03.12.2011, 15:06
|
|
Вид на жительство
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
|
Re: Мигание светодиодом :)
Получилось!
PHP код:
|
MAIN ; Метка для перехода
; Инверсия переменной D0
MOVLW B'00000001' ; Загрузить B'00001000' в регистр W
XORWF LED,f ; Побитное "исключающее ИЛИ" переменной и W
BTFSC LED,D0
BSF PORTD,0 ; Включить светодиод D1
BTFSS LED,D0
BCF PORTD,0 ; Выключить светодиод D1
GOTO MAIN ; Цикл MAIN
|
|
|
|
|
03.12.2011, 15:14
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,667
Сказал спасибо: 74
Сказали Спасибо 1,802 раз(а) в 654 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от alvadep
|
А чем порт В отличается от порта А?
|
В серии 16Fххх RA4 имеет выход с открытым стоком. То есть, если в выходную защелку этого разряда записана "1", и линия сконфигурирована на выход, то выход имеет высокоомное состояние. И тогда вполне возможна ситуация, которую Вы описывали.
Сообщение от alvadep
|
Тут дело не в смене конфигурации. Пример. В выходной регистр RB0 записан 0. При чтении RB0 (как бы не был настроен порт, читаем с пина, а не с регистра), мы ожидает там 0, но прошла помеха и мы считали 1.
|
Какая помеха, у Вас ножка МК стабильно на "земле" сидит, когда в выходной регистр записан 0.
Сообщение от alvadep
|
Теперь инвертируем и получаем тоже состояние, что и было. И такие случаи не редки.
|
Мильён раз так уже делал, всё работает стабильно. Конечно, нужно внимательно следить за тем, про что уже здесь говорили. Во-первых, при переконфигурации порта смотреть, чтобы на выходе не оказалось случайных значений. И во-вторых, не нагружать порты.
|
|
|
|
03.12.2011, 15:28
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,667
Сказал спасибо: 74
Сказали Спасибо 1,802 раз(а) в 654 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от Slava-martyn
|
Получилось!
PHP код:
|
MAIN ; Метка для перехода ; Инверсия переменной D0 MOVLW B'00000001' ; Загрузить B'00001000' в регистр W XORWF LED,f ; Побитное "исключающее ИЛИ" переменной и W BTFSC LED,D0 BSF PORTD,0 ; Включить светодиод D1 BTFSS LED,D0 BCF PORTD,0 ; Выключить светодиод D1 GOTO MAIN ; Цикл MAIN
|
|
А зачем так сложно, двумя командами сделать не захотели?
Скажу по секрету: хотя Вы здесь и используете дополнительную переменную, которая "всегда даёт 100% правильный результат", стабильность работы в данном случае всё равно не обеспечена (чем нас здесь так пугает alvadep). Потому что команды " BSF PORT" и " BCF PORT" тоже работают по принципу "чтение-модификация-запись". То есть, с ножек МК сначала считываются реальные значения, затем в полученном байте модифицируется указанный бит, после чего этот байт целиком записывается в выходные защелки порта. Так-то...
Вывод - "XORWF PORTD, F" был бы ничуть не хуже, но зато как проще!
Последний раз редактировалось RECTO; 03.12.2011 в 15:36.
|
|
|
|
03.12.2011, 16:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от RECTO
|
чем нас здесь так пугает alvadep
|
Я ни кого не пугаю, просто пытаюсь предупредить.
Цитата:
|
Мильён раз так уже делал, всё работает стабильно
|
на столе, это не значит что оно будет работать в других условиях.
Цитата:
|
Какая помеха, у Вас ножка МК стабильно на "земле" сидит, когда в выходной регистр записан 0.
|
сопротивление открытого ключа имеет конечное значение.
Цитата:
|
Потому что команды "BSF PORT" и "BCF PORT" тоже работают по принципу "чтение-модификация-запись".
|
команды " BSF PORT" и " BCF PORT" однозначно влияют на указанный разряд.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:19.
|
|