Jump to content
Zheka

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

Recommended Posts

Что же такое FUSE биты? Слова вроде бы знакомые, но многие толком и не знают их предназначение, ставят галочки и прошивают, работает устройство да и ладно. Я вам хочу рассказать немного про эти FUSE биты.

FUSE биты (фьюзы) – ну если по простому, то они настраивают определенные параметры микроконтроллеров, это некий инструмент для их тонкой настройки Фьюзы включают или настраивают такие параметры как:

- частота генератора, внешний или внутренний генератор

- запрет на чтение прошивки микроконтроллера

- включение или выключение таймеров

- деление частоты кварцевого генератора

- защита EEPROOM от стирания

…и так далее. У каждого микроконтроллера выставляются свои фьюзы, у разных микроконтроллеров разный список фьюзов, например в ATmega8 нет фьюза CKOUT, но он присутствует в ATtiny2313. В даташитах к микроконтроллерам все эти фьюзы расписаны.

Читать далее: Фьюзы микроконтроллеров AVR – как и с чем их едят

post-1-0-55914800-1424087566.png

Устройство оживления микроконтроллеров Atmel

Исправление фузов AVR

SinaProg + ATmega328P исправляем прошивку фьюзов

Темы на форуме:

Fuse Doctor не определяет пациентов

Lock Bit или что может быть хуже


Начал собирать металлоискатель. Все спаял - дело осталось за малым - прошить ATTiny 2313. Но чего-то я никак не пойму, какие надо фьюзы выставлять?

Для тактирования от внешнего генератора, я так понимаю, надо выставить:

CKSEL=F (1111)
CKDIV=1

Вот то, что программатор считывает с контроллера.

Теперь вопрос: где нужно выставить/убрать галочки? (программа - UNIPROF)

post-64218-1249225815_thumb.jpg

Edited by admin
Добавлена шапка темы

Share this post


Link to post
Share on other sites

Вот калькулятор фьюзов чтоб не заморачиваться...http://www.engbedded.com/fusecalc/

только не знаю как в юннипрофе у тебя, но например по ссылке: Галочка - фьюз=0 (то есть запрограммирован!)

и поидее тебе нужно наоборот все фьюзы запрограмить то есть не F a 0000 поставить на всех CKSEL галочки

Share this post


Link to post
Share on other sites

Я обычно делаю так: Считываю настройку фьюз и смотрю как оно работало перед этим. Потом включаю выше приведённый калькулятор и по нему розщитываю что и кде надо настроить.. Считать всегда полезно - чтобы сравнить с товарной настройкой...

Share this post


Link to post
Share on other sites

Вебинар STM32G0 – новый лидер бюджетных 32-битных микроконтроллеров от STMicroelectronics

Компания Компэл приглашает вас 25 сентября принять участие в вебинаре, который посвящен новому семейству микроконтроллеров STM32G0. Вебинар рассчитан на технических специалистов и тех, кто хорошо знаком с семейством STM32. На вебинаре будут освоены современные методы тестирования производительности микроконтроллеров на примере самых бюджетных 32-битных семейств общего назначения STM32G0 и STM32F0 и проведено их подробное сравнение.

Подробнее

Че-то я не понимаю ничего в этом калькуляторе( я в этом деле новичек). Может кто-нибудь сможет мне рассчитать фьюзы- все необходимые параметры дам, если нужно.

И вот еще- один контроллер я уже пытался сам прошить и отключие тактирование от внутреннего генератора, теперь нужно собирать внешний. А нет ли программки , которая сама может тактировать?

Edited by Zheka

Share this post


Link to post
Share on other sites

можешь собрать сам генератор.. или просто к программатору кварц прицепи...если сам паял

"программка" в каком смысле? там на ножку должны приходить импульсы... разьве только на другом мк напиши себе генератор и прицепишь к тому пину и будет тебе "программка"

ну кароч скажи "параметры", фьюзы скажем тебе...

а вообще можешь спаять себе программатор например ЭТОТ он норм работает

Share this post


Link to post
Share on other sites
                     

Литиевые батарейки Fanso в беспроводных датчиках пожарно-охранной сигнализации

Выбор подходящего элемента питания, способного обеспечивать требуемый уровень напряжения и выдавать необходимый ток на протяжении всего периода эксплуатации беспроводной пожарно-охранной системы является одной из первостепенных задач. Наиболее подходящим для этих целей элементом являются литий-тионилхлоридные элементы питания, а одним из наиболее конкурентоспособных производителей – компания Fanso, предлагающая своим клиентам продукты как универсальные, так и разработанные специально для решения конкретных задач.

Подробнее...

Zheka, так тебе надо что?

1.

...Для тактирования от внешнего генератора, я так монимаю, надо выставить...

2.

А какие параметры??? Кварц-10Мгц. что еще надо?

Share this post


Link to post
Share on other sites

Короче, мне надо выставить фьюзы для тактиования от внешнего кварца, часстотой 10 МГц.

