Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Первый запуск.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
very_good
Доброго времени суток!
Есть программатор AS2M. Что нужно для заливки программы в "нулёвую" At902313? Кварц, тогда на какую частоту, а можно прошить без него?
Есть ещё прошитая микруха ATmega8. Можно её перепрошить, если она тактируется от кварца и установлена какая защита.
Подскажите, пожалуйста, для чего используется сигнатура у этих микросхем кроме как для определения типа микросхемы?
__nik__
Доброго времени суток!
... в "нулёвую" At902313?
у нее нет внутреннего генератора она работает только от внешнего, по умолчанию кварц. для каждого программатора свой кварц используют но обычно 4МГц.(тут я на ваш программатор описалова не нарыл)
хотя простейший програматор на АП прошивает при любом разумном значении кварца(см описалово)
без него прошить нельзя покрайне мере в первый раз потом можно поставить что угодно RC,ZQ, внешний такт сигнал.
ATmega8
тут сложнее если в ней поставлена защита от прошивания то только высоковольтным способом, во всех других случаях если она читается то ее можно стереть и сконфигурировать по своему главное не ошибится в выборе конфигурации.
у нее есть внутренняя RC=1МГц ,RC,ZQ, внешний такт сигнал.
она может работатьбез кварца внешнего.
у нее можно внутренний такт подстроить как програмно так и в программаторе. но по идее ее настроили на заводе.
сигнатурой не занимался.
удачи
Igor26
Цитата(__nik__ @ Dec 22 2005, 00:43) *
Доброго времени суток!
... в "нулёвую" At902313?
у нее нет внутреннего генератора она работает только от внешнего, по умолчанию кварц. для каждого программатора свой кварц используют но обычно 4МГц.(тут я на ваш программатор описалова не нарыл)
хотя простейший програматор на АП прошивает при любом разумном значении кварца(см описалово)
без него прошить нельзя покрайне мере в первый раз потом можно поставить что угодно RC,ZQ, внешний такт сигнал.
ATmega8
тут сложнее если в ней поставлена защита от прошивания то только высоковольтным способом, во всех других случаях если она читается то ее можно стереть и сконфигурировать по своему главное не ошибится в выборе конфигурации.
у нее есть внутренняя RC=1МГц ,RC,ZQ, внешний такт сигнал.
она может работатьбез кварца внешнего.
у нее можно внутренний такт подстроить как програмно так и в программаторе. но по идее ее настроили на заводе.
сигнатурой не занимался.
удачи

Если стереть последовательным программатором Мегу8, то биты защиты тоже стираются и ее можно шить снова. Для этого не нужен высоковольтный программатор. Он понадобится, если установить фьюз RSTDSB. В этом случае вывод RESET станет обычным портом ввода/вывода и кристалл станет невозможно запрограммировать последовательным программатором.
Сигнатура используется только для идентификации ЧИПа, например для автоматического распознавания кристалла программатором.
BVU
Цитата(very_good @ Dec 21 2005, 21:19) *
Доброго времени суток!
Есть программатор AS2M. Что нужно для заливки программы в "нулёвую" At902313? Кварц, тогда на какую частоту, а можно прошить без него?
Есть ещё прошитая микруха ATmega8. Можно её перепрошить, если она тактируется от кварца и установлена какая защита.
Подскажите, пожалуйста, для чего используется сигнатура у этих микросхем кроме как для определения типа микросхемы?

Просмотрите обзорную статью о программировании AVR. Там изложены все основные принципы программирования, которые преемлемы как для 'старых', так и новых кристаллов:
http://atmel.ru/Articles/Atmel16.htm#p01
very_good
Хорошо. Делаю стирание Меги8. Делаю чтение - всё читается как чисто Flash&EEPROM, сигнатура не читается (FF) и фузы как бы тоже ни один не запрограммирован (или просто не удалость считать). Похоже на признаки "палёной" микросжемы? Как уточнить можно?
Ещё вопрос: как для каждого программатора свой кварц, т.е.? У меня в программе от программатора есть параметр SCK который как я понял должен быть раза в 4 меньше тактовой частоты контроллера. Для чего используется SCK?
__nik__
Цитата(Igor26 @ Dec 22 2005, 09:28) *
Если стереть последовательным программатором Мегу8, то биты защиты тоже стираются и ее можно шить снова. Для этого не нужен высоковольтный программатор. Он понадобится, если установить фьюз RSTDSB. В этом случае вывод RESET станет обычным портом ввода/вывода и кристалл станет невозможно запрограммировать последовательным программатором.
Сигнатура используется только для идентификации ЧИПа, например для автоматического распознавания кристалла программатором.

