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

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

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

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

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

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

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

 
Опции темы
Непрочитано 25.03.2012, 09:44  
Prime
Прописка
 
Регистрация: 11.06.2005
Сообщений: 266
Сказал спасибо: 9
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
Prime на пути к лучшему
По умолчанию Re: USB коннектор на AVR

Сообщение от Godzilla82 Посмотреть сообщение
Поэтому мы читаем изначальное состония порта и от него уже и пляшем.
Как я уже писал, через PORTD - вы не читаете состояние порта... Никогда... Никак...
Реклама:
__________________
Канал в Telegram об МК AVR @EasyAVR
Prime вне форума  
Непрочитано 25.03.2012, 09:46  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Смех Re: USB коннектор на AVR

Сообщение от Prime Посмотреть сообщение
Как я уже писал, через PORTD - вы не читаете состояние порта... Никогда... Никак...
А мне не надо читать состояние ножек порта. Мне надо записать в него то, что в него уже было записано, изменив пару битов. А то, что было записано - хранится в регистре PORTx.
Godzilla82 вне форума  
Непрочитано 25.03.2012, 10:14  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: USB коннектор на AVR

Сообщение от Prime Посмотреть сообщение
Как я уже писал, через PORTD - вы не читаете состояние порта... Никогда... Никак...
Господа. Разберитесь с терминологией. Состояние порта, состояние пинов...
Чтение порта - полный аналог чтения любого рабочего регистра. Если пин порта настроен на выход, то чтение состояния БИТА порта даст информацию о том, что мы там УСТАНАВЛИВАЛИ, но ни коим образом не то, что там ЕСТЬ на самом деле. Если пин настроен на вывод, в него записана единица, а вывод КоЗой замкнут на землю, то чтение бита порта (регистра) покажет единицу, а чтение пина порта - ноль. Это если образно. Случай с КЗ сильно притянутый, но наиболее подходящий.
И не надо забывать, что при изменении состояния порта операция чтение-модификация-запись - "скользкая" штука. Не стоит забывать про атомарность, иначе при развитой системе прерываний можно напороться на вывод нежелаемых значений.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 25.03.2012, 10:19  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: USB коннектор на AVR

Сообщение от ut1wpr Посмотреть сообщение
Случай с КЗ сильно притянутый, но наиболее подходящий.
Случай с подтяжкой ещё хуже.

PORTx.0 = 1 // подтяжка включена

состояние PINx.0 = 0 // логический 0 на входе

если мы запишем в PORTx.0 то, что в PINx.0 - мы отключим поттяжку. А это уже серьёзная ошибка.
Godzilla82 вне форума  
Непрочитано 25.03.2012, 10:52  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: USB коннектор на AVR

Сообщение от Godzilla82 Посмотреть сообщение
Случай с подтяжкой ещё хуже.

PORTx.0 = 1 // подтяжка включена

состояние PINx.0 = 0 // логический 0 на входе

если мы запишем в PORTx.0 то, что в PINx.0 - мы отключим поттяжку. А это уже серьёзная ошибка.
А кто с этим спорит? И зачем менять без надобности бит порта, пин которого адресован на вход? Насколько я понял, у вас неоднозначности с чтением бита/пина порта? Дык на блок-схеме порта все однозначно и точно прорисовано. Нет предмета для микродебатов. (нанодебатов)
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 25.03.2012, 11:14  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: USB коннектор на AVR

Сообщение от ut1wpr Посмотреть сообщение
А кто с этим спорит?
Вот с чего началось
Сообщение от Godzilla82 Посмотреть сообщение
Изменение только нужных битов:
PHP код:

MASK 
0b00000011;
PORTD = (PORTD & ~MASK) | (PINB MASK); 
Сообщение от Prime Посмотреть сообщение
Вместо вашей конструкции правильней

PORTD = (PIND & ~MASK) | (PINB & MASK);

Сообщение от Prime Посмотреть сообщение
Не забывайте, что регистр PORT вы читать не можете, а только выводить в него!!!
Пытаюсь объяснить, что так делать неправильно - не понимает
Godzilla82 вне форума  
Непрочитано 25.03.2012, 11:37  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: USB коннектор на AVR

Сообщение от Godzilla82 Посмотреть сообщение
Вот с чего началось







Пытаюсь объяснить, что так делать неправильно - не понимает
Понятно. Извините, что вмешался в наноспор. Нет предмета для обсуждения, тем более спора. Даташит форева!
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 26.03.2012, 10:11  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию 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 тактов) уже не получить. А это опять таки ведёт к невыполнению требования, только периодическому. В итоге программа будет работать (про софтовый антидребезг промолчу, сам понимать должен) но будет глючить, временами искажая сигнал, выглядеть это будет как залипания состояния выхода по одной из линий на короткое время. Это три.
Someone вне форума  
Непрочитано 26.03.2012, 10:14  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 944
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: USB коннектор на AVR

Сообщение от Hives Посмотреть сообщение
Как бы сделал лично я: 573 в качестве ключа, тактирование cpu строго от кварца, шим для генерации запрета lock, нормальный программный антидребезг. Никакого плавания тактов, никаких подсчетов успеем-неуспееем. Все гарантрованно.
Ню-ню. . А как же

Сообщение от Hives Посмотреть сообщение
2 D-триггера + управление их клоком от кнопки детский сад просто.
Может еще DSP туда поставить для мебели?
И таки суёте туды чпу. Продолжаю ждать схемку на логике, без чпу.
Someone вне форума  
Непрочитано 26.03.2012, 12:41  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: USB коннектор на AVR

Сообщение от Someone Посмотреть сообщение
Однако выполнение этой команды автоматически ведёт увеличению времени выполнения, так что на втором шаге минимальной длины связки (25 тактов) уже не получить. А это опять таки ведёт к невыполнению требования, только периодическому.
Какие 25 тактов? Частота сигнала 1,5 МГц. Это значит надо программно отследить смену фронтов за 333 нс и успеть выставить их на выходных ножках. Это есть всего 4 такта при 12 МГц.

Если мы не успеем за 4 такта - ТЗ не выполнено.

А вы ещё хотите программно нажатие кнопки отрабатывать и дребезг убирать.

Последний раз редактировалось Godzilla82; 26.03.2012 в 12:47.
Godzilla82 вне форума  
 

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

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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.


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