Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: программатор для AVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Страницы: 1, 2, 3
zhevak
Цитата(Voice2001 @ Dec 23 2011, 03:09) *
вопрос: а должен ли от программатора к схеме идти VCC (+5В)? или достаточно только GND (общий)?
Ведь схема питается от своего источника и вроде как от программатора +5В не должно быть (его и нет).

Если у схемы "свое" питание, то смысла брать питалово из программатора -- нет.

Цитата(Voice2001 @ Dec 23 2011, 23:25) *
пипец. Уже даже шнур новый короткий сделал, думал, проблема в покупном. С новым шнурком все то же.
Вставил чистую tiny2313 и все заработало, определяется нормально, входит в режим программирования (пока ничего не стал на нее заливать)
в чем может быть проблема? почему запрограммированная тинька определяется через раз, а с новой все в порядке?

-- А хрен его знает, товарищ майор! (с)

Когда у меня тетки Венду валили я приходил и задавал им вопрос:
-- Чего делали?
Они на голубом глазу отвечали. Честно-так, искренне:
-- Ничего. Оно само раз и все перестало...

Ну, во первых, Вы могли запрограммировать фьюз SPIEN.

А во вторых, если фьюзы не трогали, то попытайтесь понизить тактовую частоту обращения программатора к Тайни2313. Делается это путем вставки дополнительных "пропусков" (вставка команд NOP, то есть пауз) при формировании тактовых сигналов программатором с помощью указания ему опции -B n avrdude-у. Вы же его пользуете? n -- это количество NOP-ов. Код будет заливаться несколько медленнее, но устойчивость связи станет 100%-ой.
Voice2001
Опция -B не помогла (ставил и 5 NOP'ов, и 55, и 55555, и 999999).
В итоге в SinaProg в окне Advanced просто долго-долго тыкал в ChipErase, пока вместо "невозможно войти в режим программирования", не получилось "ОК". После этого все читается без проблем.
Программа из тиньки удалилась, фьюзы никак не поменялись и остались вот такими (от чистой микросхемы отличаются только calibration и low fuse):
calibration: 00005f60 - кстати, что это? у чистой тиньки в этом месте стоит 00005858
lock bits: 3f
high fuse: df
low fuse: e9 (у чистой в этом месте стоит 64)
ext.fuse: ff

В нижнем байте (low fuse) мы задаем только параметры генератора, и на описанные выше косяки этим байтом особо повлиять не могли...

Как описано тут, фьюз SPIEN находится в старшем байте (табл.67 на картинке из даташита к тиньке), и этот бит у нас имеет нормальное значение (можно программировать по SPI). RSTDISBL тоже в норме.

Таким образом проблему вижу только в записанной программе, т.к. она использовала весь PORTB, в том числе и старшие биты (ноги 17, 18, 19), а они по совместительству являются MOSI, MISO, SCK.
Т.е. пока программатор пытался достучаться до тиньки, она себе мигала светодиодами на этих ногах.
Правильно ли я понял проблему? И как же тогда безболезненно использовать ноги 17-19?
Voice2001
ПС. еще раз пересмотрел книжку Белова. Он пишет, что в режим программирования тинька входит по сигналу с RESET (1-я нога), и после этого, как я понял, выполнение программы должно остановиться и все программируемые выводы (MOSI, MISO, SCK) должны переключиться на вход. Этот вывод (RESET) у меня был подключен только к программатору и больше нигде не использовался. Тогда почему программатор не мог войти в режим программирования?
Не могли же наводки с ноги SCK (этот провод - ближайший в разъеме программатора) так негативно сказаться?!
Родной провод, шедший в комплекте, всего 30см. Я сделал свой провод примерно 15см, при этом сделав скрутку каждого сигнального провода (MISO, SCK, RESET, XTAL1) попарно с землей (GND). Только MOSI получился в паре с VCC. Так что вряд ли это были наводки.
Мой разъем - левый, 10-пиновый.

Так в чем же тогда проблема?
Voice2001
мистика продолжается.....
залил прожку, тестирующую дребезг контактов (за основу для программирования нач.настроек взял пример из книжки). Смысл такой: нажимаем на кнопку (замыкаем младший бит PORTD на GND), при этом будет дребезг. Считаем замыкания-размыкания кнопки и выводим их кол-во в PORTB. Если кол-во замыканий превышает 64 (шесть бит, т.к. именно столько у меня было в наличии резисторов на 300 Ом, и соот-но столько же подключил светодиодов), начинаем мигать всеми светодиодами.
Компилировал ее в AVRStudio5, заливал из SinaProg и CodeVisionAVR.
Код
/*
* TestTinkling_C.c
*
* Created: 22.12.2011 20:33:38
*  Author: Voice
*/


/*****************************************************
Project : Prog1
Простейшая программа
*****************************************************/

#include <avr/io.h>
#include <avr/iotn2313.h>

// Declare your global variables here

int main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
CLKPR=0x80;
CLKPR=0;

// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTB=0xFF;
DDRB=0xFF;

// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=P State5=P State4=P State3=P State2=P State1=P State0=P
PORTD=0x7F;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// Interrupt on any change on pins PCINT0-7: Off
//GIMSK=0x00;
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

int flag;
int flag2;
int counter;

flag = 0; // кнопка не нажата
counter = 65; // сразу переходим к миганию

while (1)
      {
          
      // Place your code here
      if ((PIND & 1 == 0) & (flag == 0)) // если нажали кнопку и до этого она была не нажата, запоминаем "нажатость"
            {
            flag = 1;
            counter = counter + 1;            
            };
      if ((PIND & 1 == 1) & (flag == 1)) // если кнопка была нажата (flag = 1) и ее отпустили (PIND & 1 == 1), запоминаем "НЕнажатость"
            {
            flag = 0;
            };
        
      PORTB = counter; // выводим кол-во нажатий
      if (PIND & 2 == 2) // если нажали "вторую" кнопку (2-й бит), сбрасываем счетчик
            {
            counter = 0;
            flag = 0;
            };
        
      if (counter > 64) // если превысили доступное кол-во нажатий, начинаем мигать
            {
            counter = 0;
            while (1)
                  {
                  // задаем паузу (2 вложенных цикла)
                  flag = 0; // используем flag как счетчик для паузы
                  while (flag < 255)
                        {
                        flag2 = 0; // "вложенная" пауза
                        while (flag2 < 255)
                              {
                              flag2 = flag2 + 1;
                              };    
                    
                        flag = flag + 1;
                        };
                  counter = !counter; // инверт предыдущего состояния светодиодов
                  PORTB = counter;                
                  };
            };
      };
}


