Виж темите без отговор | Виж активните теми
Дата и час: Чет Апр 25, 2024 12:23 pm
Обикновен повторител (atMega)
Автор |
Съобщение |
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 8:21 pm Мнения: 28023 Местоположение: София
|
Re: Обикновен повторител (atMega)
nobodyshadow : Чай сега да видя къде беше тоя pdf който го четох, защото точно това пише в него, пък дали е стар силикон не знам, тв ами отвори като търсиг мега16
Рек или атмега е тотално дърво, което неми се вярва, или нещо пропускаш около работата с прекъсвания. Полиране на пин използвам, много много рядко, но и с атмеги не се знаимавам, на силабси, пиове, тексаски чипове съм нямал никакви грижи.
|
Чет Ное 04, 2021 10:00 pm |
|
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 8:21 pm Мнения: 28023 Местоположение: София
|
Re: Обикновен повторител (atMega)
Така, може би аз чета за грешна атмега 164А : https://ww1.microchip.com/downloads/en/ ... 02070B.pdfСтраница 76 : Note: 1. n = 2, 1 or 0. When changing the ISCn1/ISCn0 bits, the interrupt must be disabled by clearing its Interrupt Enable bit in the EIMSK Register. Otherwise an interrupt can occur when the bits are changed. Та може би има и други разлики между различните чипове, та така само въпрос за Atmeg ще е трудно да се отговори ако е е ясно кой точно е чипа. п.с. то има и едно не съвсем ясно обяснение, че когато си в прекъсване хардуерно се забраняват всички прекъсвания, ама какво точно се забранява не е съвсем ясно, дали самото влизане в прекъсване или наистина не се генерира прекъсване от съответната периферия. Но доколкото разбрах това обяснение, забранява се а глобално ниво, т.е. тригерите все така си цъкат и най-вероятно прекъсването ще се генерира след като излезеш от текущото. п.с.2 а по отношение дали изтърваш или не, много зависи каква ти е целта. Примерно следиш кодер с квадратурен изход, там ти е нужен фронт. Да може би някак може и по ниво, кое ниво ще се вдигне първо, но това зависи от честотата. те може да са с период 1 ms, но фазовата им разлика е 250 us,което само по себе си пак е много, освен обаче ако не искаш да правиш и филтрация. На прекъсването това му е хубавото, нещо се случва когато се случи, през останалото време няма нужда да въртиш код и аналитично да остановяваш нещо случило ли се е или не. Примерно филтрация се прави много лесно като използваш прекъсване по фронт. Буквлано с 3 реда код, и една проверка в тялото.
|
Чет Ное 04, 2021 10:05 pm |
|
|
al_at
Ранг: Форумен бог
Регистриран на: Пет Апр 13, 2018 3:00 pm Мнения: 1325 Местоположение: София
|
Re: Обикновен повторител (atMega)
Според мен EICRA регистърът трябва да се установи еднократно при инициализация да прави прекъсване на всеки фронт на INT0, а в тялото на прекъсването просто да се чете състоянието на INT0 пина и да се копира в PORTC пина. Нямам обяснение защо се държи така, но това, което предлагам, е много по-просто и най-вероятно и по-шумоустойчиво.
Последна промяна al_at на Чет Ное 04, 2021 11:34 pm, променена общо 1 път
|
Чет Ное 04, 2021 11:03 pm |
|
|
nobodyshadow
Ранг: Почетен член
Регистриран на: Съб Окт 30, 2004 4:18 am Мнения: 632
|
Re: Обикновен повторител (atMega)
Да явно има вариации. В мега328 това, че трябва да забраниш прекъсването преди да промениш фронта не го пише. Иначе в прекъсване се забранява глобално от I бита в SREG и като излезеш ако имаш сетнат друг флаг ще се изпълни новото прекъсване. Няма начин да не работи с прекъсване, пробвай гледай на скопа и ще стане.
_________________ Не мога да знам всичко,а и не искам.Тогава би било прекалено лесно и скучно!
|
Чет Ное 04, 2021 11:22 pm |
|
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 7:04 pm Мнения: 2593 Местоположение: Велико Търново / София
|
Re: Обикновен повторител (atMega)
то може ли да се настрои да прекъсва едновременно и по двата фронта ?
|
Чет Ное 04, 2021 11:46 pm |
|
|
al_at
Ранг: Форумен бог
Регистриран на: Пет Апр 13, 2018 3:00 pm Мнения: 1325 Местоположение: София
|
Re: Обикновен повторител (atMega)
Може да се конфигурира да прекъсва по ниво /ниско/, по падащ фронт, по нарастващ фронт и по двата фронта.
|
Чет Ное 04, 2021 11:59 pm |
|
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 8:21 pm Мнения: 28023 Местоположение: София
|
Re: Обикновен повторител (atMega)
да може, но това иска малко по-сложна логика. Пак трябва да има флаг който да пази старото състояние за да знаеш дали какво се случва. Може да имаш кратък импулс който да генерира прекъсване и после да изчезне. Или още по-лошо, имаш механичен контакт който трепти, влизаш по-преден фронт четеш нула ...ако е за прост дебонсинг не ти дреме, ще влезеш пак по последния, но в не малко случаи ти трябва сравнително точен тайм щамп на фронта, т.е това може да си е реален импулс, и да му изместиш фронта с 20-30 мкс или повече може да е проблем. Та затова реализацията с пренастройка е удачна. Сега то ако е критично има и други трикове. На мен ми харесва на силабса реализацията, и не само на прекъсванията де, за малък контролер според мен са едни от удачните решения. п.с. аз не съм сигурен и това за едновременно прекъсване по фронт и ниво дали не съм го прочел наистина, като писах първи пост гледах в един пдф и го затворих, като писах втория вече гледах по цитирния по-горе. След твоя пост пък бях отворил трети и там наистина не пишеше нищо по тоя повод, но отворих хисторито и излезе пдф-а. Та важно е да се чете пдф за конкретният чарк. Който не е работил с пик може и да няма тренинг, там четеш ератата за да знаеш какво да не четеш в дейта шита , но май отдавна няма такива злобни ерати.
|
Пет Ное 05, 2021 2:56 am |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 9 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|