Plantis писал(а):Atmega8A на лапке микроконтроллера при установке "1" на нем выдает 2.5В. Что делать? лапкой управляю тразистором который открывается при 5В. Что делать?!
Здравствуйте все. Наконец закончил 9 классов !!! Стал рассматривать программатор. И по-моему нашел ошибку ! Отмеченный на схеме диод надо перевернуть, иначе он просто не пустит ток на схему. И ещё вопрос : потянет ли такой программатор ATMEGA16 ? Жду ответа...
Tails писал(а):Отмеченный на схеме диод надо перевернуть, иначе он просто не пустит ток на схему.
Переворачивать ничего не надо.. Этот диод, как раз и пропускает ток с разъёма на цепь +5 вольт..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Значит я представил себе так : ток идет со схемы с микроконтроллером и загорается LED2. Ток с порта компьютера не пустит светодиод LED1. На этот диод с 2-х сторон идет +5V, то есть он вообще не открывается ! Я полностью запутался ...
а ты не путайся.. Питание на схему приходит с 4-го вывода разьёма Х2.. Дальше думаю разберёшься.. С порта компьютера приходят только информационные сигналы..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Я только что понял, перечитав описание, не надо подавать ещё +5V на катод диода, стрелка это питание 74HC224. Вот и вся загадка. Спасибо. А потянет ли этот программатор ATMEGA16 ?
штудирую по немногу AVR..... вот что я вычитал в учебнике но насколько я в курсе, то МК понимает только бинарный код, а тут шестнадцатеричный.........., как же транзисторы то могут понять это....???
Тут неудачное (и не очень корректное) выражение. Конечно же, машинный код -- двоичный. Однако многие среды разработки генерируют на выходе HEX-файлы, где в шестнадцатеричном виде представлены адреса и машинных коды программы. Здесь именно это и имеется в виду: транслятор обрабатывает исходный текст программы, а конечным итогом будет такой HEX-файл. Правда, в общем случае после транслятора ещё компоновщик выполняется; он связывает в единое целое программу, состоящую из нескольких модулей, и тогда выходом ассемблера будет объектный файл (o, obj), а уже компоновщик "скушает" заданные объектники и выдаст на выходе HEX.
Ну а шестнадцатеричное представление достаточно удобно для человека: двоичное при записи занимает слишком много места (в 4 раза больше, поскольку одна шестнадцатеричная цифра = четырём двоичным).
Но надо понимать, что HEX-файл -- это не машинный код, а его текстовая запись в шестнадцатеричном виде. Утилита, осуществляющая прошивку микроконтроллера, преобразует этот текст собственно в двоичный код, отправляемый в память.
SII писал(а):Ну а шестнадцатеричное представление достаточно удобно для человека
чем же оно удобно......, ведь найти в нем ошибку нереально..... а почему ассемблер не переводит код проги сразу в бинарный........???? почему эту задачу "растягивают" во времени и возлагаюн на прогу прошивки микросхемы...?
Он работает, как можно упростить его запись по типу In[7:0]? Тут важен один момент - входов должно быть 7 (именно входов, а не шину на 7 - просто далее используется в схеме, тяжко соединять шину с 7-ю входами) Пробую подобное написать - Quartus ругается... козявка
PS: Оказалось почему то что выход имеет неопределённое состояние. Как по умолчанию задать в коде лог."0"?
Последний раз редактировалось Chettuser Сб июн 25, 2011 18:44:14, всего редактировалось 4 раза.
Если понимать, как что кодируется -- вполне реально, хотя и сложно (собственно, на заре компьютерной эры прямо в машинном коде и писали, используя лишь шестнадцатеричную либо восьмеричную запись -- двоичная уж очень громоздка). А удобно тем, что, если уж надо ковыряться в машинном коде (а такое случается), то шестнадцатеричный при должном навыке куда лучше воспринимается, чем двоичный -- в силу как раз более компактной записи.
Трансляторы (неважно, компиляторы языков высокого уровня или ассемблеры) почти всегда переводят исходный текст в объектный файл -- машинный код, снабжённый кучей дополнительной информации. Далее в работу вступает компоновщик, который берёт объектные файлы и формирует результат (а дополнительная информация в объектных файлах нужна как раз для того, чтобы компоновщик знал, как несколько объектников связать в один выполняемый файл; например, если из модуля 1 вызывается процедура, находящаяся в модуле 2, транслятор не может вычислить адрес этой процедуры и просто помещает в объектный файл запись о том, что эту работу должен будет сделать компоновщик). На выходе компоновщика получается выполняемый файл в том или ином формате. Иногда это чисто двоичный файл в абсолютном формате (т.е. не содержащий информацию о том, куда его надо загружать -- предполагается, что программа, осуществляющая загрузку, это откуда-то знает), иногда -- тоже двоичный, но сложной структуры, содержащий много дополнительной информации (например, ЕХЕ и ДЛЛ файлы в Винде), ну а иногда -- код, записанный в текстовом виде, как в случае с HEXом. Этот формат сложился исторически. Он удобен тем, что, во-первых, в простом виде (а не в достаточно замороченном, как, например, ELF в Линухе или COFF в Винде) содержит не только сам машинный код, но ещё и информацию, по каким адресам его нужно располагать, а во-вторых, легко (по сравнению с чисто двоичным представлением) может восприниматься человеком, а также создаваться полностью вручную.
Прошивки в комплекте. Одноимённая прошивка для одноимённой микросхемы. Выключатели выставляют громкость по умолчанию. То есть, при включении, чтоб громкость была не минимальная.
Хочу использовать 16бит ПЗУ. Но в Протеусе не нашёл модели 16 бит ПЗУ и потому использовал две по 8 бит.
Вопросы:
1. Как эти две прошивки должны быть "слеплены", чтоб залить в 16 бит ПЗУ? 2. Ещё остались свободными выводы шины адреса и данных. И поэтому хочу ещё и логику 74HC10 заменить кодом.
В чём (какой программе) это правильно делать? Какие есть приёмы для ускорения написания подобного кода. Или это тупо побайтно надо писать?
зы Для того, чтоб правильно задать вопрос, надо знать 50% ответа на него. Я совсем начинающий в писании кода. Так что плиз сильно не пинайте, а растолкуйте подробнее.
Проблема (мой пост выше) появилась после подключения "собирающего" ИЛИ на выходе (из 7 в 1 канал). На выходах в момент появления импульса порядок а в промежутке - "Uninitialized". И что я такого натворил страшного?