Программа получилась на 1кб с хвостиком.
Залил ее в тиньку с помощью SinaProg, верификация прошла успешно (как потом выяснилось, он читает кажется первые 350 байт, а на остальные забивает (???)).
Схема на "нажатия" на первый бит PORTD не отвечала. Решил выгрузить программу и сравнить с залитой. В выгруженной не хватало пары сотен байт (???). Вщм, по-всякому извращался (переписывал немножко программу, убирая и добавляя некоторые шаги), чтобы по светодиодам оценить ее работу. Каждый раз прочитанная программа весила на сотню-другую байт меньше залитой (???).
В итоге при заливке вышеприведенной программы CodeVisionAVR написал при верификации об ошибках:
Цитата
FLASH contents mismatch at address: 0x18
FLASH Read: 0xc0dd
buffer data: 0xc0df

FLASH contents mismatch at address: 0x93
FLASH Read: 0x8000
buffer data: 0xe481

FLASH contents mismatch at address: 0x94
FLASH Read: 0x8010
buffer data: 0xe090

FLASH contents mismatch at address: 0x95
FLASH Read: 0x8000
buffer data: 0x839e

.....


и на этом чип сдох. Отказывается читаться, стираться и вообще.... Пишет как и раньше, что не может войти в режим программирования.
Думал, микросхема такая попалась с битыми блоками памяти. Вставил вторую (которую до этого момента оставил прозапас). Сначала заливал небольшие прожки, было все ок. Потом залил приведенную выше... и все... второй чип сдох........

что я делаю не так?
prottoss
Цитата(Voice2001 @ Dec 24 2011, 19:37) *
мистика продолжается.....
...что я делаю не так?
Что то подключено к линиям MISO, MOSI, SCK кроме программатора? Я не вдавался в код.
PS: Кстати, пользуйтесь тэгами code /code для вставки кода (есть такая кнопочка в окне ввода ответа)
Voice2001
prottoss, только светодиоды (катодом к ноге МК). Занят только MOSI (на MISO и SCK нехватило резисторов, поэтому не стал подключать), поэтому они подключены только к программатору.
Код программы так и оформил, странно, что он в спойлер не спрятался
prottoss
Цитата(Voice2001 @ Dec 24 2011, 20:08) *
prottoss, только светодиоды
Попробуйте уберите светодиоды, после этого запрограммируйте-прочитайте программу
Voice2001
prottoss, пробовал (вообще ВСЕ убрал), не помогает
prottoss
Цитата(Voice2001 @ Dec 24 2011, 20:15) *
prottoss, пробовал (вообще ВСЕ убрал), не помогает
Давайте определимся ешще раз:
1. Новый МК программатор видит и нормально программирует.
2. После манипуляций с программатором-программируемым МК возникают проблемы.

