Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
25.03.2012, 09:44
|
|
Прописка
Регистрация: 11.06.2005
Сообщений: 266
Сказал спасибо: 9
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
Re: USB коннектор на AVR
Сообщение от Godzilla82
|
Поэтому мы читаем изначальное состония порта и от него уже и пляшем.
|
Как я уже писал, через PORTD - вы не читаете состояние порта... Никогда... Никак...
__________________
Канал в Telegram об МК AVR @EasyAVR
|
|
|
|
25.03.2012, 09:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: USB коннектор на AVR
Сообщение от Prime
|
Как я уже писал, через PORTD - вы не читаете состояние порта... Никогда... Никак...
|
А мне не надо читать состояние ножек порта. Мне надо записать в него то, что в него уже было записано, изменив пару битов. А то, что было записано - хранится в регистре PORTx.
|
|
|
|
25.03.2012, 10:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: USB коннектор на AVR
Сообщение от Prime
|
Как я уже писал, через PORTD - вы не читаете состояние порта... Никогда... Никак...
|
Господа. Разберитесь с терминологией. Состояние порта, состояние пинов...
Чтение порта - полный аналог чтения любого рабочего регистра. Если пин порта настроен на выход, то чтение состояния БИТА порта даст информацию о том, что мы там УСТАНАВЛИВАЛИ, но ни коим образом не то, что там ЕСТЬ на самом деле. Если пин настроен на вывод, в него записана единица, а вывод КоЗой замкнут на землю, то чтение бита порта (регистра) покажет единицу, а чтение пина порта - ноль. Это если образно. Случай с КЗ сильно притянутый, но наиболее подходящий.
И не надо забывать, что при изменении состояния порта операция чтение-модификация-запись - "скользкая" штука. Не стоит забывать про атомарность, иначе при развитой системе прерываний можно напороться на вывод нежелаемых значений.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
25.03.2012, 10:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: USB коннектор на AVR
Сообщение от ut1wpr
|
Случай с КЗ сильно притянутый, но наиболее подходящий.
|
Случай с подтяжкой ещё хуже.
PORTx.0 = 1 // подтяжка включена
состояние PINx.0 = 0 // логический 0 на входе
если мы запишем в PORTx.0 то, что в PINx.0 - мы отключим поттяжку. А это уже серьёзная ошибка.
|
|
|
|
25.03.2012, 10:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: USB коннектор на AVR
Сообщение от Godzilla82
|
Случай с подтяжкой ещё хуже.
PORTx.0 = 1 // подтяжка включена
состояние PINx.0 = 0 // логический 0 на входе
если мы запишем в PORTx.0 то, что в PINx.0 - мы отключим поттяжку. А это уже серьёзная ошибка.
|
А кто с этим спорит? И зачем менять без надобности бит порта, пин которого адресован на вход? Насколько я понял, у вас неоднозначности с чтением бита/пина порта? Дык на блок-схеме порта все однозначно и точно прорисовано. Нет предмета для микродебатов. (нанодебатов)
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
25.03.2012, 11:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: USB коннектор на AVR
|
|
|
|
25.03.2012, 11:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: USB коннектор на AVR
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
26.03.2012, 10:11
|
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: USB коннектор на AVR
Сообщение от slavik.ksu
|
То есть такой подход самый оптимальный?
|
Развернуть циклы - это подход когда требуется максимальная скорость (такты экономятся на проверке условия цикла и переходе), и имеет значение каждый такт. А размером программы можно пренебречь. Как в софтовом усб.
Сообщение от slavik.ksu
|
Если на обоих входах одновременно изменится сигнал, то при выполнении Vnesh0 скопируются оба сигнала, а так как нас ждет второе прерывание, то во Vnesh1 просто скопируются те же сигналы. это означает что задержки в 2мкс в данном случае не будет!
|
Ммм... ладно, попробую объяснить иначе. Пусть время выполнения прерываний будет максимум, 28 тактов. Тогда на одно уйдёт на 12Мгц 1.16 мкс (14тактов), что не соответствует заданию. Это раз.
Или допустим сигналы приходят меняются не одновременно, и сигнал 2 меняется когда идёт обработка прерывания 1. Тогда обработка прерывания 2 откладывается до завершения прерывания 1, что с учётом времени довыполнения прерывания 1 и входа в прерывание 2 даст задержку опять больше микросекунды. Это два.
В случае если минимума (для простоты округляем 12.5 тактов на одну процедуру до 12), получаем первое прерывание отрабатывается 1 мкс. Начинает отрабатываться второе прерывание. В это время снова изменяется состояние на входах (ведь микросекунда прошла, оно вполне имеет право поменяться). Снова выставляется флаг прерывания 1, и хотя состояние выхода 1 копируется вместе с состоянием выхода 2 (что не факт, может ведь поменяться и после чтения порта во втором прерывании), почти сразу после завершения прерывания 2(одна команда выполнится) пойдёт в прерывание 1. Однако выполнение этой команды автоматически ведёт увеличению времени выполнения, так что на втором шаге минимальной длины связки (25 тактов) уже не получить. А это опять таки ведёт к невыполнению требования, только периодическому. В итоге программа будет работать (про софтовый антидребезг промолчу, сам понимать должен) но будет глючить, временами искажая сигнал, выглядеть это будет как залипания состояния выхода по одной из линий на короткое время. Это три.
|
|
|
|
26.03.2012, 10:14
|
|
Гражданин KAZUS.RU
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
|
Re: USB коннектор на AVR
Сообщение от Hives
|
Как бы сделал лично я: 573 в качестве ключа, тактирование cpu строго от кварца, шим для генерации запрета lock, нормальный программный антидребезг. Никакого плавания тактов, никаких подсчетов успеем-неуспееем. Все гарантрованно.
|
Ню-ню. ![Улыбка](images/smilies/icon_smile.gif) . А как же
Сообщение от Hives
|
2 D-триггера + управление их клоком от кнопки детский сад просто.
Может еще DSP туда поставить для мебели?
|
И таки суёте туды чпу. Продолжаю ждать схемку на логике, без чпу.
|
|
|
|
26.03.2012, 12:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: USB коннектор на AVR
Сообщение от Someone
|
Однако выполнение этой команды автоматически ведёт увеличению времени выполнения, так что на втором шаге минимальной длины связки (25 тактов) уже не получить. А это опять таки ведёт к невыполнению требования, только периодическому.
|
Какие 25 тактов? Частота сигнала 1,5 МГц. Это значит надо программно отследить смену фронтов за 333 нс и успеть выставить их на выходных ножках. Это есть всего 4 такта при 12 МГц.
Если мы не успеем за 4 такта - ТЗ не выполнено.
А вы ещё хотите программно нажатие кнопки отрабатывать и дребезг убирать.
Последний раз редактировалось Godzilla82; 26.03.2012 в 12:47.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
usb джойстик на avr
|
bobrozub |
Микроконтроллеры, АЦП, память и т.д |
7 |
14.03.2012 20:24 |
USB клавиатура + AVR
|
Serdgo96 |
Микроконтроллеры, АЦП, память и т.д |
2 |
25.02.2010 22:55 |
USB Коннектор, разпиновка
|
nerozero |
Информация по радиокомпонентам |
2 |
05.10.2007 14:20 |
AVR...USB
|
Edd-Layer |
Микроконтроллеры, АЦП, память и т.д |
4 |
11.04.2007 21:37 |
Часовой пояс GMT +4, время: 02:09.
|
|