Zheka

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

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

neonis    8

Andrejabramovich

65-Low FB-High или

69-Low FB-High- так время установления амплитуды внутреннего генератора немного увеличится.

http://www.engbedded.com/fusecalc/

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


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

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

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

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

Доброй ночи! Собираю схемку на Atmega164 и заинтересовал вопрос: в режиме тактировки от внутреннего генератора (INTERNAL RC CALIBRATED OSCILLATOR 8MHz) генератор работает постоянно на 8 МГц и МК тактируется тоже от 8-ми Мгц при бите CKDIV=1...  И вот при включении бита CKDIV=0, понятно, МК тактируется от 1 МГц, а сам RC генератор работает на 8-ми или тоже на 1-ом МГЦ? Т.е. частота гены 8 МГц делится для МК на 8  или гена сразу работает на 1 МГЦ и ничего для МК не делится, где делитель......??

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


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

CKDIV8 активирует предделитель, а не меняет частоту внутреннего генератора.

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


Ссылка на сообщение
Поделиться на других сайтах
djlex55    1
10 часов назад, Геннадий сказал:

CKDIV8 активирует предделитель

ДА. Это я знаю, значит выходит частота остается генератора 8 МГц, а тактировка ядра МК о1 МГЦ?

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


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

Всем Привет ! Попал с фузами . ATmega16A , работала на 8МГц от внутреннего генератора , решил поставить кварц на 12МГц , выбрал в студии вот этот параметр 16A fuse.jpg

Студия , во всплывающей подсказке , говорит что это внешняя RC цепочка или внешний OSC (кварц) от 8 до 12МГЦ , задержка при старте 64mS ,  вроде выбрал правильно , прошиваю - всё ОК ,

Перезагружаю и МК не читается , Что я сделал не так ?

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


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

Тупанул , надо было выбирать вот это

16A fuse.jpg

Но это я так подумал не беда , ща засуну мегу в доктора - вылечу . И... фиг вам , доктор не лечит .

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


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

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

А что доктор "говорит"?

 

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

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


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

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

А доктор вааще ни чего не показывает , терминал молчит , жму кнопку загорается красный светодиод и горит пока не выключишь питание  . Обнаружил интересную деталь - 40-ю панельку я впаивал где то летом , но работу доктора с ней не проверял , подумал , может я её вверх ногами впаял , и стал звонить землю - если 11 нога , то все правильно , щупом пошел по ножкам,  тестер у меня запищал на 7 ноге , дошел до 11 тоже пищит . Думал соплей навешал , проверил ни чего нет , вынул мегу , ни доктор , ни мега ( 7нога)  по отдельности не показывают замыкания , опять вставляю в доктора , тоже самое 7нога звонится на массу , вставил новую , новая не показывает замыкания , Вот такая фигня . По моем мега сдохла .

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

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


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

Геннадий , терминал заработал , дело было в переходнике , на нем неправильно нанесена маркировка пинов ,  соединил Тх-->Тх заработало

0:16:30.391> doctor (HVPP+HVSP) version 2.12
0:16:30.391> http://forum.cxem.net/
0:16:30.391>
0:16:30.453> HVPP MODE
0:16:30.453>
0:16:30.453> Init programming...  DONE
0:16:30.515> Read signature...    1E 94 03
0:16:30.578> Found...             Atmega 16   
0:16:30.578>
0:16:30.578> Read fusebits...     A8 99
0:16:30.640> Lock-bits...         BF (locked)
0:16:30.640> Should be...         E1 99
0:16:30.703> Chip erase...        DONE
0:16:30.703> Writing...           DONE
0:16:30.765> Verifying...         A8 99 - FAIL!
0:16:30.765>
0:16:30.765> Thank You

Светодиод горит красный .

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


Ссылка на сообщение
Поделиться на других сайтах
Viktor26    300
В 15.01.2017 в 18:08, DmitryS сказал:

Студия , во всплывающей подсказке , говорит что это внешняя RC цепочка или внешний OSC (кварц) от 8 до 12МГЦ , задержка при старте 64mS , 

Про кварц на картинке ничего не написано. Для кварца есть пункты в конце списка. Прокрутите скролом в том меню, сами все увидите. А тут вам нужно на хтал1 гену из 555 повесить. Должно помочь. Кстати не заметил вторую вашу картинку, на ней вы правильно показываете, можете шить.

  • Одобряю 1

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


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

@DmitryS кстати вы писали про делитель на 8, в мегах его нет, он только в тиньках есть

  • Одобряю 1

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


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

Да , нет делителя , это я в запарке погаречился немного :D Когда понял , хотел исправить пост , но время уже для редактирования вышло .

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

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


Ссылка на сообщение
Поделиться на других сайтах
Berg    11
13 часа назад, Viktor26 сказал:

кстати вы писали про делитель на 8, в мегах его нет, он только в тиньках есть

не не, ATMega328, ATMega168, ATMega88 и ряд других "мег" имеет CLKDIV8 (Divide clock by 8) , при чем установленный по умолчанию.

  • Одобряю 2

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


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

Доброго дня в мене така проблема коли натискаєш кнопку тест без нічого то вибиває що підключений мосфен транзістор в чому може бути причина???? Резистора бачить но показує не точно а кондисатора ни!

IMG_20170205_151319.jpg

IMG_20170205_151337.jpg

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


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

59061174589ce_.thumb.jpg.48cb9f6f6d2fcabe38a347e006cf4ae2.jpg

что я делаю не так ? программатор контроллер видит но устройство после прошивки  не работает :(

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


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

Всем привет

я начинающий необходима помощь решил собрать доску дляя токарника на атмега8

вот ссылка  https://www.vbesmens.de/de/dro-fuer-magnetbaender.html

автор пишет что фьюзы надо смотреть в файле "main.c" сам файл и фото прилагаю

проштваю программой  AVRDude Prog 3.3

подскажите пожалуйста

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

 

20170616_203031.jpg

main.c

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


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

 Без прошивки фъюзов работает устройство на контроллере Atmega 16, но с маленькой скоростью. Кварц стоит на 8 MHz. После прошивки фююзов, устройство молчит. Фююзы прошивал так как указано в статье устройства, прикреплю файл. Пытался посмотреть по калькулятору, не могу найти чтобы установить кварц с определенной частотой. Вот не пойму с прошивкой у меня проблемы или гдето еще...

ATmega16_TelegraphKey_фьюзы_запрограммировать_так!.png

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


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

Народ подскажите в чем косяк. Уже всё забыл))

прошиваю optiboot для ардуино фьюзы для atmega328p такие в boards.txt:

extfuse: 0x05

hi fuse: 0xDE

low fuse: 0xFF

прошиваю из линукса командой avrdude:

avrdude -c stk200 -p m328p -P /dev/parport0 -U efuse:w:0x05:m -U hfuse:w:0xDE:m -U lfuse:w:0xFF:m

после этого atmega не отвечает, осциллографом смотрю генерацию внешнего резонатора - тишина. кварц на 16мгц ставлю питание 5в.

кварц запаиваю малюсенький smd  типа такого:

F138-06-%D0%B1%D0%B5%D1%81%D0%BF%D0%BB%D

сам кварц проверял, рабочий, но с атмегой не хочет стартовать ? или фьюзы не правильно прописал ?

конденсаторы по 26пФ запаял с обоих ног на землю, пробовал без них - тоже самое.

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


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

разобрался...

фьюзы нужно было маленьким регистром писать, а я заглавными написал %) это ж ... линукс блин :D

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


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

Странно, не помню чтобы были такие проблемы. Но в любом случае при ошибке дудка сообщит, если прочитанные фузы не совпадают с записанными - тоже.

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


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

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

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

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

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

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

Войти

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

Войти сейчас


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

    • Автор: Atreides
      Добрый день. Мне требуется реализовать программный юарт на атмеге16. Он нужен для того, чтобы принятые по нему данные отправить на аппаратный юарт. В интернете нашел примеры кода, но понять его мне трудно. Прошу вас словами в общих чертах объяснить принцип реализации программного юарта. Буду рад примерам, которые, на ваш взгляд, являются наиболее простыми и понятными. Заранее спасибо.
    • Автор: EugenArt
      Всем доброго времени суток!
      в поиске не смог найти инфо, поэтому создал тему, не ругайте, если ошибся с веткой.
      Идея следующая, есть автомагнитола deh-3600MP c выходом Ip-bus.Хочу подружить магнитофон с мп3 плеером (есть от фм-трансмиттера, завтра куплю платку отдельного мп3). Сразу подчеркну, что хочу управление плеером (треки, теги, пауза и т.д) с головного устройства.
      предполагаю схему так:  ip-bus - avr - mp3 player.
      алгоритм avr-mp3 несложен и открыт, а вот описание протокола ip-bus нигде нет, форум витат.спб уже изучил, есть кусок кода работы авр и ip-bus, но не очень понятно, может подскажете набор команд ip-bus или что происходит по событию нажатию кнопки вперед/назад.
      Заранее благодарен.
    • Автор: Максим Окатов
       
      Товарищи, помогите пожалуйста. Данная програмулина при нажатии на кнопку входит в функцию MinU() в которой инициализирует таймер для задержки(ждем отпустит пользователь кнопку или нет) если кнопка не отпущена то уменьшаем скважность ШИМ.
      проблема в выделенной красным строчке! когда count больше 3 уменьшаем скважность, но в отладчике AVR studio, Proteus и в железе не робит.
      Перепрыгивает действие в {} так будь-то условие не выполнено...
      #define F_CPU 1000000L
      #include <avr/io.h>
      #include <avr/interrupt.h>
      #include <util/delay.h>
      unsigned char count = 0;
      unsigned char a=5,s=3,b=0;
          //===================================Насройка таймера====================
      void Timer_ini(void){
         TCCR1B = (1<<CS12)|(0<<CS11)|(0<<CS10);
         TCNT1 = 65535-976;
         TIMSK |= (1<<TOIE1);
         count = 0;
        }
          //===========================настройка шим===========================
      void PWM_ini(void){
         ASSR=0x00;
         TCCR2=0b01101110; //На выводе OC1A единица, когда OCR1A==TCNT1, восьмибитный ШИМ
         OCR2=200;
      }
      //===============
      void MinU(){
          unsigned char i=0;
          Timer_ini();
          while (!(PINB&0b00000010)){
              if(count>2){        //Если таймер считал более двух раз
                _delay_ms(100); // ждем 100 мс
                OCR2--; // Уменьшаем скважность
                i=1;        // были в плавном уменьшении
            }
            
         }
         if (i!=1) // если не были в плавном уменьшении
         {
             OCR2=OCR2-50;
             i=0;
         }
      }
              //=======================================================
      int main(void)
          {
             
              // Настраиваем порт D на выход
              DDRB = 0b00001000;
              PWM_ini();
              //Timer_ini();
              sei();
              
              
              while(1)
              {
                  b=a-s;
                  if (!(PINB&0b00000010))
                  {
                      MinU();
                  }/*
                  //if (!(PINB&0b00000100))
                  //{
                      //PlsU();
                  //}*/
              }
              return 0;
          }
          
          ISR (TIMER1_OVF_vect)
          {
              count++;
              TCNT1 = 65535-976;
                  }
       
       
       
    • Автор: Serg_Mang
      Можно ли залить в arduino прошивку, предназначенную для чистого AVR?
    • Автор: Дмитрий Мартынов
      Здравствуйте!
      Пишу программу на C++ для управления LCD (HD44780) по I2C через модуль расширения портов ввода/вывода PCF8574AT.
      void LCD_I2C::readBF() { transmitByte(0b00001110); //transmits E, RW set to HIGH and RS, set to LOW _delay_ms(5); transmitByte(0b00001010); //transmits E, RS set to LOW and RW set to HIGH _delay_ms(5); initRestart(); transmitAddrRW(0b01111111); //sends PCF8574AT address + SLA+R do { receiveDataAck(); PORTA = storage; } while((storage & (1 << BF)) != 0); //wait until BF is 0 initRestart(); transmitAddrRW(0b01111110); } Метод void transmitByte(uint8_t data) после инициализации состояния "Старт" и отправки адреса устройства + SLA+W отправляет байт данных по TWI с ожиданием бита подтверждения (команды работают верно, проверял по регистру статуса TWI - 0x08, 0x10 и 0x24).
      Метод void transmitAddrRW(uint8_t address) отправляет соответственно SLA+W/R + адрес устройства (команда работает также верно). Нареканий к работе TWI у меня нет, т.к. недавно с его помощью успешно запустил часы DS1307 с интеграцией LCD.
      После передачи запроса на чтение флага занятости инициализируется состояние "ПОВСТАРТ", отправляется адрес устройства + SLA+R, далее идет цикл - запрос байта данных (состояние выводов PCF8574AT) с отправкой бита подтверждения uint8_t receiveDataAck() (команды работают также верно, возвращает storage = TWDR) и вывод storage на порт А микроконтроллера (там установлены светодиоды).
      Чтение регистра данных TWDR после принятия байта данных (receiveDataAck()) дает следующий результат - 0b00000010 - установлен только бит RW микросхемы. Таким образом, флаг занятости BF = DB7 = 7й бит оказывается сразу же сброшенным, происходит мгновенный выход из цикла - контроллер дисплея не успевает скушать информацию, и инициализация не выполняется (неудачную инициализацию определяю по отсутствию курсора). Ожидалось, что флаг занятости будет установлен в единицу и произойдет несколько итераций перед выходом из цикла.
      При замене метода ожидания сброса флага занятости BF на программную задержку в 250 мс везде, где это требует datasheet - инициализация происходит успешно (появляется курсор, как и должно быть).

      Вопрос: что можно сделать, чтобы вместо _delay_ms(250) использовать readBF(), т.к. этот путь мне кажется более верным (уж очень не хочется использовать задержку .__.)? Возможно, проблема в микросхеме, которая неверно выдает информацию при чтении? (Имеется вторая микросхема, она вообще не работает:D)

      З.Ы. На фото виден результат чтения флага BF и Adress Counter - установлен только бит RW.  



      З.Ы.Ы Кому интересно - вот функция main(). Повторюсь - проблема только в методе readBF():
      void LCD_I2C::init() { setBitRate(20000); initStart(); transmitAddrRW(0b01111110); //send PCF8574AT address + SLA+W _delay_ms(60); sendInstruction(0b00110000); //function set 8-bit operation _delay_ms(20); sendInstruction(0b00110000); //function set 8-bit operation _delay_ms(5); sendInstruction(0b00110000); //function set 8-bit operation _delay_ms(5); sendInstruction(0b00100000); //function set 4-bit operation readBF(); //_delay_ms(250); //debug!! sendInstruction(0b00100000); //function set 4-bit operation, 2 lines, 5x8 dots sendInstruction(0b10000000); readBF(); //_delay_ms(250); //debug!! sendInstruction(0b00000000); //display off, cursor off, blinking off sendInstruction(0b10000000); readBF(); //_delay_ms(250); //debug!! sendInstruction(0b00000000); //display clear sendInstruction(0b00010000); readBF(); //_delay_ms(250); //debug!! sendInstruction(0b00000000); //entry mode set increment, display shift off sendInstruction(0b01100000); readBF(); //_delay_ms(250); //debug!! sendInstruction(0b00000000); //display on, cursor off, blinking off sendInstruction(0b11100000); readBF();/ }