Очевидно, что, либо вы не верно программируете фьюзы, либо на линиях ISP что то подключено, что мешает нормальному обмену данными по ISP.
Voice2001
prottoss, Пока я записывал короткие программы, все было ок. Когда записал более 1кб, начались проблемы (от разницы в записанной и прочитанной программы до полной невидимости чипа).
Фьюзы в первом чипе поставил по книжке (чтобы работал от внешнего кварца), у второго чипа вообще не трогал. Да и тогда были бы проблемы с мелкими программами, а начались только с программами выше 1кб.
Перепроверил в -дцатый раз подключение шлейфа от программатора к схеме - все ок: подключены ВСЕ ноги, которые есть на шлейфе, кроме VCC. При этом в схеме на них ничего не висит
prottoss
Цитата(Voice2001 @ Dec 24 2011, 21:01) *
Фьюзы в первом чипе поставил по книжке (чтобы работал от внешнего кварца)
Покажите еще раз, что там в книжке про фьюзы. И заодно что за кварц.
Voice2001
кварц по книжке - на 4МГц (правда он не в металлическом корпусе, а как конденсатор выглядит - такая синяя капля с 2-мя ножками). На нем написано 4.00G и рядом такой типа логотип: большая буква C, внутри нее M и рядом D.
Конденсаторы использовал на 47пФ (на них написано 470. Это ведь 47пФ?).
В книжке рекомендуют 22 (22 чего?). Наверно код 220, у которого не обозначили 0, т.е. 22пФ.
В CodeVisionAVR установил галки на след.фьюзах:
SUT0
CKSEL2
CKSEL1
С остальных галки сняты.

Еще не до конца в голове устаканилось, когда и где пишем 1, и что это значит. Суть-то понятна: где 0, значит там "пережгли" перемычку - фьюз задействован. А где 1, там перемычка осталась, фьюз не задействован. Но в разных программах галка значит разное. Вот это и создает путаницу.

сейчас попробовал убрать кварц и конденсаторы, и на 5-ю ногу подключил провод XTAL1 с программатора (типа задающий генератор). Все то же самое - не может войти в режим программирования
prottoss
Цитата(Voice2001 @ Dec 25 2011, 04:05) *
кварц по книжке - на 4МГц (правда он не в металлическом корпусе, а как конденсатор выглядит - такая синяя капля с 2-мя ножками). На нем написано 4.00G и рядом такой типа логотип: большая буква C, внутри нее M и рядом D.
Конденсаторы использовал на 47пФ (на них написано 470. Это ведь 47пФ?).
В книжке рекомендуют 22 (22 чего?). Наверно код 220, у которого не обозначили 0, т.е. 22пФ.
В CodeVisionAVR установил галки на след.фьюзах:
SUT0
CKSEL2
CKSEL1
С остальных галки сняты.

Еще не до конца в голове устаканилось, когда и где пишем 1, и что это значит. Суть-то понятна: где 0, значит там "пережгли" перемычку - фьюз задействован. А где 1, там перемычка осталась, фьюз не задействован. Но в разных программах галка значит разное. Вот это и создает путаницу.

сейчас попробовал убрать кварц и конденсаторы, и на 5-ю ногу подключил провод XTAL1 с программатора (типа задающий генератор). Все то же самое - не может войти в режим программирования

1. Кварц поставьте нормальный. Металлический. Любой от 1 до 16 МГц.
2. 47 пф конденсаторы - это слишком много, лучше вообще их уберите. Тем более, что Вы толком не знаете, что у Вас за кварц.
3. Скачайте даташит на используемый Вами контроллер. Найдите раздел System Clock and Clock Options -> Clock Sources. В нем есть таблица: Device Clocking Select, где даны основные комбинации фьюзов для тактирования. Для более тонкой настройки для внешнего кварца ниже есть еще одна таблица - Crystal Oscillator Operating Modes

Кстати. Зачем Вам вообще нужен был кварц? Чем Вам не понравился внутренний RC генератор??? Для освоения МК самое то.
Voice2001
Поставил на 10МГц железный. Ставил раньше на 4, т.к. именно такой указан в книжке. Почему он не железный - хз, в магазине дали именно такой
Схема все равно не запускается на программирование (кварц установлен, конденсаторы тоже. Потом конденсаторы убрал, кварц оставил. Потом и кварц тоже убрал)
prottoss
Я так понимаю, что "чистых" МК в арсенале уже нету?
Voice2001
угу, вот сейчас поеду... Их бы не убить. Все ж по книжке делал...
prottoss
Цитата(Voice2001 @ Dec 25 2011, 13:31) *
угу, вот сейчас поеду... Их бы не убить. Все ж по книжке делал...
Кстати, еще один шанс попробовать реабилитировать контроллер.
Подайте на XTAL1 частоту с контакта LED программатора.
Выводы RESET и XTAL1 подтяните к напряжению питания программируемого контроллера резисторами 10 - 47 кОм
zhevak
Цитата(Voice2001 @ Dec 25 2011, 13:31) *
Их бы не убить.

Даже не надейтесь!
Современные МК очень сложно убить. (Хотя дурость безгранична...)

Если Вы делали все так, как описывали, то Вы свои МК __не_убили__. В самом худшем случае Вы их просто запрограммировали (сконфигурировали) в какой-то такой режим, где они не откликаются. Но они у Вас __живые__. Самое тяжелое, что может Вам потребоваться -- это воспользоваться программатором, который позволяет обращаться к МК в так называемом "высоковольтном режиме". "Высоковольтный" -- это всего лишь +12В на ножке сброса. Пример такого программатора STK500. Программатор нужен Вам только для того, чтобы восстановить обычную (старую) конфигурацию у АВР-ок. Если Вы подойдете к менеджерам в магазине, и объясните ситуацию, то он наверняка Вас сведет с инженером по применению. Если Вам удастся расположить к себе инженера, то, я уверен, что он Вам не откажет в "восстановлении" конфигурации на своем STK500. Про консультацию я уже просто молчу. В каждом уважающем себя большом магазине всегда есть такой инженер. Спрашивайте.

