Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

Код: Выделить всё

 Когда вывод вход, он не должен меняться от записи в PORTB.
когда пристегиваются или отстегиваются встроенные резисторы подтяжки, что происходит ? Думаю, то, что вы наблюдаете на выводе.
Контактная информация:
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

А посмотри внимательно структурную схему выходного порта в даташите на контроллер, многие вопросы сразу отпадают.
Делается это чтобы манипуляции не влияли на выход, за то время как программа будет решать 1 или 0 должен быть на выходе ШИМа в данном такте на выводе контроллера будет удерживаться уровень по инерции. Хотя, по хорошему эту операцию достаточно буферизировать - менять внутреннюю переменную, а потом её за один раз выводить в порт. И не нужны будут всякие подобные шаманства.
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 183
Зарегистрирован: Вт сен 14, 2010 23:07:10
Откуда: Ростов

Сообщение baron_P »

Спасибо.
О логике работы я судил по этой картинке:
СпойлерИзображение
Когда выводы порта B объявлены как входы, в PORTB можно записать 1, что включит подтягивающие резисторы. Если к выводам ничего не подцеплено, на PINB должны появиться 1. Если записать при этом в PORTB 0, то выводы будут висеть в воздухе и непонятно, что будет в PINB. Если к порту В подцепить катоды светодиодов, подав на аноды питание, то в первом случае светодиоды гореть не будут. И во втором тоже, т.к. тока нет.
Когда выводы порта В объявлены как выходы, в PORTВ можно записать 1, и в PINB появится 1. Если записать 0, то и в PINB появится 0. Если к порту В подцепить катоды светодиодов, подав на аноды питание, то в первом случае светодиоды гореть не будут. А во втором должны загореться, т.к. будут посажены на землю.
По моему так должно работать.
А тут же получается что-то другое. При обявленнии выводов входами всегда в PINB висят нули, и при записи в PORTB нулей загораются светодиоды. Я не пойму, почему так.
Делается это чтобы манипуляции не влияли на выход, за то время как программа будет решать 1 или 0 должен быть на выходе ШИМа в данном такте на выводе контроллера будет удерживаться уровень по инерции. Хотя, по хорошему эту операцию достаточно буферизировать - менять внутреннюю переменную, а потом её за один раз выводить в порт. И не нужны будут всякие подобные шаманства.
Это фраза объясняет структуру программы в виде: объявили порт выходом, записали нужное значение, объявили входом, чтоб чего лишнего не записалось. Я правильно понял? Нет, не правильно :idea: Объявляем выводы входами, записываем в PORTB сначала какие-то промежуточные значения, потом то, что должно быть выведено на него. Объявляем выводы выходами и на них тут же появляется уже находящиеся в PORTB значения. Между двумя объявлениями фактические значения на выводах не меняются, потому и PINB не меняется. Вроде дошло. Еще раз спасибо.
We do what we must because we can (c) GLaDOS
Mem
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1915
Зарегистрирован: Вт апр 17, 2012 14:20:59
Откуда: Новокузнецк

Сообщение Mem »

Как исправить эти фьюзы?

Изображение

Понятно что Mega 16 теперь от внешнего кварца, но какого? Пробовал разные, не определяется. Сигнатура 0х000000, в остальном пишет что готово к работе. Один раз завелась от 8 МГц, я затер флеш и еепром, после этого опять перестало работать.
Вложения
Безымянный.png
(60.72 КБ) 835 скачиваний
Главный инженер проекта - человек, который как никто другой знает, что приближаться к спроектированной им хрени близко не стоит.
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Аватара пользователя
Сообщения: 81
Зарегистрирован: Вт май 08, 2012 23:15:45
Откуда: Санкт - Петербург

Сообщение ua1arn »

low freq - 32768 герц, часовой.
Реклама
Mem
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1915
Зарегистрирован: Вт апр 17, 2012 14:20:59
Откуда: Новокузнецк

Сообщение Mem »

Спасибо, на 12 и 13 ногу же? Мегу я не запорол? Лок биты не трогал.
Главный инженер проекта - человек, который как никто другой знает, что приближаться к спроектированной им хрени близко не стоит.
Реклама
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

У вас стоит низкочастотный кварц... но эта низкочастотность заключается только в настройке крутизны фронта выходе генератора, не обращайте внимания просто на XTALL1 подайте 1Мгц с какого-либо генератора, возможно понадобится снижение скорости программирования т.к. я не вижу опцию CKDIV8, она может быть установлена.

И если ты лок-биты не трогал, то почему они УСТАНОВЛЕНЫ?
Контактная информация:
Mem
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1915
Зарегистрирован: Вт апр 17, 2012 14:20:59
Откуда: Новокузнецк

Сообщение Mem »

Ну как считал так и оставил. Трогал только Hing and Low bit's.
Главный инженер проекта - человек, который как никто другой знает, что приближаться к спроектированной им хрени близко не стоит.
Web
Потрогал лапой паяльник
Сообщения: 321
Зарегистрирован: Пт мар 22, 2013 16:05:05
Откуда: Саратов