Edited by Zheka

Share this post


Link to post
Share on other sites

Тему переименовал и поднял. Теперь про конфиги только в этой теме !!!

Share this post


Link to post
Share on other sites

Для внешнего тактирования можно использовать и CKSEL3...0 = 1111, только вот CKDIV8 надо убрать, так как он делить тактовую частоту на 8.

Share this post


Link to post
Share on other sites

Включенный FUSE - это FUSE без галочки( в моем программаторе). Я так понимаю что мне нужно убрать все галочки на юьюзах CKSEL3...0???

А что с фьюзами CKOUT и SUT1 ? Ставить окло них галочки или нет?

Можете ли Вы на моей картинке нарисовать , где нужно ставить галочки???

Edited by Zheka

Share this post


Link to post
Share on other sites

Я под этим программатором никогда не работал, я постоянно работаю с Pony prog, скажу как в Pony Prog, CKSEL3...0 должны быть сняты галочки и с CKDIV8 надо убрать. По поводу SUT0 можно тож поставить галочку, но тут я не уверен :ph34r: Так как писал по даташиту, можно посчитать онлайн http://www.engbedded.com/fusecalc/...

Edited by Krik99

Share this post


Link to post
Share on other sites

Включенный FUSE - это FUSE без галочки(так в описании программы написано), значит надо убрать галочки с этих фьюзов? Вот картинка, пожалуйста, обведите те фьюзы, около которых должна стоять галочка!!!!! Help!!!

post-64218-1249298177_thumb.jpg

Share this post


Link to post
Share on other sites

Прочитай стандартные фьюзы в МК и выложи скрин как выставлены там галочки, тогда будем разбираться. Просто чтобы не напутать и не испортить МК.

Edited by Krik99

Share this post


Link to post
Share on other sites

А Вам всю жизнь на форуме будут рисовать галочки ? Может Вы всётаки почитаете ДШ ?

Share this post


Link to post
Share on other sites

По скрину видно что тут галочки стоят инверсно от Pony prog, по стандартному МК настроен на тактирование от внутреннего генератора на 8мгц (CKSEL3...0 = 0100) и деление на 8 и в итоге получаем 1мгц

Вот скрин если что перепроврте кто работал с этим программатором, при прошивке кварц должен быть подсоеденён.

PS если я всё правельно понял, то если галочка снята, тогда этот бит = 0

А вообще то надо читать даташит, а то получается Atmel его даром написал. Там по фьюзам всё норм расписано.

post-13943-1249325599_thumb.jpg

Edited by Krik99

Share this post


Link to post
Share on other sites

Так, все ясно! Ща буду пробовать. а может ктонито схему скинуть генератора (1-10МГц)?Желательно самый простой. Жругой контроллер надо оживить.

Share this post


Link to post
Share on other sites

Отпишись о результатах установки фьюзов. :) Можно сделать генератор на другом МК. Я сам так делал, брал Тини13 выставлял 9.6мгц и писал простенькую прогу мигалки без задержки, потом это всё подключал на XTAL1 и прошивал.

Код:

while(1){
PORTB.0=1;
PORTB.0=0;
}

Edited by Krik99

Share this post


Link to post
Share on other sites

да самый обыкновенный на ЛА3 - тут нужно от 600 кГц до 4 Мгц генератор...

Share this post


Link to post
Share on other sites

как то я нечаяно при прошивке тини 2313 запрограмировал фюзы (CKSEL0, CKSEL3, SUT0) все остальные незапрокрамированные, после чего програмка говорит "avrprog error entering programming mode" .програмировал через CVAVR. что делать. неужели без паралельного програматора ничего нельзя сделать?

Share this post


Link to post
Share on other sites

