Zheka

Начинающим О Фьюзах (Fuse Bits)

325 сообщений в этой теме

SviMik    6

Шью через avrdude. Если явно не давать задачу шить фьюзы - он в них не пишет вообще. Поэтому, если фьюзы менять не надо - вероятность что-то испортить равна нулю :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
julich    0

Я не шью фьюзы. Я стираю флеш, после он пишет что лок биты в нуле, т.е. прочитать кристал нельзя. Фьюзы тоже пишет все ноль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
wowa    4

Говорят же вам!!! Пользуйте AVRDUDE - он быстрей работает чем стандартная фишка в СВАВР и запороть фьюзы с ним сложнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Saddam47    0

Народ помогите пожалуйста! Шил мегу 8-ю командой "program" (pony Prog). короче запорол (ошибка 24)! Пробовал внешний генератор 6мгц - не помогло, кварц 11,059 - тоже самое! Как можно попробовать оживить без параллельного программатора? ....Или ставить свечку за упокой?(((((

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
SAN777    0

Добрый день всем.

У кого-нибудь получилось писать Attiny2313 UPA-USB-программатором?

Если да, то подскажите, в какой последовательности пишется Flash, Lock bit и Fuse bit.

Ведь в УПЕ, я так понимаю, можно писать и стирать Flash, Lock bit и Fuse bit отдельно.

Что означает при установке Fuse bit - True и False?

Правильно ли я понимаю True-вкл. функции, а False-откл? Если да, то Lock bit должны быть False?

И если мне нужно CKSEL0=V, SUTO=V, SPIEN=V, то я ставлю CKSEL0=True, SUTO=True, SPIEN=True, а

остальные False? Эксперементировать особо нет желания т.к. при неверной установке Fuse bit микроконтролер перестает программироваться, а за новым Attiny2313 100км.

Считал УПОЙ Fuse bits новой ATtiny2313.

CKSEL0--False

CKSEL1--False

CKSEL3--False

SUT0--False

CKDIV8--False

SPIEN--False

остальные--True и Lock bits: LB1,LB2--True.

Получается наоборот? И если мне нужно CKSEL0=V, SUTO=V, SPIEN=V, то я ставлю CKSEL0=False, SUTO=False, SPIEN=False, а

остальные True?

Спасибо за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
SAN777    0

По схеме ,в которой должна работать ATtiny2313, используется внешний кварцевый резонатор на 10МГц .По кальку фьюзов приведенному выше и из даташит видно, что тюни имеет встроенный генератор и может использовать внешний кваврцевый резонатор,в зависимости как стоят фьюзы.Поэтому может нужно сначала записать фьюзы под внутренний генератор и лок биты, а потом залить прошивку в флеш? После проверить правильность записанного и переписать фьюзы под внешний кварц и опробовать работу в схеме?

Спасибо.

Изменено пользователем SAN777

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
SAN777    0

Оказалось все просто:галочки(False для UPA-USB- программатора) на

CKSEL0, SUT0, SPIEN .

На остальные фьюз биты и лок биты снимаем галочку(True для UPA-USB- программатора).

УПОЙ фьюз и лок биты пишутся и читаются отдельно от флеш.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
saidbek92    0

Выкладываю неплохой калькулятор FUSов (сам пользуюсь).Там ещё пара книжек для начинающих.Может кого заинтересует.Есть неплохая подборка книг по AVR,кому надо пишите.

http://depositfiles.com/files/c6cvb8teq

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Выставил фьюзы так:

post-19544-1271225329,33_thumb.png

Кварц 4,608МГц.

PA0,Pa1 в z состоянии. Конденсаторы по 22пФ.

Почему может не работать?

P.S. CKSEL0=1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dsx    0

Приветствую!

Я установил фюзы CKSEL0 - CKSEL3 в не запрограммированное состояние (везде стояли птички), сделал это для того, чтобы МК работал от внешнего кварца, но после этой процедуры он перестал отвечать компу и работать. Скажите, как его можно вернуть в былое состояние, и возможно ли это вообще.

МК - ATMega8

Софт - Code Vision AVR

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
dsx    0

Насколько я знаю AVReal умеет задавать частоту, надо только правильно его подключить, с пятью проводами это возможно или надо собирать нормальный программатор? Если надо собирать, тогда я могу подать на XTAL 12 мегагерц от любого генератора, даже если это будет отдельное устройство? И последнее, вычитал где-то что можно через ШИМ подать частоту,есть ATMega8515, подскажите схемку и прогу для этих целей, можно ссылками.

Заранее благодарен

Изменено пользователем dsx

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
wert9    0

Помогите с Фьюзами, один камень ужо запарол, второго портить не хочу.

Надо настроить камень на работу от внешнего кварцевого резонатора 8МГц, в файлике с прошивкой было написано

Fuse bits для процессора ATMega8l надо поставить 0xD9EF
, подскажите какие галки поставить в ПониПрог чтоб контроллер прошить без вреда? Зарание спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
wert9    0

Вот пытаюсь выставить Фузы так:

Это окно калькулятора фузов

03d1f3550c6ft.jpg

Требуется выставить 0хD9EF, как понимаю D9- Hidh, а EF-Low.

Вот какие галки в ПониПрог поставил

a5a8f2980161t.jpg

Правильно иль опять запорю камень?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
wert9    0

Читал мануалы и рыскал по форумаи, вроди разобрался с фьюзами, чтоб камень работал с кварцем 8мгц, то программируется в ПониПрог SUT1, BODEN (ставятся глки). А все остольные галки убираются кроме двух которые закрашены серым RSTDISBL и SPIEN, если у них убрать галки то как понял камень можно будет перепрошить только с помошью параллельного программатора, первый отключает сброс а второй возможность прошивки по SPI?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Medvedev    0
А все остольные галки убираются кроме двух которые закрашены серым RSTDISBL и SPIEN, если у них убрать галки то как понял камень можно будет перепрошить только с помошью параллельного программатора, первый отключает сброс а второй возможность прошивки по SPI?

Совершенно верно. Только параллельный программатор необязательно юзать. Есть еще спец девайсы вроде этого http://www.rlocman.ru/shem/schematics.html?di=65084

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
PESOK    0

Доброго времени суток!

Решил собрать устройство на ATmega8 буду первый раз шить AVR.

Есть два вопроса.

Первый касается серого фьюза SPIEN, серый он то серый но галочка под ним не просматривается

post-91507-1280763742,09_thumb.jpg

это нормально?? не переведется МК на параллельное программирование, после установки фьюзов?

Второй вопрос - мне надо чтоб МК работал от внутреннего генератора 8МГц

Правильно ли я выставил фьюзы??

post-91507-1280763746,31_thumb.jpg

Программа Понипрог2000

Изменено пользователем PESOK

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
evgesha53    1

Ну если галка это запрограммированный бит в этой проге,то правильно.Число 0100.А вот CKOPT выключи.

Раз тактируешь от внутреннего RC.SPIEN похоже от дурака спрятан.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
DowJones    0

Трудно даташит что-ли почитать?

Там все подробнейше описано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
G1KuL1N    100

Если нужно низкое энергопотребление то CKOPT лучше выключить но увеличиваются шансы ловить глюки :) - это "усилитель" тактового генератора - доводящий его амплитуду до напряжения питания. Так же опасный фьюз - RSTDISBL, он отключает пин RESET превращая его в порт ввода\вывода - вследствии чего перепрошить можно только паралелльным программатором. RSTDISBL и SPIEN лучше вообще не трогать - если нет паралелльного программатора

Изменено пользователем G1KuL1N

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
evgesha53    1

CKOPT не то,что-бы желательно.А необходимо отключить,потому ,что-тактировать он собирается от внутреннего генератора.Без внешнего резонатора.

Изменено пользователем evgesha53

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
qazaq    12

Всем доброго времени суток. Есть вопрос по фьюзам этой схемы (таблица там же,на форуме). Согласно таблицы, в CVAVR поставил галочки на CKSELL все и SUT 0, контроллер совсем перестал работать. Сбросил все фьюзы,запустил,работает но медленно. Подскажите,какие фьюзы надо программировать.

Изменено пользователем qazaq

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oleg-him    0

В атмегу8, во фьюзах CKSEL0…CKSEL3 случайно выставил значение 1011. После чего МК притворился что умер. В описании посмотрел, и как бы вообще нету такой комбинации фьюзов для настройки частоты. Ни от внутреннего ни от внешнего генераторов. Как лечить в этом случае? Генератор подключать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: forestdozor
      Здравствуйте!

      Мне нужно измерить длительность импульса. Для этого сначала применял внешнее прерывание, а теперь перешел на режим захвата таймера в Atmega 328.
      Однако сейчас происходит странное: Через определенное таймер просто останавливается. Гугл результатов не дает, ни у кого захват таймера 1 не останавливается.
      Подскажите пожалуйста, что делать?
      Среда разработки CodeVisionAVR v3.12. Сейчас попробовал версию 3.3, толку нет. Не работает. Код максимально упростил, но по прежнему толку ноль.
      Переполнение таймера 0 так же работает отлично, до тех пор, пока что-то не произойдет с прерыванием по захвату. Как только что-то произошло - мк останавливается...
      Может немножко подождать, и увеличить значение счетчика current_timp еще на пару значений... Совсем не знаю что делать.
       
       
      interrupt [TIM1_OVF] void timer1_ovf_isr(void)
      {
      TCNT1H = 0x00;
      TCNT1L = 0x00;
      }
      // Timer1 input capture interrupt service routine
      interrupt [TIM1_CAPT] void timer1_capt_isr(void)
      {
       
             TCNT1H = 0x00;
             TCNT1L = 0x00;           // Это уже уровень танцев с бубном "авось поможет" - не помогает.
         
              current_timp++;          // Все упрощено до максимума. Мне бы он хоть количество периодов для начала...
              
        //  }
      }
      // Прерывание по переполнению первого таймера
      interrupt [TIM0_OVF] void timer0_ovf_isr(void)
      {
      // Обнуление счетного регистра.
      TCNT0=0x00;

          
          counter ++;
          if (counter > 10)
          {
                  lcd_clear();
                  sprintf(buffer,"%d us", current_timp);
                  lcd_gotoxy(0,0);
                  lcd_puts(buffer);
                  counter = 0;
          }
          
          
      }

      // Главный цикл программы
      void main(void)
      {

      #pragma optsize-
      CLKPR=(1<<CLKPCE);
      CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0);
      #ifdef _OPTIMIZE_SIZE_
      #pragma optsize+
      #endif

      // Port B initialization
      // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
      DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
      // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
      PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
      // Port C initialization
      // Function: Bit6=In Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out
      DDRC=(0<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0);
      // State: Bit6=T Bit5=1 Bit4=1 Bit3=1 Bit2=1 Bit1=1 Bit0=1
      PORTC=(0<<PORTC6) | (1<<PORTC5) | (1<<PORTC4) | (1<<PORTC3) | (1<<PORTC2) | (1<<PORTC1) | (1<<PORTC0);
      // Port D initialization
      // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In
      DDRD=(1<<DDD7) | (1<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
      // State: Bit7=1 Bit6=1 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T
      PORTD=(1<<PORTD7) | (1<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
      // Делители таймера 0 рассчитаны таким образом , что его тактовая частота = 15,625 КГц. Расчет был на применение в схеме семисегментников, но с LCD индикатором будет информативнее.
      TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00);
      TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00);
      TCNT0=0x00;
      OCR0A=0x00;
      OCR0B=0x00;
       
      // Настройка таймера 1
      TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
      TCCR1B=(1<<ICNC1) | (1<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
      TCNT1H=0x00;
      TCNT1L=0x00;
      ICR1H=0x00;
      ICR1L=0x00;
      OCR1AH=0x00;
      OCR1AL=0x00;
      OCR1BH=0x00;
      OCR1BL=0x00;
      // Разрешение прерывания по переполнению таймера 0
      TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (1<<TOIE0);
      // Timer/Counter 1 Interrupt(s) initialization
      TIMSK1=(1<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);
    • Автор: voltex
      Всем привет! Подскажите, пожалуйста, как правильно считать данные с внешней eeprom по шине spi, в данном случае 25LC256.
      Написал код ссылаясь на даташит. Собрал схему в протеусе, подключил spi отладчик и вот что получил в итоге. Так же не могу проверить получается записать данные в память или нет. Весь код прикрепил.
       

      main.c
    • Автор: CUBE
      Не могу запустить асинхронный режим. 
      Ниже будет представлен код которым пытаюсь отладить. Там в 1 коде идёт работа от внутреннего источника таков (стоит 1МГц).  После 5 миганий таймер должен перейти в асинхронный режим и мигать с частотой в 1 Гц. У меня происходит 5 миганий потом ничего. Фьюзы менять пробовал, ничего не дало, сейчас дефолт. Корпус кварца к земле тянуть пробовал - безрезультатно. 
      Возможно что-то в подключении накосячил, если не видно на фото ниже, спрашиваете, нужно будет - нарисую схему. 
      Компилятор Atmel Studio 7
      Шью через Sind Prog 2.1.1 + USBasp 2.0
      Вот код: 
      .macro outi 
       ldi r16, @1 
       out @0, r16 
      .endm 
      .org $000 
      rjmp reset 
      .org $001 
      reti 
      .org $002 
      reti 
      .org $003 
      reti 
      .org $004 
      rjmp timer2_ovf 
      .org $005 
      reti 
      .org $006 
      reti 
      .org $007 
      reti 
      .org $008 
      reti 
      .org $009 
      reti 
      .org $00A 
      reti 
      .org $00B 
      reti 
      .org $00C 
      reti 
      .org $00D 
      reti 
      .org $00E 
      reti 
      .org $00F 
      reti 
      .org $011 
      reti 
      .org $012 
      reti 
      .ORG INT_VECTORS_SIZE 
       
      reset: 
      .equ portout=portd 
      .equ ddrout=ddrd 
      .def led=r17 
      .def mask=r18 
      .def counter=r19 
       outi spl,low(ramend) 
       outi sph,high(ramend) 
       
       outi ddrout, 0xff 
       
       outi tccr2, 0b00000111 
       outi timsk, 1«toie2 
       
        
       
        
       ldi led,1«5 
       ldi mask,1«5 
       sei 
      cycle: 
      cpi counter, 10 
      breq offtim 
       rjmp cycle 
       
      timer2_ovf: 
      inc counter 
       out portout, led 
       eor led, mask 
      reti 
        
      offtim: 
      outi timsk, 0«toie2 
      rjmp asinxron 
       
      asinxron: 
       outi assr, 0b00001000 
      back: 
       in r16, assr 
       cpi r16, 0b00001000 
       brne back 
       
        outi tccr2, 0b00000101 
        outi tcnt2, 0 
        outi ocr2, 0 
        outi timsk, 1«toie2 
       
       
      m1: 
      rjmp m1


      Верх меги на фото слева. 
    • Автор: TheCoolKuid
      Здравствуйте.
      Часто прошивал МК, в один из моментов по программе должна была выставляться единица на 5Б пин. После этого убрал эту функцию, но теперь при включении к питанию МК на любой прошивки пин уходит в ноль и МК не отвечает ни на UART, ни на I2C. Пин не уходит в ноль только на чистом кристалле. Даже если в новой прошивке и слома нет про включение этого пина, он в единице. Может ли это означать, что программная память посыпалась?
      Спасибо.
    • Автор: Alex_Chpook
      Здравствуйте. Делаю бегущую строку на AVR и драйверах max7219 по этой статье. Исходный код есть в конце статьи. 
      Хотел бы доработать устройство чтобы можно было передавать сообщение через Bluetooth модуль HC-05 при помощи Bluetooth terminal. Сам знаю как это можно сделать, т.к. все примеры находил только под Arduino. 
      Прошу помочь кто знает как это  можно реализовать