там еще есть фьюз SPIEN можно только его убрать и прошивка последовательным программатором станет не возможна.
-----------------------------
Цитата
Хорошо. Делаю стирание Меги8. Делаю чтение - всё читается как чисто Flash&EEPROM, сигнатура не читается (FF) и фузы как бы тоже ни один не запрограммирован (или просто не удалость считать). Похоже на признаки "палёной" микросжемы? Как уточнить можно?
Ещё вопрос: как для каждого программатора свой кварц, т.е.? У меня в программе от программатора есть параметр SCK который как я понял должен быть раза в 4 меньше тактовой частоты контроллера. Для чего используется SCK?

возможно у программатора есть раздельные команды чтения сигнатуры и фьюзбитов. если она не читаються это не значит что проц паленый а просто что их не прочитали.
у всех контроллеров изначально есть установленные дефолтовские значения , значения вьюз и т.п. есь в даташите на проц.
к примеру мега настроена на работу от внутреннего рц-генератора и некоторая задержка при старте, к этому необходимых RSTDB SPIEN и область бута они есть всегда и всегда читаются если не запрещено(защата от програмирования RSTDB SPIEN). если команда стирания проходит то в 90% все должно работать.
попробуйте в нее чтонть записать, а потом считать и сравните с записаным в нее.
SCK-есть в описании на SPI,в кратце- вход/выход тактирования данных, по нему происходит считывание пришедших данных
AndV
Цитата(very_good @ Dec 22 2005, 15:50) *
Хорошо. Делаю стирание Меги8. Делаю чтение - всё читается как чисто Flash&EEPROM, сигнатура не читается (FF) и фузы как бы тоже ни один не запрограммирован (или просто не удалость считать). Похоже на признаки "палёной" микросжемы? Как уточнить можно?
Ещё вопрос: как для каждого программатора свой кварц, т.е.? У меня в программе от программатора есть параметр SCK который как я понял должен быть раза в 4 меньше тактовой частоты контроллера. Для чего используется SCK?


На AS2 обычно если сигнатура не считалась (FF), то и содержимое флэша и еепрома не считалось. Видимо, контроллер не отвечает. Надо проверить питание, кабель, тактирование МК и т.д. (Извини, если известные вещи написал...). (Или ,как уже писали, SPIEN, RSTDSBL прошиты, тогда без параллельного программатора не обойтись).
AS2 не тактирует МК, МК тактируется самостоятельно. SCK - тактовый сигнал для SPI и его частота при ISP действительно д.б. в 4 раза меньше частоты программируемого МК (на практике, у меня AS2 с SCK 125 кГц ( по умолчанию) работает с любой тактовой частотой МК).
Igor26
To __nik__ Фьюз SPIEN нельзя зашить последовательным программатором.
To very_good. Попробуйте посмотреть осциллографом, что творится на выводе XTAL2 Меги8. А затем, попробуйте дать команду программатору "Считать FLASH" и посмотрите осциллографом, что творится при этом на выводах RESET, MOSI, MISO и SCK. RESET должен быть притянут к земле в течении всего цикла чтения(в данном случае). На SCK должны быть тактовые импульсы, т.е. программатор тактирует МК. На MOSI тоже должны быть импульсы - это программатор шлет команды/данные контроллеру. По линии MISO контроллер отвечает программатору, т.е., если всё хорошо, то на этой линии тоже должны быть импульсы.
Попробуйте всё это проделать, а потом будем думать дальше.
Удачи.
very_good
Всё запустилось! Спасибо.
Собираюсь подключить семисегментный индикатор и измененять показания на нём каждую секунду, т.е. 1-2-3.... Подскажите, пожалуйста, как лучше организовать вывод индикации чтобы брать значение из буфера в двоичном виде преобразовывать его в десятичное и выводить на индикатор (как семисегментник принято описывать програмно?).
Old1
Цитата(very_good @ Dec 29 2005, 02:20) *
Собираюсь подключить семисегментный индикатор и измененять показания на нём каждую секунду, т.е. 1-2-3.... Подскажите, пожалуйста, как лучше организовать вывод индикации чтобы брать значение из буфера в двоичном виде преобразовывать его в десятичное и выводить на индикатор (как семисегментник принято описывать програмно?).

