Jump to content
Sign in to follow this  
Evgeniy90

Проблема с прошивкой мд Шанс на Atmega8

Recommended Posts

Здравствуйте! Столкнулся со следующей проблемой: при сборке МД "Шанс" дошел до этапа прошивки МК, в итоге запорол 3 атмеги. Прошивал 3 способами:
1. Через Arduino UNO(As ISP) просто МК
2. Через Arduino UNO(As ISP) МК внутрисхемно(соответственно с обвязкой)
3. Через USB ASP внутрисхемно(с обвязкой соответственно).
Вышло так, что в наличии кварца 11.0592 МГц не было, и я временно впаял 12 МГц. Прошил трижды всё правильно(фьюзы , контакты и т.д). После прошивки просто не видит МК (ну и плата не работает без МК.да и Бог с ней, но МК всеравно не могу считать). В чем причина понять не могу. Одно думаю, что это разница между 11.0592 и 12 МГц. Посоветуйте как решить проблему.
Коды ошибок после прошивки во всех трёх случаях одинаковые:
Sinaprog -invalid device signature
Averdude -avrdude: warning: cannot set sck period, please check for usbasp firmware update

target don't answer

Share this post


Link to post
Share on other sites
Posted (edited)

1) Чипы читали перед прошивкой? 

2) Скиньте фьюзы, что заливались. Кварц не причем. Есть вариант неправильных фьюз, когда выбран режим "external clock".

3) Пробовали на usbasp "медленный" режим? (перемычка jp3)

Edited by Jeniok

Share this post


Link to post
Share on other sites

Читал, всё работало. Перемычки JP 3 не впаяно в программатор, объясните зачем снижать скорость?

chance_fuse.gif

Вернее это скриншот фьюзов из которых я ставил. В синапрог я считал калькулятором фьюзов. В обоих случаях вышел одинаковы старший и младший бит.

Share this post


Link to post
Share on other sites

Новые контролллеры VIPerPLUS - практический вебинар 10 июня от ST

В программе вебинара - новые контроллеры VIPerPlus, расширяющие границы применения этих компонентов. Обзор их характеристик и преимуществ. Практика. Демонстрация испытаний из лаборатории ST. Пример моделирования в среде E-DesignSuite.

Зарегистрироваться

Posted (edited)

jp3 нужен для снижения частоты тактового сигнала программатора, если каким-то образом оказалось, что контроллер зашит на низкую тактовую частоту. CLK программатора должен быть в несколько раз ниже тактовой частоты контроллера.  Это просто нужно проверить. Засуньте оголенный проводок в металлизацию на плате, где должен стоять jp3.

Второе, установлен бит SCOPT, который снижает амплитуду тактового сигнала. Попробуйте установить временно на плату кварц на 3-8 МГц и прочитать чип.

И все же скиньте в hex формате фьюзы, которые вы насчитали в калькуляторе.

 

Edited by Jeniok

Share this post


Link to post
Share on other sites

Спасибо

Пробовал через 4 и 8 МГц -не читает.

Фьюзы:

LOW fuse 0x3F 

High fuse 0x89

С jp3 попробую вечером, отпишусь.

Очень Вам благодарен!

Share this post


Link to post
Share on other sites
                     

Технология SOI против паразитных эффектов в драйверах затвора

Микросхемы драйверов затвора силовых транзисторов, изготавливаемые по технологии монолитного кремния, подвержены негативному влиянию отрицательных напряжений, возникающих на опорном выводе для верхнего плеча. Технология «Кремний-на-изоляторе» (Silicon-on-insulator, SOI) является надежным решением этой проблемы, о чем свидетельствуют результаты испытаний трех микросхем драйверов затвора полумостовой схемы, в том числе – SOI-драйвера производства Infineon.

Читать статью

6 часов назад, Jeniok сказал:

jp3 нужен для снижения частоты тактового сигнала программатора, если каким-то образом оказалось, что контроллер зашит на низкую тактовую частоту. CLK программатора должен быть в несколько раз ниже тактовой частоты контроллера.  Это просто нужно проверить. Засуньте оголенный проводок в металлизацию на плате, где должен стоять jp3.

Второе, установлен бит SCOPT, который снижает амплитуду тактового сигнала. Попробуйте установить временно на плату кварц на 3-8 МГц и прочитать чип.

И все же скиньте в hex формате фьюзы, которые вы насчитали в калькуляторе.

 

А можно подать сигнал на XTAL1 и сбросить фьюз?

Share this post


Link to post
Share on other sites
Posted (edited)
59 минут назад, Evgeniy90 сказал:

А можно подать сигнал на XTAL1 и сбросить фьюз?

Только если в фьюзах прошита работа от внешнего тактового сигнала. Что реально произошло - непонятно.

Есть 3 способа заблокировать контроллер.

1) Зашить LOCK биты, защищающие контроллер от чтения. Лечится обычным Erase, то есть стиранием.

2) Выбрать не тот источник тактирования. Лечится установкой кварца или подачей тактового сигнала с внешнего источника. Если что, кварц и внешний тактовый не взаимозаменяемы.

3) Самое страшное - зашить биты RSTDSBL (отключает ножку reset ) и SPIEN - тогда спасет только параллельный программатор или FUSEbitdoctor .

Нужно еще раз подряд проверить:

 - Вытянуть проц с платы (надеюсь там dip а не soic), вставить его в панельку, подключить навесным кварц, желательно внешнее питание, и шины программатора.

- Попробовать стереть его с кварцем, и если найдется с внешний источником тактового сигнала. И то, и то произвести в режиме низкой скорости (jp3)

Если не прокатывает, то проц в коробочку и пусть ждет пока не соберете fusebitdoctor.

 

Еще скиньте скрин с фузебитами от sinaprog, точно так же как вы выставляли.

 

Edited by Jeniok

Share this post


Link to post
Share on other sites

В синапрог я уже прошел этот этап, скриншота нет. Я помойму вручную вводил эти фьюзы. 

Сейчас попробую это всё с JP3-отпишусь

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Сообщения

  • Similar Content

    • By SAYMPR
      Друзья ! Нужна помощь,есть схема бортового устройства в протеусе,так же и программа на С.Не получается  программу связать со схемой.Помогите пожалуйста!
      Протеус принимается только асемблер,а мне нужен С.

    • By ARV
      Вот такая плата была когда-то давно разработана и изготовлена... Но ни разу не включалась, не проверялась и не налаживалась.
      Схема с перечнем сохранилась только на бумаге.
      Схема предназначалась для изучения/освоения микроконтроллера AT90PWM3 и CAN, использование их для управления трехфазным инвертором. 
      На плате установлены:
      микроконтроллер AT90PWM3-16SQ в типовой обвязке с кварцем; внешний CAN-контроллер MCP2510-I/SO; драйвер CAN-шины MCP2551-I/SN; регистр SN74HC597 для ввода 8 дискретных сигналов; 4 оптрона ILD74 для развязки дискретных сигналов; Операционный усилитель AD824AR для аналоговых сигналов, подаваемых на МК; элементы N74AHCT86D для возможности инвертирования выходных сигналов (при помощи перемычек) буфер SN74AC244DWR для умощнения выходных сигналов; преобразователь питания ИРБИС МПА10А (входное напряжение 9...18В); необходимая обвязка, включая восстанавливаемый предохранитель, кварц, защитные диоды на входах и т.п. На плате много контрольных точек, есть технологические перемычки. Схема оттрассирована в расчете на то, что МК формирует 3 двуполярных ШИМ-сигнала (т.е. всего 6 ШИМ-ов для верхних и нижних ключей отдельно)  возможностью индивидуально проинвертировать каждый (т.к. драйверы IGBT могут иметь как прямые, так и инверсные входы). 4 аналоговых сигнала с датчиков тока или напряжения поступают в МК для реализации ОС и защит. Управление ведется по CAN и с помощью 8 дискретных сигналов.
      Больше подробностей вспомнить не могу...
      Плата, как видите, даже не мылась от канифоли - так и пролежала 10 лет... Паялась профессиональнми монтажниками вручную, трассировалась тоже, но за качество, увы, не порчусь головой...
      Думаю, плата может быть хорошей основой для самодельного инвертора или как экспериментальная основа для изучения микроконтроллера, CAN-контроллера и шины, а так же вообще для всяких поделок. 
      Отправлю почтой РФ комплект: 
      Схема - 1 лист А1 эскиз размещения компонентов на плате - 1 лист А4 (немного поврежден, но читаем) перечень компонентов - 2 листа А4 эскиз печатной платы - 1/2 листа А4 плата в сборе дополнительный контролер AT90PWM3B (на плате распаян другой - AT90PWM3) Цена 3000 рублей, доставка отдельно. Бонусом могу добавить дополнительный CAN-контроллер и CAN-драйвер.
    • By WetCrow
      Добрый день!

      Пытаюсь настроить на Atmega8 Asynchronous Clock. Цель -- сделать часы.
      По задумке, мк работает на частоте 1МГц (фьюзы не трогаю, оставляю заводские значения), к пинам TOSC1/TOSK2 подключается кварц на 32.768 кГц, а Timer2 настраивается таким образом, что генерирует прерывания один раз в секунду.
      Вот, что я делаю:
      ASSR |= 1 << AS2; TCCR2 = 0b00000101; TIMSK |= 1 << TOIE2; sei();
      Нужно ли подключать кварц с конденсаторами, или без -- не понял. В даташите информации не нашёл. Пробовал и так, и эдак -- разницы не заметил.
      Что получилось:
      В Протеусе всё вроде работает правильно, однако, даже если отсоединить кварц, это ни на что не влияет. На макетной плате схема работает раза в 1.5 быстрее, чем нужно; опять таки, отсоединение кварца ничего не меняет. В чём я ошибаюсь, чего не учитываю?

      К сообщению прикладываю файл прошивки и протеуса.
      Примечания:
      в Протеусе сделал имитацию дисплея на светодиодах, так как встроенный вариант не работал корректно. Для того, чтоб цифры мигали медленнее, можно раскомментировать строку "#define DEBUG_BLINKING" -- иначе в протеусе не рассмотреть, что получается. Пишу на C++ под avr-g++, впрочем, никаких фишек языка не использую. clock.cpp clock_build_with_LEDs.pdsprj
    • By doktorsvet
      После подтыкания основного шлейфа кнопка выкл перестает работать.


    • By Игорь Багрий
      Единственно, что я смог сделать за неделю в изучении языка Си это написать примитивную программу для МК Аттини13а, что сможет 1м нажатием на кнопку включить ЛЭД-лампу. Повторным нажатием выключить ее. Но никак не могу уже который день придумать, как написать текст в листинге так, чтобы одним нажатием загоралась 1я лампа, потом еще одним нажатием 2я, и только после 3го нажатия тухли все лампы.  Товарищи бывалые и профессионалы, помогите! ) 
      Вот исходник вкл./выкл. 1й лампы: 
      /***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Evaluation Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project :  Version :  Date    : 05.04.2020 Author  : Freeware, for evaluation and non-commercial use only Company :  Comments:  Chip type               : ATtiny13A AVR Core Clock frequency: 1,200000 MHz Memory model            : Tiny External RAM size       : 0 Data Stack size         : 16 *****************************************************/ #include <tiny13a.h> int st=0; // Declare your global variables here void main(void) { // Declare your local variables here // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Input/Output Ports initialization // Port B initialization // Func5=In Func4=In Func3=Out Func2=In Func1=Out Func0=In  // State5=P State4=P State3=0 State2=P State1=0 State0=P  PORTB=0x35; DDRB=0x0A; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-5: Off GIMSK=0x00; MCUCR=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=0x00; // Analog Comparator initialization // Analog Comparator: Off ACSR=0x80; ADCSRB=0x00; DIDR0=0x00; // ADC initialization // ADC disabled ADCSRA=0x00;  while (1)  { if (!PINB.0)     {     if (!st)         {         st=1;         if (!PINB.1)             {             PORTB.1=1;             }             else             {             PORTB.1=0;             }         }     }     else     {     st=0;     } } }
×
×
  • Create New...