Вы можете значительно облегчить работу консультантов, если покажете фотки, что Вы там сделали. Было бы хорошо, если приведете схему, Расскажите об источнике питания. Я так понимаю, осциллографа у вас нет, чтобы проверить генерацию колебаний на кварце? Тогда попробуйте посмотреть через конденсатор 10нФ-0.1мкФ, что там у Вас делается на выводе XOUT вольтметром, включенным на переменный напряжение. Если есть генерация, то вольтметр хоть что-нибудь покажет. Если нет, то, понятно, -- покажет ноль.

И еще совет, постарайтесь найти кого-нибудь из своего окружения. Повесьте объявление на местном форуме, что Вам требуется помощь. Я уверен, что из 10-20 тысяч людей, проживающих рядом, найдется не менее 3-5 человек, кто умеет обращаться с АВР-ками. А у тех, кто знает таких людей (но сам не работает с МК), таких будет десятками. Вам нужно преодолеть только первую ступеньку. Она -- самая трудная. Порой кажется, что она высотой со стену. Поэтому не стесняйтесь обращаться за помощью. Все проходили через это. Нормальный человек поймет и постарается помочь.
Voice2001
zhevak, ну, что они просто крепко спят, это я примерно догадываюсь. Про высоковольтный программатор тоже читал sm.gif
Вот купил еще 4штуки тинек, и еще пару atmega8, чтобы собрать этот восстановитель фьюзов.
Как бы это все в спячку не перевести...
Еще вот реальная странность с размером программ. Заливается нормально, а считывается меньше, чем должно быть, да еще и с повреждениями. Т.е. не просто в конце куска не хватает, а где-то с середины памяти байты совсем не те значения имеют, которые должны быть.
Боюсь, как бы не получилось, что в этот восстановитель (мега8) программа криво зальется и еще он уснет.

ПС. как-то получилось, что в моем окружении нет людей, разбирающихся в этом, поэтому обратиться особо не к кому. А мучить с нубскими расспросами незнакомых людей как-то не хочется.
Вот поэтому на форуме до вас докапываюсь - вы хоть сдачи не дадите sm.gif
prottoss
Цитата(Voice2001 @ Dec 26 2011, 01:45) *
Вот поэтому на форуме до вас докапываюсь - вы хоть сдачи не дадите sm.gif
Никто Вас тут бить не собирается sm.gif На то он и форум, чтобы задавать вопросы.

Вы для начала попробуйте поработать с МК без кварца. Не трогайте фьюз биты. Залейте прошивку в чистый МК а за тем прочитайте. Несколько раз. Если будет все нормально можно продолжать продвигаться.
zhevak
Цитата(Voice2001 @ Dec 26 2011, 01:45) *
Еще вот реальная странность с размером программ. Заливается нормально, а считывается меньше, чем должно быть, да еще и с повреждениями. Т.е. не просто в конце куска не хватает, а где-то с середины памяти байты совсем не те значения имеют, которые должны быть.

боюсь задать вопрос -- а формат файла прошивки Вы правильный указываете? Может тут проблема?
Voice2001
zhevak, да правильный - hex, только что скомпилированный. У eeprom'овского другое расширение (.eep)
prottoss
Voice2001 можете выложить оригинальный файл и тот что считали?
Voice2001
положил в архиве
который с "TestTinkling_C_2.hex" - это считанный
ПС. сейчас не очень уверен, что эти 2 файла связаны. Могло быть так, что "TestTinkling_C_2.hex" я считал во время предыдущих экспериментов. Потом немного переделал "TestTinkling_C.hex", залил его, и чип уснул, не дав возможности прочитать с него обновленную программу
prottoss
Еще раз Вам напоминаю, что от того, что Вы залили в чип неверную-кривую программу, МК не сипортится и будет нормально определятся-читаться-писаться программатором. Одно, НО - если только ПО, которое Вы используете, само не прошило фьюз-биты.
Voice2001
prottoss, но ведь в программе, листинг которой я привел в 54-м сообщении, есть только инициализация портов. Фьюзы мы никак не трогаем.