Смотрите выше :) Вы включил внешний генератор - подайте частоту на МК и перепрошейте фьюзы

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...

  • Similar Content

    • By Вячеслав_НС
      Здравствуйте ! подскажите , какую лучше библиотеку использовать (и где ее взять) для управления i2c atmega8 в atmel studio 7  .  задача - управлять atmega8 по i2c ,  цап  PCF8591T .
      понимаю , в интернете много примеров и библиотек , но хотелось бы пример максимально простой и точно рабочий . т.к. пока что все мои попытки не привели к успеху ... то Atmel Studio 7 при компиляции ругается на несуществующий файл ( к примеру - "stream.h") при использовании библиотеки i2c , то еще какие то грабли .
    • By Антон Плюшкин
      В общем есть небольшая тривиальная задача - сделать свитюльку. Контроллер управляет светодиодиками, цвета меняются, людишки довольны.
      Схема проста: Attiny44a -> 2n3904 x3 -> RGB-светодиод.
      Собрал, протестил, всё норм, но!
      Как только в коде я использую функцию задержки - _delay_ms (util/delay.h) - контроллер повисает!
      #define F_CPU 16000000UL #include <avr/io.h> #include <util/delay.h> int main(void) { // Input/Output Ports initialization // Port A initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRA=(1<<DDA7) | (1<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); // State: Bit7=0 Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); // Port B initialization // Function: Bit3=In Bit2=Out Bit1=In Bit0=In DDRB=(0<<DDB3) | (1<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit3=T Bit2=0 Bit1=T Bit0=T PORTB=(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Phase correct PWM top=0xFF // OC0A output: Non-Inverted PWM // OC0B output: Non-Inverted PWM // Timer Period: 0,031875 ms // Output Pulse(s): // OC0A Period: 0,031875 ms Width: 0 us // OC0B Period: 0,031875 ms Width: 0 us TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (1<<WGM00); TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 16000,000 kHz // Mode: Ph. correct PWM top=0x00FF // OC1A output: Non-Inverted PWM // OC1B output: Disconnected // Noise Canceler: Off // Input Capture on Falling Edge // Timer Period: 0,031875 ms // Output Pulse(s): // OC1A Period: 0,031875 ms Width: 0 us // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=(1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (1<<WGM10); TCCR1B=(0<<ICNC1) | (0<<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; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (0<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(0<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (0<<TOIE1); // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-11: Off MCUCR=(0<<ISC01) | (0<<ISC00); GIMSK=(0<<INT0) | (0<<PCIE1) | (0<<PCIE0); // USI initialization // Mode: Disabled // Clock source: Register & Counter=no clk. // USI Counter Overflow Interrupt: Off USICR=(0<<USISIE) | (0<<USIOIE) | (0<<USIWM1) | (0<<USIWM0) | (0<<USICS1) | (0<<USICS0) | (0<<USICLK) | (0<<USITC); // Analog Comparator initialization // Analog Comparator: Off // The Analog Comparator's positive input is // connected to the AIN0 pin // The Analog Comparator's negative input is // connected to the AIN1 pin ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0); ADCSRB=(0<<ACME); // Digital input buffer on AIN0: On // Digital input buffer on AIN1: On DIDR0=(0<<ADC1D) | (0<<ADC2D); // ADC initialization // ADC disabled ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0); unsigned char VL_OCR0A = 0, VL_OCR0B = 0, VL_OCR1A = 0; OCR0A = 0; OCR0B = 0; OCR1A = 0; while(1) { _delay_ms( 100 ); VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } } Т.е. если указать задержку в начале цикла, то светодиод не светится вообще.
      Если задержку убрать - светодиод немного подсвечивает всеми цветами.
      while(1) { _delay_ms( 100 ); // <--- ЗАДЕРЖКА --- VL_OCR0A = VL_OCR0A + 1; VL_OCR0B = VL_OCR0B + 1; VL_OCR1A = VL_OCR1A + 1; if( VL_OCR0A >= 250 ){ VL_OCR0A = 0; } if( VL_OCR0B >= 250 ){ VL_OCR0B = 0; } if( VL_OCR1A >= 250 ){ VL_OCR1A = 0; } OCR0A = VL_OCR0A; OCR0B = VL_OCR0B; OCR1A = VL_OCR1A; } Где я накосячил?
      З.Ы.: Замечаний по поводу оптимизации кода, излишних переменных и п.р. прошу не писать - изощряюсь как могу ибо не пойму почему не работает
    • By LegionKC
      Добрый день.
      Экспериментирую с платой TP4056 и MK ATmega8, конкретнее - пытаюсь собрать простенькое зарядное устройство с выводом параметров при зарядке/разрядке на АЦП МК. Для измерения тока нашел ACS712. Думаю, что получится выводить ток при зарядке (т.е. когда идет питание на TP4056 и нагрузка отключена) и при разрядке (питание выключено, нагрузка подключена). Нагрузка - резистор. Возникла проблема с измерением напряжения на АКБ. Вернее, проблема с отсутствием идей как это сделать. Может какую-нибудь схему делителя напряжения нужно сделать? Прошу помочь советом. Схему из пэинта прилагаю.
      Спасибо.
       

    • By Cheshire Cat
      Здравствуйте, только начинаю изучать программирование мк. Я уже задавал этот вопрос в моих прошлых схемах мне отвечали что-то типа "любой стабилизрованый источник постоянного напряжения", или кидали схему такого источника. Можно назвать мне конкретное устройство? В общем то что я смогу забить в гугл и приписать купить. 

      Я уже больше двух месяцев жду пока мне придут с aliexpress детали для маленького лабараторного блока, но этот вариант может разбиться о кривизну моих рук.  Хочу просто купить такой источник и наконец заняться непосредственно МК. 
    • By Cheshire Cat
      Здравствуйте, только начал изучать программирование микроконтроллеров. В учебнике есть схема, но она не учитывает питание и землю. Скажите правильно ли я её дополнил.
      И еще дополнительный вопрос. Что можно использовать как источник постоянного питания на 5В? Из не дорогого и того, что можно купить в Казани. Знаю, что лучший вариант - лабораторный БП, но они дорогие.

×
×
  • Create New...