Описать таблицу перекодировки значения буфера, в код индикатора и поместить ее во FLASH (значения в таблице будут зависеть от того, как будет подключен индикатор ):
Код
__flash unsigned char TABLE[10]=
{
     0xXX,//код семисегиентного индикатора для символа "0"
     ....
     0xZZ//код семисегиентного индикатора для символа "9"
};

Если подключить индикатор непосредственно к порту (например В), то вывод на индикатор значения буфера будет выглядеть так:
Код
PORTB=TABLE[BUFER];
IgorKossak
Цитата(very_good @ Dec 29 2005, 00:20) *
...как семисегментник принято описывать програмно?...

Например, так

И ещё одна добавочка
__nik__
написано не супер но можно понять как че работает.
вывод на дисплей 7сег как цифр так и текста + псевдо реальное время(после выключения все потеряет) работа с меню точно не помню но вроде 3 вложенности. управление уставкими и тд к каждой уставке свое название. программа не оптимизирована и работает на 100% прога написана так чтоб си (иар) компилил ее как можно в быстрый код для исполнения.Нажмите для просмотра прикрепленного файла
very_good
Спасибо за ответы!
Есть вопросы по тексту: В чём особенность определения __flash unsigned char? Если убрать __flash где тогда разместится массив? Например можно же писать для переменной unsigned char Х=0хFF;

В файле lcd.rar от IgorKossak есть деректива #ifndef LCD_H (#endif). Что она делает?
В массиве запись SegB + SegH воспринимается как логическое ИЛИ?
eXeC001er
#ifndef LCD_H (#endif)
необходимо для исклчения ругательств компилятора на повторное включение файла.
__nik__
__flash unsigned char
__flash- определение чтоб разместить в памяти программ(флеш)
без него в срам
в зависимости от компилятора может разместить в еепром с ним скорость работы ниже и на время чтения\записи необходимо запрещать прерывания(ну в крайнем случае очень желательно)
very_good
Спасибо за ответы. Всех с Новым Годом!!! Ура!




Сейчас озадачен я выводом двух/трёх цифр из буфера на семисегментник с использованием 2-х поротов (90S2313). Без прерываний наверное не обойтись? Кто как реализует сей процесс?
Old1
Цитата(very_good @ Dec 31 2005, 23:09) *
Сейчас озадачен я выводом двух/трёх цифр из буфера на семисегментник с использованием 2-х поротов (90S2313). Без прерываний наверное не обойтись? Кто как реализует сей процесс?

Хотелось бы точно знать как подключены индикаторы (или индикатор) к портам...
very_good
7-ник с ОА. Весь порт В подключен к катодам. PD5,6 подключил к ОА 2-х цифр.

Ёще вопросик по порту D: не получается управлять PD4(T0) - пин в третьем состоянии. Почему?
defunct
Цитата(very_good @ Jan 9 2006, 22:33) *
Ёще вопросик по порту D: не получается управлять PD4(T0) - пин в третьем состоянии. Почему?


возможны 2 причины.
1. не настроен соответствующий pin на вывод (DDRD = (1 << PD4)...)
2. таймер 0 настроен на подсчет импульсов с pin'а T0. (смотреть настройки Prescaler'а таймера 0)
Old1
Цитата(very_good @ Jan 10 2006, 00:33) *
PD5,6 подключил к ОА 2-х цифр.

