|
|
  |
программатор для AVR |
|
|
|
Dec 20 2011, 00:26
|
Местный
  
Группа: Свой
Сообщений: 240
Регистрация: 29-01-08
Из: эМ-ск
Пользователь №: 34 553

|
SinaProg (GUI AVRdude) его тоже не нашел. Выбирал разные скорости от максимальной до минимальной, поставил Default, все равно не видит... Даже подключался к ноуту, на котором стоит WinXP pro (драйвера встали нормально и появился новый COM-порт), но там тоже программатор не нашелся ни одной программой. В CodeVisionAVR настроил все вроде нормально: Settings - Programmer : {Programmer Type: "Atmel AVRProg (AVR910)"; Communication Port: "COM 25"} Потом иду в Tools - Chip Programmer - Read - Programmer's Firmware Version В этот момент программатор мигает еще 2-мя лампочками (кажется желтой и зеленой - слишком быстро) и вылезает сообщение об ошибке: "AVRProg error entering programming mode" даже на макетке собрал примитивное устройство из книжки (один tiny2313, один кварц, пара кондеров и светодиод с резистором, подвел питание 5В, соединил проводами: MISO, MOSI, SCK, GND), все подключил, думал с ним увидится. Хрен - вообще все без изменений, те же ошибки. ну что за фигня??? ВООБЩЕ никто не видит этот программатор. Может, он не прошитый? Как это проверить? Может ли он самопрошиться с помощью какой-нибудь программы? ----------------------------- добавлено спустя 30 мин. ----------------------------- Игрался тут с настройками: в диспетчере устройств поменял скорость с 9200 на 115200 и переставил на COM2 (он был свободен). В SinaProg таки добился хоть каких-то подробностей. Итого, программатор вроде читается, но по какой-то причине не может войти в режим программирования: Цитата avrdude -C avrdude.conf -c avr910 -P com2 -b 115200 -p t2313 -q
Found programmer: Id = "AVR ISP"; type = S Software Version = U.2; Hardware Version = 0.2 Programmer supports buffered memory access with buffersize = 128 bytes.
Programmer supports the following devices: Device code: 0x13 = AT90S1200 Device code: 0x20 = ATtiny84 Device code: 0x28 = AT90S4414 Device code: 0x30 = AT90S4433 Device code: 0x34 = AT90S2333 Device code: 0x38 = AT90S8515 Device code: 0x48 = (unknown) Device code: 0x4c = AT90S2343 Device code: 0x51 = (unknown) Device code: 0x55 = ATtiny12 Device code: 0x56 = ATtiny15 Device code: 0x68 = AT90S8535 Device code: 0x6c = AT90S4434 Device code: 0xffffff86 = (unknown) Device code: 0xffffff87 = (unknown) Device code: 0x3a = ATMEGA8515 Device code: 0x41 = ATMEGA103 Device code: 0x43 = ATMEGA128 Device code: 0x45 = ATMEGA64 Device code: 0x5e = ATtiny2313 Device code: 0x60 = ATMEGA161 Device code: 0x62 = (unknown) Device code: 0x64 = ATMEGA163 Device code: 0x69 = ATMEGA8535 Device code: 0x72 = ATMEGA32 Device code: 0x74 = ATMEGA6450 Device code: 0x76 = ATMEGA8 Device code: 0x78 = ATMEGA169
avrdude: error: programmer did not respond to command: enter prog mode ================ добавлено спустя 15мин ================ вроде чего-то получилось... выставил в настройках SinaProg "AVRISP" вместо "AVR910" и стало читаться. Правда запрограммировать чего-то не особо получается все время пишет: Цитата avrdude -C avrdude.conf -c avrisp -P com2 -b 115200 -p t2313 -q
avrdude: stk500_getsync(): not in sync: resp=0x3f
avrdude done. Thank you. интересно, о чем этот "not in sync"? лампочки на программаторе никак в это время не мигают - все время светится только красная ================= добавлено еще полчаса спустя ================= по какой-то причине я не подсоединил провод RESET раньше (были подключены только MOSI, MISO, SCK, GND). Сделал это сейчас. В режиме AVR ISP все так же ничего не происходило. Переключился в AVR910 и программатор стал мигать желтой лампочкой!!!!  и сообщения нормальные пишутся: Цитата avrdude -C avrdude.conf -c avr910 -P com2 -b 115200 -p t2313 -U flash:r:"C:\Users\Voice\Documents\AVRStudio\Prog1\Prog2.hex":i -q
Found programmer: Id = "AVR ISP"; type = S Software Version = U.2; Hardware Version = 0.2 Programmer supports buffered memory access with buffersize = 128 bytes.
Programmer supports the following devices: Device code: 0x13 = AT90S1200 Device code: 0x20 = ATtiny84 Device code: 0x28 = AT90S4414 Device code: 0x30 = AT90S4433 Device code: 0x34 = AT90S2333 Device code: 0x38 = AT90S8515 Device code: 0x48 = (unknown) Device code: 0x4c = AT90S2343 Device code: 0x51 = (unknown) Device code: 0x55 = ATtiny12 Device code: 0x56 = ATtiny15 Device code: 0x68 = AT90S8535 Device code: 0x6c = AT90S4434 Device code: 0xffffff86 = (unknown) Device code: 0xffffff87 = (unknown) Device code: 0x3a = ATMEGA8515 Device code: 0x41 = ATMEGA103 Device code: 0x43 = ATMEGA128 Device code: 0x45 = ATMEGA64 Device code: 0x5e = ATtiny2313 Device code: 0x60 = ATMEGA161 Device code: 0x62 = (unknown) Device code: 0x64 = ATMEGA163 Device code: 0x69 = ATMEGA8535 Device code: 0x72 = ATMEGA32 Device code: 0x74 = ATMEGA6450 Device code: 0x76 = ATMEGA8 Device code: 0x78 = ATMEGA169
avrdude: AVR device initialized and ready to accept instructions УРААА!!! avrdude: Device signature = 0x1e910a avrdude: reading flash memory: avrdude: writing output file "C:\Users\Voice\Documents\AVRStudio\Prog1\Prog2.hex"
avrdude: safemode: Fuses OK
avrdude done. Thank you. ==================== добавлено спустя еще полчаса (на часах полпятого утра) ==================== ЗАРАБОТАЛООООО!!!!! программы пишутся, работают, огоньки бегают, все супер!!!  ИТОГО: подсоединяем правильно RESET, MOSI, MISO, SCK, GND, (а если ваша схема без кварца, то и XTAL1. И там вроде фьюз как-то для этого должен быть), шьемся по книжке (выставляем нужные fuse) и все работает. Заработало с CodeVisionAVR и SinaProg. PonyProg так и не увидел программатор.
--------------------
Продаю котят. Недорого. 50р ведро.
|
|
|
|
|
Dec 20 2011, 19:50
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(Voice2001 @ Dec 20 2011, 06:26)  ЗАРАБОТАЛООООО!!!!! программы пишутся, работают, огоньки бегают, все супер!!!  Ура-а-а-а!!! На часах половина пятого утра. Сестра, запишите -- родился эмбеддер! Счастливые родственники пожимают друг другу руки. На лицах слезы умиления... И еще пять копеек от simpleavr: http://www.simpleavr.com/avr/vusbtiny
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Dec 22 2011, 19:09
|
Местный
  
Группа: Свой
Сообщений: 240
Регистрация: 29-01-08
Из: эМ-ск
Пользователь №: 34 553

|
Несколько дней не трогал программатор, читал книжку, разбирался в портах. Сейчас решил написать маленькую прожку, подключил программатор, а он опять не хочет программировать: Цитата avrdude: error: programmer did not respond to command: enter prog mode Объясните плз порядок подключения к схеме. Делаю так: втыкаю программатор в ЮСБ компьютера, подключаю шлейф от схемки (tiny2313 и несколько светодиодов, все по книжке) к программатору, даю питание на схему. Правильно? Делал и в обратном направлении, все равно не получается... Заметил, что если в SinaProg пытаться прочитать данные (нажимать Search), то примерно 1раз из 20 он это делает успешно. Остальные разы пишет ошибку, что привел выше. При этом на схеме запущена программа "бегущие огни", и в момент нажатия Search, программа как бы сбрасывается (независимо от номера светящегося светодиода в данный момент, "огонек" начинает бежать сначала). ПС. шлейф проверил, обрывов вроде нет
--------------------
Продаю котят. Недорого. 50р ведро.
|
|
|
|
|
Dec 23 2011, 19:54
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
Цитата(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%-ой.
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
Dec 23 2011, 22:08
|
Местный
  
Группа: Свой
Сообщений: 240
Регистрация: 29-01-08
Из: эМ-ск
Пользователь №: 34 553

|
Опция -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?
--------------------
Продаю котят. Недорого. 50р ведро.
|
|
|
|
|
Dec 23 2011, 23:09
|
Местный
  
Группа: Свой
Сообщений: 240
Регистрация: 29-01-08
Из: эМ-ск
Пользователь №: 34 553

|
ПС. еще раз пересмотрел книжку Белова. Он пишет, что в режим программирования тинька входит по сигналу с RESET (1-я нога), и после этого, как я понял, выполнение программы должно остановиться и все программируемые выводы (MOSI, MISO, SCK) должны переключиться на вход. Этот вывод (RESET) у меня был подключен только к программатору и больше нигде не использовался. Тогда почему программатор не мог войти в режим программирования? Не могли же наводки с ноги SCK (этот провод - ближайший в разъеме программатора) так негативно сказаться?! Родной провод, шедший в комплекте, всего 30см. Я сделал свой провод примерно 15см, при этом сделав скрутку каждого сигнального провода (MISO, SCK, RESET, XTAL1) попарно с землей (GND). Только MOSI получился в паре с VCC. Так что вряд ли это были наводки. Мой разъем - левый, 10-пиновый.  Так в чем же тогда проблема?
--------------------
Продаю котят. Недорого. 50р ведро.
|
|
|
|
|
Dec 24 2011, 13:37
|
Местный
  
Группа: Свой
Сообщений: 240
Регистрация: 29-01-08
Из: эМ-ск
Пользователь №: 34 553

|
мистика продолжается..... залил прожку, тестирующую дребезг контактов (за основу для программирования нач.настроек взял пример из книжки). Смысл такой: нажимаем на кнопку (замыкаем младший бит 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
..... и на этом чип сдох. Отказывается читаться, стираться и вообще.... Пишет как и раньше, что не может войти в режим программирования. Думал, микросхема такая попалась с битыми блоками памяти. Вставил вторую (которую до этого момента оставил прозапас). Сначала заливал небольшие прожки, было все ок. Потом залил приведенную выше... и все... второй чип сдох........ что я делаю не так?
--------------------
Продаю котят. Недорого. 50р ведро.
|
|
|
|
|
Dec 24 2011, 14:36
|

Гуру
     
Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659

|
Цитата(Voice2001 @ Dec 24 2011, 20:15)  prottoss, пробовал (вообще ВСЕ убрал), не помогает Давайте определимся ешще раз: 1. Новый МК программатор видит и нормально программирует. 2. После манипуляций с программатором-программируемым МК возникают проблемы. Очевидно, что, либо вы не верно программируете фьюзы, либо на линиях ISP что то подключено, что мешает нормальному обмену данными по ISP.
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|