Сообщение Web »

Здраствуйте! У меня дисплей WH1602D, управляется он PIC16F887. При этом на правой половине экрана символы отображаются хорошо, а на левой - либо слегка заметны, либо совсем не видны. Если контрастность на максимуме, то все ячейки подсвечиваются.
Изображение
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Дефект дисплея. это не программное.
Контактная информация:
Mem
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1915
Зарегистрирован: Вт апр 17, 2012 14:20:59
Откуда: Новокузнецк

Сообщение Mem »

А кварц на 1 МГц нормально будет? Генератора не найти.
Главный инженер проекта - человек, который как никто другой знает, что приближаться к спроектированной им хрени близко не стоит.
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич

Сообщение Alexeyslav »

Если кварц ставить, то надо полагаться на установленный режим работы... а это фиг знает еще от кварца может зависеть и от емкостей, проще подать готовую частоту, например с генератора выпаянного с материнки. И если подавать низкую частоту(она может быть еще и поделена на 8) надо быть готовым к тому что программатор может оказаться шустрым и получишь отворот-поворот.
Контактная информация:
Mem
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1915
Зарегистрирован: Вт апр 17, 2012 14:20:59
Откуда: Новокузнецк

Сообщение Mem »

Программатор USBASP, в программе можно выбирать частоту программирования.
Главный инженер проекта - человек, который как никто другой знает, что приближаться к спроектированной им хрени близко не стоит.
Друг Кота
Сообщения: 19496
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

если интересует больше результат, чем процесс (в плане разлочить мегу) - проще собрать atmega fusebit doctor, у меня получился такой (светодиод двухцветный)

Изображение

к нему цепляется мк, включаем и ждем какая лампочка загорится, если зеленая - чип сбросился в "заводские настройки"

тут на русском есть http://www.getchip.net/posts/059-isprav ... it-doctor/ да и на радиокоте тоже можно найти про него
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Mem
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1915
Зарегистрирован: Вт апр 17, 2012 14:20:59
Откуда: Новокузнецк

Сообщение Mem »

Хорошее устройство, спасибо. Но сначала попробую кварц или где-то генератор найти, просто меги8 в дип нет. Платку придется делать.
Главный инженер проекта - человек, который как никто другой знает, что приближаться к спроектированной им хрени близко не стоит.
Мучитель микросхем
Аватара пользователя
Сообщения: 458
Зарегистрирован: Пн дек 13, 2010 13:01:59
Откуда: Украина

Сообщение DJ_Kiridza »

Всем привета.
Подскажите очень простой вопрос: если у меня две лапки АТМеги соеденены между собой и обе работают на "ВЫХОД", допустим это PORTD0 и PORTD1, и при этой на одной 0 на второй 1:
CBI PORTD,0
SBI PORTD,1
(nop для синхронизации порта)
Если я потом послушаю PIND1 - то получу там 0?
Просто не охота для однократного "ввода" переключать порт туда/сюда + подтягивающие резисторы...
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 20135
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

DJ_Kiridza писал(а):две лапки АТМеги соеденены между собой
Эээ... А зачем?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Код: Выделить всё

CBI PORTD,0
SBI PORTD,1
И по железу соединены. КЗ?
Docendo discimus
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3874
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Если оба DDR отключены, то на PIND1 будет 0, т.к. к нулю порт притягивается ключом напрямую, а к VCC через встроенный резистор.
Если там в обоих DDR0 и DDR1 по "1", то да, это КЗ, и что там будет на PIND1 - это как повезет. Если выставить разные уровни всего на несколько тактов или сразу отключить DDR, то может порт и не сгорит, а если так и оставить, то сгорит однозначно.
Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Мучитель микросхем
Аватара пользователя
Сообщения: 458
Зарегистрирован: Пн дек 13, 2010 13:01:59
Откуда: Украина

Сообщение DJ_Kiridza »

В описании я сильно упростил задачу, что б не распылять внимание.
На самом деле между лапками кнопка. PODRD0 всегда 1, PORD1 работает как обычный "Выход", когда нужно 0 когда нужно 1. Иногда мне нужно опросить кнопку между этими лапками. В таком случае подаем на PODRD1 - 1, на PODRD0 - 0 и слушаем PIND1. чисто логически - резистор к VCC сработает как подтяжка, а логический 0 с PODRD0 "продавит" эту подтяжку, и на PIND1 должен появится лог.0. Сразу просле прослушки PIND1 в PODRD0 отправляется 1 и уже через 1 такт все будет в порядке. Никакого КЗ не должно быть, так как там резистор от 20К до 50К.
Я так понял, никто так не заморачивался? Я думал, регистры PINх для того и созданы, что бы читать из них значения "напрямую", не переключая DDRx и PORTx ?...
мысли мысли штош вы вйотесь
над мойейу головойу
вы там мосга нинайдете
нед там мосга! йа тупойе (БОР)
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»