Напрямую? Если так - это не дело, можно его сжечь (если все сегменты будут зажжены, то через ОА потечет ток 8*(15...20 мА)=120...160 мА), разгрузите вывод при помощи ключа на транзисторе... Если я правильно понял, вы собираетесь организовать динамическую индикацию, так эта тема уже обсуждалась:.здесь , и здесь
__nik__
там много нюансов и текст програмки которая выводит 6 символов в прерывании я приатачил "Дата Dec 29 2005, 15:24" схема простенькая с порта через резюк токоогранич 200...470 ом кльч управления на VT. предванителное гашение символа при смене на другой чтоб убрать кратковременное копирование предыдущего символа в текущий. прерывания чтобы небыло ярких всплесков символов. не запрещать прерывания по тойже причине. все нюансы не помню но опрос кнопок лучше тоже к индикатору привязать и в немже делать счет времени примерно для 6сегментного скорость должна быть не менее 600гц иначе цифры плавают какбы перед индикатором. у вас соответственно меньше можно. и обязателюно или оч желательно чтобы индикатор прорисовывался всегда а не только значашие сегменты. может понадобиться чтобв между цифр был пробел нужно будет ве исправлять , да и так аод и время эконовиться.
__interrupt void Timer0Overflow (void)
работа индикатора с морганием
__nik__
заранее извеняюсь я форумы прочел только.
в выше означенных форумах был поднят и так не опущен вопрос о паразитной засветке я надеюсь что на этом я его разрешу и закроем.
проблеммы "паразитной засветки" как таковой, нет есть кривые руки программеров которым лень думать головой!!! засветра появляеться в момент переключения символа, то есть когда происходит выбор следующего символа при НЕ ПОГАШЕННОИ ИНДИКАЦИИ ТЕКУЩЕГО СИМВОЛА и больше никаких причин нет и быть не может(тут головой думать надо тут вам не здесь) сталобыть перед переходом от одного символа на другой необходимо его СЕГМЕНТЫ погасить (чтоб на экране было пусто).
к вопросу на чем писать это кому что нравиться нравиться писать 1 месяц (с нуля) пиши на асме
если есть желание все гденибудь в 2 недели написать то Си.
П.С.
в тот форум не писал поскольку оч древний а вам точно и может комунибудь еще пригодиться так как рано или позно с этим всеравно сталкнется.
defunct
Цитата(__nik__ @ Jan 11 2006, 00:47) *
проблеммы "паразитной засветки" как таковой, нет есть кривые руки программеров которым лень думать головой!!! засветра появляеться в момент переключения символа, то есть когда происходит выбор следующего символа при НЕ ПОГАШЕННОИ ИНДИКАЦИИ ТЕКУЩЕГО СИМВОЛА и больше никаких причин нет и быть не может(тут головой думать надо тут вам не здесь) сталобыть перед переходом от одного символа на другой необходимо его СЕГМЕНТЫ погасить (чтоб на экране было пусто).
к вопросу на чем писать это кому что нравиться нравиться писать 1 месяц (с нуля) пиши на асме
если есть желание все гденибудь в 2 недели написать то Си.
П.С.
в тот форум не писал поскольку оч древний а вам точно и может комунибудь еще пригодиться так как рано или позно с этим всеравно сталкнется.


В чем-то с Вами можно согласиться - в кривых руках, причем целиком и полностью. А вот со сроками.. хм.. для такой задачки 1 месяц? 2 недели на C? Откуда такие цифры? 4х циферный семисегментник поднимается за пару часов на C и чуть-чуть дольше (до одного рабочего дня) на асме. и 1-2 дня на тестирование вдоль и поперек.
__nik__
Цитата
В чем-то с Вами можно согласиться - в кривых руках, причем целиком и полностью. А вот со сроками.. хм.. для такой задачки 1 месяц? 2 недели на C? Откуда такие цифры? 4х циферный семисегментник поднимается за пару часов на C и чуть-чуть дольше (до одного рабочего дня) на асме. и 1-2 дня на тестирование вдоль и поперек.

я про проэкт, а не про один индикатор говорил. как следствие и проэкты разные бывают, я сравнил примерно время написаия одного и тогоже проэкта без тестирования чистое время. стестированием не угодаеш чем проэкт больше тем тест-время больше, у си и асма есть свои плюсы и минусы владеть нужно и тем и другим. (теоретически речь шла про весь интерфейс пользователя)
very_good
Спасибо за ответы.
Все приведённые примеры ориентированы на написание прог на ассемблере. А есть всёже аналогичные примеры только на СИ? К сожалению нет возможности пару недель разбираться с прогой.
very_good
Не получается загрузить файл. Уже не первый за сегодня (сообщение Обнаружена ошибка). Что-то с форумом или у меня чего с настройками браузера (хотя прежде всё было ОК)?
_Diman_
Привет! По поводу кодирования цифры для 7-сегментного индикатора, в свое время я написал программу для этого (на DELPHI), может кому пригодится.

http://startcd.narod.ru/led.html
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.