Motion 0 9 февраля, 2008 Опубликовано 9 февраля, 2008 · Жалоба Всё не так. Не хватает, как самый минимум: - блокировочный конденсатор VCC-GND; - цепи сброса. Какого номинала конденсатор должен быть? Из чего состоит цепь сброса и между чем и чем её подключать? И откуда берётся эта информация? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Motion 0 9 февраля, 2008 Опубликовано 9 февраля, 2008 (изменено) · Жалоба Кое-что нашёл - AVR042: AVR Hardware Design Considerations Как пример приведена вот такая схема: На ней показана схема подключения кварцевого резонатора и фильтрации по питанию. Отдельно показана цепь сброса: По идее в ней присутствует RC-цепочка. Каких номиналов должны быть элементы и какой должин быть диод? Подойдёт ли эта обвязка для моего случая (моего МК)? Попробовал включить по упрощённой схеме (из того что было). Между питанием и Reset - 4,8кОм, между питанием и землёй 220нФ. Результат тот же. Единиц нигде нет. На ножке ресет около 4,5В. Скорее всего что-то не то делаю. Укажите на мои ошибки. Изменено 9 февраля, 2008 пользователем Владимир_КПИ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stanislav_S 0 9 февраля, 2008 Опубликовано 9 февраля, 2008 · Жалоба Кое-что нашёл - AVR042: AVR Hardware Design Considerations Как пример приведена вот такая схема: На ней показана схема подключения кварцевого резонатора и фильтрации по питанию. Отдельно показана цепь сброса: По идее в ней присутствует RC-цепочка. Каких номиналов должны быть элементы и какой должин быть диод? Подойдёт ли эта обвязка для моего случая (моего МК)? Попробовал включить по упрощённой схеме (из того что было). Между питанием и Reset - 4,8кОм, между питанием и землёй 220нФ. Результат тот же. Единиц нигде нет. На ножке ресет около 4,5В. Скорее всего что-то не то делаю. Укажите на мои ошибки. Посмотрите вот схема готового устройства с 16 мегой, посмотрите как сделано там, и еще внимательно проверте монтаж на вашей плате. На ножке РЕСЕТ и должен быть высокий уровень. AT16.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Motion 0 9 февраля, 2008 Опубликовано 9 февраля, 2008 · Жалоба Спасибо за схему. Внимательно просмотрев её сделал такие выводы: 1)Все выводы GND подключаются в "-" питания 2)Выводы Vcc и AVcc подключаются к +5В. От каждого вывода на землю идут по 2 конденсатора по 0.1 (чего?) и один на 10мкФ (сколько вольт, какой тип конденсатора?) 3)С Reset на землю идёт ёмкость на 0.1(чего? пФ?) и резистор на 47Ом 4)Ещё цепляется кварцевый резонатор и 2 конденсатора на 22(чего?). Всё верно? А вместо конденсаторов на 0.1 какие ещё можно использовать? Укажите диапазон. Что за резистор 47Ом и емкость, для чего они? Это ФНЧ или цепь сброса? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stanislav_S 0 9 февраля, 2008 Опубликовано 9 февраля, 2008 · Жалоба Спасибо за схему. Внимательно просмотрев её сделал такие выводы: 1)Все выводы GND подключаются в "-" питания 2)Выводы Vcc и AVcc подключаются к +5В. От каждого вывода на землю идут по 2 конденсатора по 0.1 (чего?) и один на 10мкФ (сколько вольт, какой тип конденсатора?) 3)С Reset на землю идёт ёмкость на 0.1(чего? пФ?) и резистор на 47Ом 4)Ещё цепляется кварцевый резонатор и 2 конденсатора на 22(чего?). Всё верно? А вместо конденсаторов на 0.1 какие ещё можно использовать? Укажите диапазон. Что за резистор 47Ом и емкость, для чего они? Это ФНЧ или цепь сброса? Даа верно - конденсаторы по питанию 0,1 мкФ - 50В - SMT1206 именно в этой схеме, распологать следует как можно ближе к выводам процессора, электролиты 10 мкФ - 16В, либо аналогичные, на кварце конденсаторы - 22пФ, любые керамические. резистор на цепи сброса защитный, емкость защищает вход ресет от помех, поскольку внутренний резистор довольно хилый. В принципе можно и без него, но лучше с ним :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Motion 0 9 февраля, 2008 Опубликовано 9 февраля, 2008 · Жалоба А почему 2 конденсатора по 0.1 в паралеле? Почему нельзя использовать 1 еквивалентный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stanislav_S 0 9 февраля, 2008 Опубликовано 9 февраля, 2008 · Жалоба А почему 2 конденсатора по 0.1 в паралеле? Почему нельзя использовать 1 еквивалентный? Очень просто, у меги16 три вывода цифрового питания и один вывод аналогового, вот поэтому на каждый вывод по конденсатору. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Qwertty 0 9 февраля, 2008 Опубликовано 9 февраля, 2008 · Жалоба Вы пробуете прямо на той макетке, что на фото привели? Откуда там берется +5В? C LPT порта??? Разъем под питание не просматривается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Motion 0 9 февраля, 2008 Опубликовано 9 февраля, 2008 (изменено) · Жалоба В программатор сбоку вставляется разъём питания. Я подключаю отсек с батарейками. Внутри программатора стоит стабилизатор на 5В. Изменено 9 февраля, 2008 пользователем Владимир_КПИ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Motion 0 10 февраля, 2008 Опубликовано 10 февраля, 2008 · Жалоба Теперь получилось запустить. Получается виной всему помехи генерируемые МК. Теперь попробую померять сигнал с делителя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Motion 0 10 февраля, 2008 Опубликовано 10 февраля, 2008 · Жалоба Написал программу для измерения напряжения на канале ADC1. На нём всё время присутствует около 1,2В. Замерял тестером. Опорное берётся внутреннее(2,56В). Замерял тестером - оно присутствует на Aref. По окончанию измерения по прерыванию измерянное значение записывается в EEPROM. Прошил программу в МК, переставил МК в схему, подал питание, выключил. Подключил к ПК, прочёл EEPROM - везде FF. То есть что-то неправильно сделал. Укажите, пожайлуста, на мои ошибки. Прилагаю листинг программы. program.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Qwertty 0 10 февраля, 2008 Опубликовано 10 февраля, 2008 · Жалоба Укажите, пожайлуста, на мои ошибки. Самая главная ошибка ИМХО - то что Вы полагаетесь на визард CV, думая что он все сделает за Вас. А он не спешит запускать преобразование - это надо сделать вручную. #define ADSC 6 // бит запускающий преобразование ADCSRA |= (1<<ADSC); Вообще пока не поздно забросьте этот програмный продукт, несмотря на кажущуюся простоту он очень сильно замедлит Ваше движение вперед. Выбирайте свободный софт - GCC, хотя тут существуют и альтернативные мнения (IAR). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladimirYU 0 11 февраля, 2008 Опубликовано 11 февраля, 2008 · Жалоба Владимир_КПИ Еще одна рекомендация Port A has an alternate function as analog input for the ADC as shown in Table 22. If some Port A pins are configured as outputs, it is essential that these do not switch when a conversion is in progress. This might corrupt the result of the conversion. Стр 57. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Motion 0 11 февраля, 2008 Опубликовано 11 февраля, 2008 (изменено) · Жалоба If some Port A pins are configured as outputs Порты в программе стоят по умолчанию (на вход) - значит проблем не должно возникать. Самая главная ошибка ИМХО - то что Вы полагаетесь на визард CV, думая что он все сделает за Вас. По идее программа делает всё то, что я выставлю в Wizard. Она просто автоматизирует мои действия. Непревычно как-то пользоваться командами вида "ADCSRA |= (1<<ADSC);". Привычней ADCSRA.6=1, но эта команда, как я понимаю здесь неуместна или не работает. А в чём различие? Где стоит применять одну, а где другую? Више кто-то писал, что есть команды Read-Modify-Write. Пытался вновь померять - результат нулевой (FF). Есть один нюанс. Прошиваю МК я на одной плате (специально сделал для прошивки МК, на ней кроме панельки для МК и проводков и ISP разъёма ничего нет), а потом переставляю МК в другую рабочую плату. Возможно МК что-то и меряет, но потом я когда перестявляю обратно в программатор и включаю питание, никакого измеряемого напряжения нет. И он, возможно, перезаписывает результат. Может быть есть смысл сделать ISP разъём на рабочей плате(целевом устройстве)? Но не хотелось бы загромождать ещё сильнее проводниками плату. А можно делать однократное измерение по нажатию на кнопку, например. То есть в готовой плате я нажму кнопку - МК сделает измерение и запишет результат в EEPROM. А потом переставлю в плату для программирования и считаю результат. А вообще программа написана верно? Изменено 11 февраля, 2008 пользователем Владимир_КПИ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stanislav_S 0 11 февраля, 2008 Опубликовано 11 февраля, 2008 · Жалоба Порты в программе стоят по умолчанию (на вход) - значит проблем не должно возникать. По идее программа делает всё то, что я выставлю в Wizard. Она просто автоматизирует мои действия. Непревычно как-то пользоваться командами вида "ADCSRA |= (1<<ADSC);". Привычней ADCSRA.6=1, но эта команда, как я понимаю здесь неуместна или не работает. А в чём различие? Где стоит применять одну, а где другую? Више кто-то писал, что есть команды Read-Modify-Write. Пытался вновь померять - результат нулевой (FF). Есть один нюанс. Прошиваю МК я на одной плате (специально сделал для прошивки МК, на ней кроме панельки для МК и проводков и ISP разъёма ничего нет), а потом переставляю МК в другую рабочую плату. Возможно МК что-то и меряет, но потом я когда перестявляю обратно в программатор и включаю питание, никакого измеряемого напряжения нет. И он, возможно, перезаписывает результат. Может быть есть смысл сделать ISP разъём на рабочей плате(целевом устройстве)? Но не хотелось бы загромождать ещё сильнее проводниками плату. А можно делать однократное измерение по нажатию на кнопку, например. То есть в готовой плате я нажму кнопку - МК сделает измерение и запишет результат в EEPROM. А потом переставлю в плату для программирования и считаю результат. А вообще программа написана верно? Как вам правильно заметили, срочно смените компилятор на GCC или IAR или на худой конец ImageCraft, и прежде чем писать прочитайте хотя бы пару книг по программированию АВР на С, благо их сейчас много. Далее не пользуйтес визардом! настраивайте перефирию руками, только так вы "прочувствуете" ее поймете что для чего и зачем, да и документацию на компилятор обязательно прочтите, узнаете много нового и полезного :) Касательно этой программы непонятно почему читается только старший байт регистра АЦП. Да и находясь в прерывании не пишите данные в ЕЕПРОМ делайте это в фоновой программе. Для отладки прицепите светодиод на любую ножку и включайте/выключайте там где вам нужно, так вы увидите как работает ваша программа. Поставте разъем для ISP на плату сэкономите время и ресурс колодки, поскольку перешивать процессор вы будите очень много раз :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться