Zheka

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

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

Dmt    1

Спасибо за громкое молчание, тогда хоть скажите для Avreal как правильно, чтобы получить встроенный генератор 1 МГц

СКРОТ=1 CKSEL3…0=0001 или инвертировать

СКРОТ=0

CKSEL3…0=1110

и в заводских настройках

SUT=? что стаит по умолчанию

и в пони

BSIZ,

BLB1 как пишется

Изменено пользователем Dmt
  • Не одобряю 1

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


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

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
Alexeyslav    616

Самый простой способ выяснить - считать с живого камня. СЧИТАТЬ. и по фьюзу RSTDSBL можно говорить надо их инвертировать или нет.

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


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

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

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


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

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

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

  • Одобряю 1

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


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

Есть вопрос по поводу фьюза RSTDISB. Вывод ресет в случае его программирования работает как порт ввода/вывода. А не будет ли проблем с ISP программированием при таком режиме?

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


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

Будут. Для SPI программирования это дорога в один конец. Потом только параллельный программатор.

Изменено пользователем Геннадий
  • Одобряю 1

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


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

Приветствую. Помогите новичку рассчитать фьюзы. Никак докурить не могу.

mg.png

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


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

авр доктор скачал (атмега8 на атмегу8 всеми ногами)

хочу развести и вытравить платку.

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

я только начал читать про авр асм.. поэтому пока не уверен что всё правильно понимаю.

я понял что нужны сигналы:

PD1, PD2, PD3, PD4, PD5, PD6, PD7

GND, VCC

PB0, PB3, PB4, PB5, PB6, PC0, PC1, PC2

на reset мертвой атмега8 подается +12в

остальные сигналы, которые выше перечислил соединяются 1 к 1 на обоих атмегах.

не упустил ли я ещё ног, или лишних не приписал ? подскажите.

не хочется по стораз платы перетравливать.

вот исходник прошивки "avr doc+or"

; ******************************************************

;

; RDY/BYSY PD1

; OE PD2

; WR PD3

; BS1 PD4

; XA0 PD5

; XA1 PD6

; PAGEL PD7

; +12V RESET

; BS2 PC2

; XTAL1

; GND

; ******************************************************

.include "m8def.inc"

.def zero = r1

.def tmp = r16

.def tmp2 = r17

.def data= r21

.def _WR_= r22

.equ bysy = pd1

.equ OE = pd2

.equ wr = pd3

.equ bs1= pd4

.equ xa0 = pd5

.equ xa1 = pd6

.equ PAGEL= pd7

.equ bs2 = pc2

.equ xtal1= pb6

.equ pitanie_podanno = pc5

.org 0

rjmp RESET ; Reset Handler

rjmp RESET ; EXT_INT0 ; IRQ0 Handler

rjmp RESET ; EXT_INT1 ; IRQ1 Handler

rjmp RESET ; TIM2_COMP ; Timer2 Compare Handler

rjmp RESET ; TIM2_OVF ; Timer2 Overflow Handler

rjmp RESET ; TIM1_CAPT ; Timer1 Capture Handler

rjmp RESET ; TIM1_COMPA ; Timer1 CompareA Handler

rjmp RESET ; TIM1_COMPB ; Timer1 CompareB Handler

rjmp RESET ; TIM1_OVF ; Timer1 Overflow Handler

rjmp RESET ; TIM0_OVF ; Timer0 Overflow Handler

rjmp RESET ; SPI_STC ; SPI Transfer Complete Handler

rjmp RESET ; USART_RXC ; USART RX Complete Handler

rjmp RESET ; USART_UDRE ; UDR Empty Handler

rjmp RESET ; USART_TXC ; USART TX Complete Handler

rjmp RESET ; ADC ; ADC Conversion Complete Handler

rjmp RESET ; EE_RDY ; EEPROM Ready Handler

rjmp RESET ; ANA_COMP ; Analog Comparator Handler

rjmp RESET ; TWSI ; Two-wire Serial Interface

;****************************

RESET:

nop;

ldi tmp, low(ramend)

ldi tmp2, High(ramend)

out SPH, tmp2 ; настроили стек

out SPL, tmp ; настроили стек

ldi tmp, 0xff

out ddrb, tmp ; порт данных на выход

ldi tmp, (1<<xa0)|(1<<xa1)|(1<<bs1)|(1<<wr)|(1<<PAGEL) ;

out ddrd, tmp

ldi tmp, (1<<bs2)|(1<<pc1)|(pc0)

out ddrc, tmp

ldi _WR_, 1<<wr

clr zero

cbi ddrc, pitanie_podanno

;----------------------------------------------

main:

;sbis pinc, pitanie_podanno

;rjmp main

;начало программирования

rcall delay

sbi portd, wr

;1a

;1. Set XA1, XA0 to “10”. This enables command loading.

;2. Set BS1 to ”0”.

;3. Set DATA to “XXXX XXXX”. This is the command for XXX.

;4. Give XTAL1 a positive pulse. This loads the command.

sbi portd, xa1

cbi portd, xa0

cbi portd, bs1

// 0b01000000 ;команда Write Fuse Bits

out portb, zero

cbi portc, pc1

sbi portc, pc0

rcall xtal_pulse

;2c

;C. Load Data Low byte

;1. Set XA1, XA0 to “01”. This enables data loading.

;2. Set DATA = Data Low byte (0x00 - 0xFF).

;3. Give XTAL1 a positive pulse. This loads the data byte.

cbi portd, xa1

sbi portd, xa0

; 0b11100001 ;BODLEVEL BODEN SUT1 SUT0 CKSEL3 CKSEL2 CKSEL1 CKSEL0

out portb, zero

sbi portb, pb0

sbi portb, pb5

sbi portc, pc0

sbi portc, pc1

rcall xtal_pulse

;3

;(Low byte - Set BS1 and BS2 to “0”)

;(High byte - Set BS1 to “1” and BS2 to “0”. This selects high data byte.)

cbi portd, bs1

cbi portc, bs2

;4. Give WR a negative pulse and wait for RDY/BSY to go high.

cbi portd, wr

rcall delay;

out portd, _WR_ ;все выводы =0 wr=1

_bysy_: sbis pind, bysy

rjmp _bysy_

;1a

sbi portd, xa1

cbi portd, xa0

cbi portd, bs1

; 0b01000000 ;команда Write Fuse Bits

out portb, zero

cbi portc, pc1

sbi portc, pc0

rcall xtal_pulse

;2c

cbi portd, xa1

sbi portd, xa0

;data, 0b11011001 ;(RSTDISBL WDTON SPIEN CKOPT EESAVE BOOTSZ1 BOOTSZ0 BOOTRST)

out portb, zero

sbi portb, pb0

sbi portb, pb3

sbi portb, pb4

sbi portc, pc0

sbi portc, pc1

rcall xtal_pulse

;3

;(High byte - Set BS1 to “1” and BS2 to “0”. This selects high data byte.)

sbi portd, bs1

cbi portc, bs2

;4. Give WR a negative pulse and wait for RDY/BSY to go high.

cbi portd, wr

sbi ddrc, pc4

sbi portc, pc4

end: rjmp end;

rjmp main

;****************************

delay:

ldi tmp, 70

loop1:

dec tmp

brne loop1

ret

;****************************

xtal_pulse:

rcall delay

sbi portb, xtal1

rcall delay

cbi portb, xtal1

out portd, _WR_ ;все выводы =0 wr=1

rcall delay

ret

;****************************

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

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


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

как бы на прямую не получиться. данные для DATA по ДШ PC[1:0]:PB[5:0]

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


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

Помогите выставить фьюзы вот по этой картинки в Программе Bascom 2.0.5.0 c usbasp програматором.. И что сперва прошивают данные на Flash или Фьюзы выставляют и прошивают ???

внутреннего генератора 4MHz, скрин от программы PonyProg.

post-14927-0-31404200-1397666295_thumb.jpg

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

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


Ссылка на сообщение
Поделиться на других сайтах
COKPOWEHEU    255
что сперва прошивают данные на Flash или Фьюзы выставляют и прошивают ???
Вообще надежнее сначала флеш, ее прошивкой навредить крайне сложно. Но если установка фузов не будет блокировать программирование кристалла (тактирование, SPIen, RSTdisable), как обычно и стараются делать, то не важно.

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


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

Нужно запрограммировать фьюзы для ATtony2313 в журнале дан рисунок с фьюзами посмотрите правильно я их выставил с CVAVR. МК один у меня есть боюсь его запороть фьюзами.

post-29150-0-31441700-1397837286_thumb.jpg

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


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

BODLEVEL и CKSEL проверьте еще раз. SPMEN случайно не попутан с SPIEN?

Изменено пользователем Геннадий

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


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

Вот и прошу помочь , как правильно нужно сделать.

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


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

Для AVR фьюз считается запрограммирован если установлен в "0". У тебя должны быть запрограммированны фьюзы EESAVE, SPIEN, CKSEL1, SUT0, BODLEVEL0 и BODLEVEL1. Фьюзы SPIEN и SPMEN это разные фьюзы - не перепутай их. Как правило последовательные программаторы не могут менять SPIEN поэтому не во всех программаторах он отображается, иначе можно отключить возможность программирования этим программатором. Теперь разберись со своим программатором, дело в том, что в разных программах установленная "птичка" по разному рассматривается, в одном программаторе установленная "птичка" это - запрограммировать фьюз (т.е. установить в "0"), а в другом наоборот - установить его в "1", т.е. не программировать. Например в PonyProg установленная "птичка" - это программировать фьюз, как в CVAVR не знаю, нету у меня такой проги.

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

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


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

donec спасибо. Я обычно ориентируюсь по Rstdisbl. Вот меня эти SPIEN и SPMEN и в водили в ступор. Потому что в фьюзах SPIEN нет, наверно просто оставить его.

Рисунок в PonyProg правильно теперь поставил.

post-29150-0-89978700-1397899132_thumb.jpg

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

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


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

Ещё раз спасибо. Сейчас запрограммирую и буду паять и пробовать

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

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


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

Перерыл весь инет...уже каша в голове.. не могу понять какие fuse в Bascom прямые или инверсные ??

выставить не могу по этой картинке из Рони.. уже три атмеди в мир иной ушли..

post-14927-0-97066200-1397921136_thumb.jpg

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


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

Не программатор определяет прямой/инверсный фьюз, а программа-прошивальщик. У CodeVision галочка означает запрограммированный фьюз (т.е. =0). Объясните режим работы МК, тогда легче подсказать с конфигурацией фьюзов.

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


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

Помогите, оценить своих опытным взглядом

avr-gcc -c -mmcu=atmega8  -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -DF_CPU=7372800 -Wa,-adhlns=%1.lst  -std=gnu99 %1.c -o %1.o

avr-gcc -mmcu=atmega8   -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -DF_CPU=7372800 -Wa,-adhlns=%1.o  -std=gnu99 %1.o   --output %1.elf -Wl,-Map=%1.map,--cref -lm

avr-objcopy -O ihex -R .eeprom %1.elf %1.hex

avrdude -p m8 -P COM3 -c usbasp -b 19200 -U flash:w:%1.hex

сейчас так проходит процесс компиляции и заливки

нужно ли -DF_CPU=7372800 чтобы выставлять частоту,или достаточно в самом коде

и в arvdude правильно ли фюзы, чтобы включить внутренний кварц на 8мгц(Atmega8A) кажется делал по программе.

-U lfuse:w:0xe4:m -U hfuse:w:0xd9:m

общая строка так должна быть?

avrdude -p m8 -P COM3 -c usbasp -b 19200 -U flash:w:file.hex -U lfuse:w:0xe4:m -U hfuse:w:0xd9:m

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


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

какая заводская частота atmega32???

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


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

1МГц от внутреннего генератора как и все остальные

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


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

Сделал такой код на баскоме. (термометр на ds18b20)

$regfile = "m32def.dat"

$crystal = 8000000

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portd.0 , Rs = Portd.1

Config 1wire = Portd.2

Dim A As Byte

Dim B As Byte

Dim C As Byte

Dim D As Byte

Dim E As Byte

Config Lcd = 20 * 4

Initlcd

Cls

Cursor Off

'Виведення температури'

Do

1wreset

If Err = 1 Then

Cls

Lcd "Err"

Do

Loop

Else

1wwrite &HCC

1wwrite &H44

Waitms 750

1wreset

1wwrite &HCC

1wwrite &HBE

A = 1wread()

B = 1wread()

If A > 248 Then

A = &HFF - A

B = &HFF - B

E = 2

Else

E = 1

End If

C = A / 16

D = B * 16

C = C + D

If E = 2 Then C = C + 1

If E = 1 And C = 0 Then E = 0

Cls

Lcd "Temp= "

If E = 0 Then Lcd " " ; C ; "'" ; "C"

If E = 1 Then Lcd "+" ; C ; "'" ; "C"

If E = 2 Then Lcd "-" ; C ; "'" ; "C"

End If

Loop

End

Фюзов не трогал.

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

Когда писало крисатл=1мгц то не работало.

А так когда пишет кристал=8мгц то работает. Если у него частота 1МГц.