У меня есть подозрения, что кроме порчи фьюзов, мы можем испортить микросхему неправильно работой программатора.
Чтобы считать переход в режим программирования успешным, ему нужно всего несколько байт. Тогда как программа заливается длинная и во время заливки этого килобайта могут быть какие-то проблемы в передачи информации. Типа как повреждение пакета во время пересылки данных по сети ethernet. Но TCP/IP эти ошибки ловит и исправляет, а вот есть ли такое у программатора? Проверяет ли он заливаемую программу налету?
Повторюсь, если делать верификацию, то в CodeVisionAVR она НЕ проходит. Т.е. сначала заливается программа, потом сразу следом за ней идет верификация, и на этом этапе ловятся ошибки несоответствия того, что должно быть, с тем, что реально прочитано.
zhevak
Цитата(prottoss @ Dec 26 2011, 15:32) *
Еще раз Вам напоминаю, что от того, что Вы залили в чип неверную-кривую программу, МК не сипортится и будет нормально определятся-читаться-писаться программатором. Одно, НО - если только ПО, которое Вы используете, само не прошило фьюз-биты.

Однако, мысль правильная!

Я тоже когда-то давным-давно сидел под гламурной Виндушечкой и юзал CodeVision. Припоминаю, что там где-то есть настройки, которые автоматически устанавливают фьюзы после заливки кода во флеш. Наверняка у ТС это и происходит -- он после заливки программирует фьюзы, которые, скорее всего, он даже и не задавал. А раз они не заданы правильно (стоят как попало), то в результате проц захлапывается.
Voice2001
Цитата(zhevak @ Dec 26 2011, 14:07) *
Я тоже когда-то давным-давно сидел под гламурной Виндушечкой и юзал CodeVision

но эта проблема происходит и при пользовании SinaProg'ом (avrdude): пишем в чип одно, а читается совсем другое. Фьюзы при этом не меняются (остаются такими же, как и ДО заливки программы).
zhevak
Цитата(Voice2001 @ Dec 26 2011, 16:10) *
но эта проблема происходит и при пользовании SinaProg'ом (avrdude): пишем в чип одно, а читается совсем другое. Фьюзы при этом не меняются (остаются такими же, как и ДО заливки программы).

Очень походит на несоответствие форматов файлов с кодами для заливки. Я не знаю SianaProg. Я использую avrdude и тот из-под Линуха. Компиляцию выполняю с помощью avr-gcc, на выходе получаю файл в формате elf. Затем перегоняю из него машинные коды для заливки с помощью avr-objcopy и сохраняю их в файле hex-формата. И наконец, полученный hex-файл скармливаю avrdude-у.

Но, на сколько я помню, в CodeVision (ver.1.25.8) был встроенный модуль, который позволял прошивать МК не выходя из среды программирования. Почему Вы не пользуетесь этой возможностью?

Я не помню, какой выходной формат файлов у CodeVision. Вполне может оказаться так, что он будет несовместим с форматом-по-умолчанию, принятым в avrdude. Может здесь собака зарыта?

updete
Сейчас посмотрел на Ваши hex-файлы... Не. Похоже, чушь сморозил.
Заархивируйте и выложите весь проект.
Voice2001
zhevak, я заливал программу И SinaProg'ом, И CodeVisionAVR'ом. Результат был похож - если программа близка или больше 1кб, данные заливались, но читались с ошибками.
ПС. да и по-моему, "заливателю" совершенно фиолетово, какого формата файл. Есть ГОТОВЫЙ hex - это программа, скомпилированная для выбранного МК (tiny2313). Т.е. она именного такого формата, который подходит для используемого МК.

Цитата(zhevak @ Dec 26 2011, 15:21) *
Заархивируйте и выложите весь проект.

вот
prottoss
Посмотрел, что такое sinaprog вот тут http://easyelectronics.ru/sinaprog-grafich...ya-avrdude.html
Вот теперь по первому основному окошку скажите, какой тип программатора Вы выставляете, и что вообще делает с выпадающими списками.

Поймите, программатору уже 5 лет в обед, и только Вам, оказывается достался нехороший sm.gif Наверное проблема не в нем...
Voice2001
prottoss, не-не-не, я ж не говорю, что конструкция программатора неудачная. Возможен или брак, или я чего-то не учел и криво подключаю (что скорее всего). В этом-то и пытаюсь разобраться.
В СинаПрог выбираю:
Device: ATtiny2313
Fuses: (ничего не выбрано, кнопка Program недоступна. Только по нажатию "Advanced..." появляется др.окошко, в котором прописаны фьюзы, об их значениях писал в 52-м сообщении)
Programmer: AVR910, COM2, 19200

Скорость 19200 я проставил везде: и в СинаПрог, и в КодВизионАВР, и в диспетчере устройств в св-вах своего программатора, который висит на COM2
prottoss
Цитата(Voice2001 @ Dec 26 2011, 18:21) *
Fuses: (ничего не выбрано, кнопка Program недоступна. Только по нажатию "Advanced..." появляется др.окошко, в котором прописаны фьюзы, об их значениях писал в 52-м сообщении)
Programmer: AVR910, COM2, 19200
Скорость 19200 я проставил везде: и в СинаПрог, и в КодВизионАВР, и в диспетчере устройств в св-вах своего программатора, который висит на COM2

Вот если Вы читали статейку, ссылку на которую я давал выше, то там написано красными буквами
Цитата
Но ни в коем случае не забывайте нажать кнопочку READ перед тем как что либо менять. Помните, неустановленные fuse это тоже какое то значение, которое будет записано при нажатии кнопки WRITE


Второе - программатору пофиг, какую скорость Вы выставляете для СОМ-порта, ибо USB.
Voice2001
prottoss, СинаПрог пишет только то, что ей говорят записать. Там отдельные кнопки на программу, еепром и фьюзы. Я писал только программу, не трогая фьюзы.
Мое 52-е сообщение это подтверждает, т.к. после программирования (когда тинька при чтении выдавала не те данные, но еще была жива) я читал фьюзы и они оставались неизменными.
Почему же программа в тиньку записывалась криво? Т.е. верификация не проходила...
prottoss
И так, ворачиваемся к посту №52 и конкретно к значению для low fuse:
Цитата(Voice2001 @ Dec 24 2011, 04:08) *
Программа из тиньки удалилась, фьюзы никак не поменялись и остались вот такими (от чистой микросхемы отличаются только calibration и low fuse):
calibration: 00005f60 - кстати, что это? у чистой тиньки в этом месте стоит 00005858
lock bits: 3f
high fuse: df
low fuse: e9 (у чистой в этом месте стоит 64)
ext.fuse: ff

В нижнем байте (low fuse) мы задаем только параметры генератора, и на описанные выше косяки этим байтом особо повлиять не могли...
Во первых, они изменились оказывается, хотя Вы их, вроде как, не меняли. Тем не менее, кто то или что то их поменяло... Сурпрайз однако.

Далее, смотрим, что же вся таки мы там наустанавливали? ... И сверяемся, попутно с даташитом:

LOW FUSE = 0xe9
CKDIV8 = 1 /* делитель на 8 отключен - ОК */
CKOUT = 1 /* генереация тактовой частоты на выводе CKOUT - пофиг */
SUT1 = 1 /* Стартап время - эти значения рекомендуются для керамического резонатора, но еще не фатально */
SUT0 = 0 /* См. выше */
CKSEL3 = 1 /* CKSEL3..1 = 100 This option should not be used with crystals, only with ceramic resonators - надеюсь понятно */
CKSEL2 = 0
CKSEL1 = 0
CKSEL0 = 1 /* В купе с комбинацией CKSEL3 - CKSEL1 для керамического резонатора 0.4 - 0.9 МГц */

все таки можно попробовать реанимировать МК, как я говорил выше, но Вы похоже пропустили мимо ушей - подтянуть резисторами 10-47 кОм выводы RESET и XTAL1 к напряжению питания МК и попробовать прочитать МК.
Voice2001
Цитата(prottoss @ Dec 25 2011, 11:49) *
Кстати, еще один шанс попробовать реабилитировать контроллер.
Подайте на XTAL1 частоту с контакта LED программатора.
Выводы RESET и XTAL1 подтяните к напряжению питания программируемого контроллера резисторами 10 - 47 кОм

правильно я понял, что нужно:
- убрать кварц и конденсаторы
- на 5-ю ногу подвести провод со светодиода программатора (подойдет ли выход XTAL1 от программатора)
- и эту же 5-ю ногу соединить через резистор с плюсом питания
- и так же через свой резистор подключить RESET (1-ю ногу) к плюсу питания?

в общем все это проделал (к 5-й ноге подключил XTAL1 от программатора), ничего не получилось - пишет: "не могу войти в режим программирования"
prottoss
Цитата(Voice2001 @ Dec 26 2011, 19:19) *
правильно я понял, что нужно:
- убрать кварц и конденсаторы
- на 5-ю ногу подвести провод со светодиода программатора (подойдет ли выход XTAL1 от программатора)
- и эту же 5-ю ногу соединить через резистор с плюсом питания
- и так же через свой резистор подключить RESET (1-ю ногу) к плюсу питания?

в общем все это проделал (к 5-й ноге подключил XTAL1 от программатора), ничего не получилось - пишет: "не могу войти в режим программирования"
Сделали правильно.

Так как оказалось, что фьюзы все таки изменились?

PS: Почему то кажется, что сейчас услышу ответ "Я не знаю"
Voice2001
prottoss, именно sm.gif хз, почему они изменились
кстати, а с чего вы взяли, что они изменились?
повторю сильно вкратце историю своих неудач:
сначала (совсем сначала) купил программатор, собрал мелкую схемку по книжке, все подключил, но не заработало, т.к. забыл подключить провод RESET от программатора, к МК. С тех пор перепроверил шлейф 100500 раз - ВСЕ провода задействованы, кроме XTAL1 (т.к. в схемах присутствовал кварц) и VCC (т.к. питание в схеме свое). Все вроде начало работать
.........................
все, бесполезно это описывать, т.к. с уверенностью не смогу вспомнить, где и что выставлял, когда прошивался. Но на 99% уверен, что НЕ нажимал ProgramAll ни в одной из программ-прошивальщиков, а шил только hex-программу, не трогая фьюзы и eeprom.
Фьюзы менял один раз по книжке, когда шился из CodeVisionAVR и это была самая первая прожка из книжки (она тогда заработала). Больше фьюзы не трогал и оставлял их как есть. Когда программировал, нажимал только "залить программу". При этом "Залить еепром" или "изменить фьюзы" не трогал.

в общем, у меня в запасе еще 5 новеньких тинек, буду экспериментировать..... Надолго ли их хватит?..
prottoss
Цитата(Voice2001 @ Dec 26 2011, 19:37) *
prottoss, именно sm.gif хз, почему они изменились
sad.gif

Цитата(Voice2001 @ Dec 26 2011, 19:37) *
кстати, а с чего вы взяли, что они изменились?
С того, что Вы сами об этом сообщили в посте №52

Цитата(Voice2001 @ Dec 26 2011, 19:37) *
Надолго ли их хватит?..
Зависит от степени Вашей сообразительности.
Voice2001
Цитата(prottoss @ Dec 26 2011, 17:44) *
Зависит от степени Вашей сообразительности.

учитывая 6 страниц этой темы, сообразительность у меня невысокая...

воткнул свежую микросхему. Попытался прочитать. 3 раза в течение 5 секунд это почему-то не удалось ("не могу войти в режим программирования").
Потом стал писать ОК. Откуда такая задержка?

после написания этого поста (т.е. прошла еще пара минут), попытался опять прочитать информацию с чипа. Опять не удалось, а следующие 3 раза все ОК......
это вообще как понимать?

в схеме стоит:
тинька2313 - 1шт
кварцевый резонатор на 4МГц в железном корпусе, подключенный к 4 и 5 ноге (XTAL1, XTAL2) - 1шт
конденсаторы на 22пФ подключенные одним концом к резонатору (один - к одной ноге, второй - к другой), вторым на GND - 2шт

1-й вывод тиньки (RESET), 17, 18, 19 (MOSI, MISO, SCK) и GND подключны через шлейф к программатору. Все вроде правильно. Что не так?
zhevak
Цитата(Voice2001 @ Dec 26 2011, 19:37) *
prottoss, именно sm.gif хз, почему они изменились
кстати, а с чего вы взяли, что они изменились?
повторю сильно вкратце историю своих неудач:
сначала (совсем сначала) купил программатор, собрал мелкую схемку по книжке, все подключил, но не заработало, т.к. забыл подключить провод RESET от программатора, к МК. С тех пор перепроверил шлейф 100500 раз - ВСЕ провода задействованы, кроме XTAL1 (т.к. в схемах присутствовал кварц) и VCC (т.к. питание в схеме свое). Все вроде начало работать
.........................
все, бесполезно это описывать, т.к. с уверенностью не смогу вспомнить, где и что выставлял, когда прошивался. Но на 99% уверен, что НЕ нажимал ProgramAll ни в одной из программ-прошивальщиков, а шил только hex-программу, не трогая фьюзы и eeprom.
Фьюзы менял один раз по книжке, когда шился из CodeVisionAVR и это была самая первая прожка из книжки (она тогда заработала). Больше фьюзы не трогал и оставлял их как есть. Когда программировал, нажимал только "залить программу". При этом "Залить еепром" или "изменить фьюзы" не трогал.

в общем, у меня в запасе еще 5 новеньких тинек, буду экспериментировать..... Надолго ли их хватит?..

1. Вы в каком городе живете? Может быстрее получится встретиться и порешать Вашу проблему живьем, а через тырнет?

2. Надумаете портить 2313 -- делайте по шагам.

Начните с того, что попытайтесь читать пустой МК (флешь, еепром).
Считайте фьюзы. Запишите.
Потом попробуйте просто стереть флешь.
Еще раз считайте. Убедитесь, что МК не захлопнулся.
Ну и т.д. Думаю, идею Вы уловили.

И, наверно, самое главное -- не переживайте, что Вы возможно приобрели дохлый программатор или Вам попались некондиционные МК. Во первых, это еще ничего не доказано. А, во вторых, что бы Вы сейчас ни делали, Вы получаете опыт работы с МК. Вы ради этого (ради получения опыта) и занялись этой работой? Чудес не бывает. Рано или поздно, Вы добьете эту проблему и получите колоссальный опыт, какого может не оказаться у тех, у кого все прошло гладко. И в следующий раз Вы уже будет знать эти грабли, а они (те, у кого все тип-топ) будут терять время на борьбу с проблемой. Так что все ОК. Главное -- не сдаваться!


Цитата(Voice2001 @ Dec 26 2011, 19:55) *
учитывая 6 страниц этой темы, сообразительность у меня невысокая...

воткнул свежую микросхему. Попытался прочитать. 3 раза в течение 5 секунд это почему-то не удалось ("не могу войти в режим программирования").
Потом стал писать ОК. Откуда такая задержка?

после написания этого поста (т.е. прошла еще пара минут), попытался опять прочитать информацию с чипа. Опять не удалось, а следующие 3 раза все ОК......
это вообще как понимать?

в схеме стоит:
тинька2313 - 1шт
кварцевый резонатор на 4МГц в железном корпусе, подключенный к 4 и 5 ноге (XTAL1, XTAL2) - 1шт
конденсаторы на 22пФ подключенные одним концом к резонатору (один - к одной ноге, второй - к другой), вторым на GND - 2шт

1-й вывод тиньки (RESET), 17, 18, 19 (MOSI, MISO, SCK) и GND подключны через шлейф к программатору. Все вроде правильно. Что не так?

Все так. Только установите еще конденсатор на 0.1 мкФ параллельно питанию (ножки 10-я и 20-я).
Можно еще попробовать подтянуть сброс (ножка 1) к питанию резистором в 100 кОм и установить конденсатор 10-47 пФ с нее на общий провод. Он замкнет возможные ВЧ "иголки".

Питание обязательно проверьте. Вы нам про него ничего не сказали -- откуда берете? Не знаю чем, я бы сунулся осциллографом. На худой конец тестером. Можно воткнуть параллельно питанию маленький электролитический конденсатор 10-47 мкФ. (Большой не надо.)

У "магазинских" АВР-ок (то есть с заводскими установками) ядро получает тактовую частоту с внутреннего RC-генератора. Поэтому жесткой необходимости сразу подключать кварц -- нет. Это уж если Вы переустановите фьюзы на внешний кварцевый резонатор, то тогда -- да, надо будет его подключить.
prottoss
Цитата(zhevak @ Dec 26 2011, 20:11) *
Все так. + 1
Voice2001
zhevak, спасибо за напутствия sm.gif
за свою не особо долгую жизнь я уже столько раз наступал на грабли, что выработал рефлекс проверять и перепроверять все многократно (ну не будем про забытый РЕСЕТ sm.gif - была какая-то причина, почему я его не воткнул вначале, т.к. точно помню, что видел его не подключенным и почему-то решил не подключать)
Именно поэтому я сейчас пытаюсь разобрать каждый шаг, почему же программатор не сразу увидел МК. Да и потом, когда увидел, опять один раз потерял...
Учитывая предыдущие 6 страниц, успех на каком-то шаге не гарантирует повторения этого успеха в след.итерации... Ощущение, что что-то где-то не так. Но провода вроде в порядке, шлейф менял, даже БП менял...

сейчас понавтыкаю конденсаторов, как вы советуете
только, опять же учитывая верхние 6 страниц, даже 99 успешных проб не гарантируют, что 100-я тоже будет успешной
ILYAUL
Можно взглянуть на схему Вашего устройства, хоть на листочке нарисуйте , только со всеми элементами
Voice2001
ILYAUL, да, вот она (провода, идущие к разъему (RESET, MOSI, MISO, SCK, GND), рисовать не стал):
Voice2001
Цитата(zhevak @ Dec 26 2011, 18:11) *
Питание обязательно проверьте. Вы нам про него ничего не сказали -- откуда берете? Не знаю чем, я бы сунулся осциллографом. На худой конец тестером. Можно воткнуть параллельно питанию маленький электролитический конденсатор 10-47 мкФ. (Большой не надо.)

Блок питания "МАРС" 1992г.вып. 1.6-15В, 1А (для схемы выставляю 5В).
Втыкал еще импульсный БП, модель "es18e05-p1j", 5В, 3А.
Посмотрел на осциллографе на МАРС через делитель 1:200 (воткнул 2 резистора: один на 1кОм, второй на 200кОм), получил вот такую картинку:


На первой фотке видно, что график какой-то двойной...
Цена деления: по горизонтали время кажется было чуть ли не 0.2мкС (если ставить длинней, на графике была просто широкая горизонтальная полоса), по вертикали 20мВ

Потом воткнул делитель 1.1:2 (110кОм на 200кОм), получил вот это (по горизонтали 0.02с, по вертикали 0.2В):

А потом воткнул импульсный БП с тем же делителем и получил это:


Втыкание конденсаторов параллельно питанию особых эффектов не дало. Втыкал и 2.2мкФ, и 1000мкФ.
ПС. осциллограф старый и им оч.давно не пользовались. Внутри возможно подсохли конденсаторы. Но показывает вроде нормально - если замкнуть щупы, будет ровная линия
domowoj
А резистор "ресет - +5В" где?
ILYAUL
Цитата(domowoj @ Dec 27 2011, 18:04) *
А резистор "ресет - +5В" где?


Да он не стал именно то что нужно больше всего рисовать
_Артём_
Цитата(ILYAUL @ Dec 27 2011, 17:45) *
нужно больше всего


А зачем он там (резистор)?
Да ещё и больше всего?
prottoss
Цитата(_Артём_ @ Dec 27 2011, 22:14) *
А зачем он там (резистор)?
Да ещё и больше всего?
Для того, чтобы на этом выводе были гарантировано требуемые в даташите логические уровни. Все дело в том, что вывод RESET, кстати как и XTAL1 имеет минимальный повышенный уровень входной лог. единицы. Для RESET 0,9 VCC , для XTAL 0,8 VCC

У обычных выводов это значение равно 0,6 VCC
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.