Изменено пользователем Vit@lik

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

    • Автор: polych
      Здравствуйте.
      У меня возникла проблема в прошивке микроконтроллера Atmega8.
      Задача заключается в том чтобы сравнивалось опорное на напряжение АЦП с подаваемым на вход АЦП напряжением и далее результат выводился на дисплей. У меня возникли сложности с настройкой АЦП, как я думаю оно находится в спящем режим так как когда я загружаю hex файл в Proteus и запускаю пошаговую отладку, то мои условия не выполняются и в переменной в которую я прописываю значение подаваемого напряжения постоянно находится значение опорного напряжения.
      Код пишу в Atmel Studio 6 на С
      Симуляцию делаю в Proteus
      Очень нужна помощь
      Спасибо!
      Примерный код в Atmel,не судите строго только начинаю изучать микроконтроллеры
      #define F_CPU 1000000UL
      #include <avr/io.h>
      #include <avr/interrupt.h>
      #include <util/delay.h>
      static volatile int u = 0;
      static volatile float v;
      int main(void)
      {
       DDRB=0xFF;
       PORTB=0x00;
       DDRC=0x00;
       PORTC=0xFF;
       
       //настройка АЦП//
       ADCSRA |=(1<<ADEN)//включение ацп
       |(1<<ADPS1)|(1<<ADPS0)|(1<<ADFR);//ADPS2-ADPS0-тактовая частота АЦП???
       //ADCRA=0x83
       ADMUX |= (0<<REFS1)|(1<<REFS0)//внешний ИОН
       |(0<<MUX0)|(0<<MUX1)|(0<<MUX2)|(0<<MUX3); //вход PC0
       //ADMUX=0x00
          while(1)
          {ADCSRA |=(1<<ADSC);//начинаем преобразование
           while ((ADCSRA&(1<<ADIF))==0);//ждём флага окончание преобразование
          _delay_ms(5);
           u=ADCW;// считываем ADC
          
           v = (float) u*0.0048828;
           if (v>=2.1){
            PORTB=0x01;
           }
           else{
            PORTB=0xFF;
           }
           _delay_ms(5);
      Также начальный проект в протеус, опять же не судите строго)
      micro.pdsprj
    • Автор: paulb
      Есть задумка собрать вольтметр постоянного напряжения (до 1000В) на ГРИ, использовав за основу популярную схему часов. Либо на базе микросхемы ICL7107, если это возможно. Знающих прошу помочь.
    • Автор: admin
      Сайт Паяльник открывает обучающий видеокурс по AVR-микроконтроллерам.
      В этой теме "обратной связи" будем постепенно добавлять новые видеоролики с нашего канала. Здесь можно задавать вопросы, давать рекомендации, критиковать, оставлять отзывы и пожелания, а также запросы на тему будущих видеоуроков.
      Ведет видеокурс наш форумчанин kobzar.
      Профиль пользователя на сайте cxem.net. Там же финансовые реквизиты для тех, кто пожелает финансово отблагодарить автора данного видеокурса
      Подписка на YouTube канал
      Краткий обзор сред разработки для различных микроконтроллеров на сайте: http://cxem.net/software/soft_mcu.php
      Внимание начинающим! Перед тем, как задавать вопросы не по теме видеоуроков, прочитать:
      Статьи по МК для начинающих
      Книга по программированию микроконтроллеров AVR
      Также, здесь же на форуме рядом с этой темой смотрите прикрепленные темы: для начинающих, по языку Си и т.д. Все вопросы не по видеокурсу задавайте только там. С этой темы подобные вопросы удаляются
      Кракозябры вместо русских букв
      Ребята - спешу сообщить что найден метод борьбы с кракозябрами вместо русских символов, при работе с ЖК. Дело в том, что у некоторых из вас, проект создается в кодировке UTF-8, а наша библиотека работает только с ср1251
      Фикс:
      1.Открываем проект
      2. File - Advanced Save Options
      3. Вместо кодировки UTF-8 выбираем Cyrillic(Windows) - cp1251
      Сохраняем, сохраняем проект - компилируем!
      Добавлено 12.01.16 :
      Изменённые версии библиотеки lcd_5110 :
      От Alex - http://forum.cxem.ne...20#comment-2287906
      От COKPOWEHEU - http://forum.cxem.net/index.php?showtopic=136229&st=1840#comment-2373820
       
    • Автор: ruhi
      Меня тут порадовали задачкой для АВР (я когда то очень много таких порешал, на практике - напомнили молодость ):
      http://cxem.net/mc/mc446.php
      сформулирована так: Нужно два быстрых элемента "И" и одновибратор. Можно использовать серию 155 у которой время срабатывания даже меньше получается, но не подходит по энергопотреблению. Хотелось бы сделать это на Attiny13.
      Остановимся пока на 
      Я, соответственно, предложил реализацию:
      Можожно сделать так:
      loop1:
      in reg1, pina; 1-tick
      in reg2, pinb; 1-tick
      and reg1, reg2; 1-tick
      LSR reg1; 1-tick
      out portB, reg1; 1-tick
      rjmp loop1; 2-tick

      Это код на ассемблере , который реализует два «элемента И» на АВР со временем срабатывания около 1мкс, в зависимости от тактовой частоты МК.
      На частоте 16 MHz это 7/16 мк-секунды(7 ticks, на самом деле +4 = 11тиков максимум время срабатывания, позже поясню), входы элемента-И должны быть на одинаковых пинах условных портов A and B, а выходы следующие по старшинству биты-пины. Вообще говоря перед выводом в порт, скорее всего, нужно будет еще маску добавить это еще +1 тик!

      Цикл можно переделать на использование только одного порта. Мой вариант в закодированном архиве приатачен, ключ выложу через неделю!
      Мне интересно можно ли сделать быстрее чем у меня получилось! Сможет кто нибудь предложить вариант решения?
      В общем, похоже что, на ассемблере можно написать «два элемента И» со временем срабатывания около 1.5мкс даже на 10МГц при произвольном расположении ног на одном порту.
      bestAvrCodeForAnd.7z
    • Автор: paulb
      Прошу помочь изменить прошивку из проекта http://cxem.net/mc/mc187.php
      Часы будут содержать 4 индикатора
      1) управление функционалом без изменений (время, дата, температура). 
      2) убраны индикаторы отвечающие за секунды, т.е. нужно вырезать функции 
      отображения секунд и года.
      3) отображение температуры без десятых градуса (индикатор №3 и №4).
      Схема: