Атмега 8

bit
Offline
Зарегистрирован: 07.05.2012

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

Собрал плату с 3 попытки на АТМЕГА-8 корявенько получилось но я в этом не спец

И не как не пойму как её прашивать

с помощью

CodeVisionAVR программатор у меня MP9011

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

bit
Offline
Зарегистрирован: 07.05.2012

 

 

 

Пытался вот так ну что же я не так делаю

Выбираем адаптер MP9011

 

Загружаем папку

 sketch_feb10a.pde_cbf

 

 

Ставим фьюз

 

bit
Offline
Зарегистрирован: 07.05.2012

пишет

bit
Offline
Зарегистрирован: 07.05.2012

 

Пытаюсь с помощью программы ардуино

 

Ну в чём проблема подскажите что я делаю не так

 

bit
Offline
Зарегистрирован: 07.05.2012

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

Схему того что вы спаяли выложите сюда.

bit
Offline
Зарегистрирован: 07.05.2012

Evgen пишет:

Схему того что вы спаяли выложите сюда.

bit
Offline
Зарегистрирован: 07.05.2012

вот

bit
Offline
Зарегистрирован: 07.05.2012

Спаял программатор по этой схеме пошли какие та шивиления в СodeVision

Что то прошивается, после прошивки включил в usb определил как неизвестное устройства

 

 

bit
Offline
Зарегистрирован: 07.05.2012

Загрузил папку ATmegaBOOT загрузка прошла, нажимаешь на атмеге8 ресет

Мигает светодиод 8 раз, usb как неизвестный устанавливаешь драйвер не хочет ставится , в чём может быть проблема, наверно фьюз неверно пишу?

bit
Offline
Зарегистрирован: 07.05.2012

Блин нашел касяк забыл сопротивления между  rxd  и txd напрямую дорожки сделал наверно чё нибудь вышибло?

bit
Offline
Зарегистрирован: 07.05.2012

Он определился как неизвестное устройства USB\ROOT_HUB\4&26397AB7&0

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

У вас на плате, которую спаяли, установлена микросхема FT232RL. Это и есть готовый программатор, другие программаторы использовать не надо.
Вчера поковырялся немного, получилось залить в мегу8 ардуиновский бутлоадер. Опишу как это делать.
Стандартное предупреждение: все ниже перечисленное вы делаете на свой страх и риск и т.д. и т.п.
Вставляем мегу8 в которую хотим залить бутлоадер (bit вам ничего вставлять не надо, у вас уже все впаяно).
Разъем Х3 подключаем напрямую к пинам ардуины следующим образом: 1-ый контакт разъема Х3 подключаем к 12 пину ардуины, 2-ой контакт к 13 пину, 3-й к 11 пину, 4-ый контакт не трогаем.

Все, теперь можно заливать в МК прошивку (НЕХ-файл) напрямую, при помощи программы AVRDUDE.
Для начала прошьем новые FUSE биты. Скачиваем и распаковываем архив http://yadi.sk/d/D6Dk7O3e2WaWg.
Подключаем ардуину к USB порту.
Жмем резет на ардуине и не отпуская запускаем из архива файл EXTERNAL_16_MHz.bat. Если все подключено правильно должно появится вот такое окно:

Отпускаем резет, жмем любую клавишу или закрываем окно. Запустив этот файл мы настроили мегу8 на работу с внешним кварцем 16 МГц.
Учтите что кварц должен быть уже подключен иначе дальше МК без него работать не будет.
FUSE биты установлены теперь зальем бутлоадер, опять жмем резет и не отпуская запускаем файл OPTIBOOT_ATMEGA8.bat.
Появится вот такое окно:

В этот раз заливаться будет подольше. Резет держим пока не попросит нажать любую клавишу, потом резет отпускаем, окно закрываем. Бутлоадер залит.
Ну вот почти все. Осталось внести изменения в файл boards.txt (оригинальный файл на всякий случай где нибудь сохраните). Так как у меня установлено IDE arduino-22 то у меня он находится в D:\arduino-0022\hardware\arduino.
Находим в этом файле две строчки:

atmega8.upload.maximum_size=7168
atmega8.upload.speed=19200

и меняем их на

atmega8.upload.maximum_size=7680
atmega8.upload.speed=115200
Все готово, сдергиваем провода, отключаем ардуину от USB порта и через три секунды включаем обратно, перезапускаем arduino IDE, в настройках выбираем плату ATmega8  и пробуем залить тестовый блинк.

Если нужно использовать мегу8 на внутреннем генераторе на 8 МГц тогда делаем все выше перечисленное, но вместо файла EXTERNAL_16_MHz.bat запускаем файл INTERNAL_8_MHz.bat и в файле boards.txt меняем три строчки

atmega8.upload.maximum_size=7168
atmega8.upload.speed=19200
atmega8.build.f_cpu=16000000L

на

atmega8.upload.maximum_size=7680
atmega8.upload.speed=57600
atmega8.build.f_cpu=8000000L

bit
Offline
Зарегистрирован: 07.05.2012

Спасибо большое сейчас буду пробовать.

bit
Offline
Зарегистрирован: 07.05.2012

Кидаю перемычки с Х3 на 13.12.11 запускаем архив EXTERNAL_16_MHz.bat отпускаем ресет , не каких движений не происходит, беру плату ардуино  1280 контроллер там умер я его выпаял, подключаем проводки к разьёму Х3 и кидаем на самодельного ардуино к выводам 13.12.11 запускаем архив EXTERNAL_16_MHz.bat отпускаем ресет

 пишит

 

 

Может это из за того что контроллер не пустой ну те мои не удачные попытки прошить через LTP поскольку когда падаёшь питания на ардуино то светодиод мигает 8 раз

bit
Offline
Зарегистрирован: 07.05.2012

Чего та я совсем запутался

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

>>запускаем архив EXTERNAL_16_MHz.bat отпускаем ресет , не каких движений не происходит

Надо сначала зажать резет, потом запустить EXTERNAL_16_MHz.bat, когда попросит нажать любую клавишу отпустить резет.

Вы так делаете?

bit
Offline
Зарегистрирован: 07.05.2012

ресет как то не корректно срабатывает  и вот что он выдаёт

 

 

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

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

bit
Offline
Зарегистрирован: 07.05.2012

Не получается

bit
Offline
Зарегистрирован: 07.05.2012

Не пойму я на вашу схему посмотрел у вас  C13 100n стоит, а у меня R3 100_NM почему такая разница  из за этого может не работать.?

 

bit
Offline
Зарегистрирован: 07.05.2012

Вроде  прошил, когда USB подключаешь светодиод померцает и перестаёт, и когда скеч отправляешь он начинает мерцать а патом выдаёт ошибку

 

 

 

Ну где у меня снова косяк

 

bit
Offline
Зарегистрирован: 07.05.2012

Фаил в boards прописал, и не понятно в диспетчере устройств ардуино должен как то определится как ардуино  у меня написано USB Serial Converter

bit
Offline
Зарегистрирован: 07.05.2012

Походу дела накрылась ft232  запускаю тестилку диоды не мигают

http://my-mk.16mb.com/%D0%BA%D0%B0%D0%BA-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C-%D0%B0%D0%B4%D0%B0%D0%BF%D1%82%D0%B5%D1%80-usb-uart-%D0%BD%D0%B0-ft232r/

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

Проверьте FT232RL по другому. Закорачиваете между собой пины ардуины 0 и 1 (RX и ТХ), открываете штатный ардуиновский serial monitor, пишите что-нибудь в нем (на английском) и нажимаейте send. Если все спаяно правильно и микросхема рабочая тогда, то что вы написали сразу же придет вам обратно, светодиоды на прием/передачу моргнут при этом.

bit
Offline
Зарегистрирован: 07.05.2012

проверил всё приходит что пишешь и светодиоды моргают

 

bit
Offline
Зарегистрирован: 07.05.2012

заново всё пере прошил и всё бесполезно ну что за червяк там залез?

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

В сообщении №21 на скриншоте написано: размер скетча 826 байт из 7168 максимальных, а должно быть 7680 максимальных байт.

Вы точно правильно строчку atmega8.upload.maximum_size=7168 на atmega8.upload.maximum_size=7680 поменяли?

У вас версия IDE какая?

bit
Offline
Зарегистрирован: 07.05.2012

0021

bit
Offline
Зарегистрирован: 07.05.2012

##############################################################

atmega8.name=Arduino NG or older w/ ATmega8

atmega8.upload.protocol=stk500

atmega8.upload.maximum_size=7680

atmega8.upload.speed=115200

 

atmega8.bootloader.low_fuses=0xdf

atmega8.bootloader.high_fuses=0xca

atmega8.bootloader.path=atmega8

atmega8.bootloader.file=ATmegaBOOT.hex

atmega8.bootloader.unlock_bits=0x3F

atmega8.bootloader.lock_bits=0x0F

atmega8.build.mcu=atmega8

atmega8.build.f_cpu=16000000L

atmega8.build.core=arduino

 

bit
Offline
Зарегистрирован: 07.05.2012

bit
Offline
Зарегистрирован: 07.05.2012

вот

bit
Offline
Зарегистрирован: 07.05.2012

что ещё можно проверить?

bit
Offline
Зарегистрирован: 07.05.2012

 

Спасибо за помощь всё получилось, косяк в схеме был вместо сопротивления надо было кондей поставить  видимо на дип корпус схема этим сопротивлением только отличается

bit
Offline
Зарегистрирован: 07.05.2012


Подскажите пожалуйста как закрутит цикл вскопках

скажем так если отправили символ 2 то действия вскопках закручивается по кругу

 

отправляем символ 1 то соответственно  действие переходит и то же по кругу

 
 
#define DS 11
#define SHCP 12
#define STCP 8  
int val; 
void setup()
{
 
  pinMode(DS,OUTPUT);
pinMode(SHCP,OUTPUT);
pinMode(STCP,OUTPUT);
  Serial.begin(9600);            
    
 
 
}

void loop()
{
 
  if (Serial.available()) {                   // принимаем  Serial Mon
    val = Serial.read();  

    if (val == '1') {                      //    если есть символ 1 то делаем действие вскопках
    shiftOut(DS,SHCP,LSBFIRST,B00100001);    // отправляем биты на регистр сдвига

shiftOut(DS,SHCP,LSBFIRST,B01000000);
digitalWrite(STCP,HIGH);
digitalWrite(STCP,LOW);              
   
    }
      if (val == '2') {              // если есть символ 2 то делаем действия вскопках
          
  shiftOut(DS,SHCP,LSBFIRST,B01011011);
shiftOut(DS,SHCP,LSBFIRST,B01000000);
digitalWrite(STCP,HIGH);
digitalWrite(STCP,LOW);

 shiftOut(DS,SHCP,LSBFIRST,B01011011);
shiftOut(DS,SHCP,LSBFIRST,B00100000);
digitalWrite(STCP,HIGH);
digitalWrite(STCP,LOW);           
   
    }
  }
}

 

bit
Offline
Зарегистрирован: 07.05.2012

Подскажите пожалуйста как закрутит цикл вскопках

скажем так если отправили символ 2 то действия вскопках if закручивается по кругу

 

отправляем символ 1 то соответственно  действие if переходит и то же по кругу

 

 


 
 
#define DS 11
#define SHCP 12
#define STCP 8   
int val;  
void setup()
{
  
  pinMode(DS,OUTPUT);
pinMode(SHCP,OUTPUT);
pinMode(STCP,OUTPUT);
  Serial.begin(9600);             
     
  
  
}

void loop()
{
 
  if (Serial.available()) {                   // принимаем  Serial Mon
    val = Serial.read();   


    if (val == '1') {                      //    если есть символ 1 то делаем действие вскопках
    shiftOut(DS,SHCP,LSBFIRST,B00100001);    // отправляем биты на регистр сдвига

shiftOut(DS,SHCP,LSBFIRST,B01000000); 
digitalWrite(STCP,HIGH);
digitalWrite(STCP,LOW);               
    
    }
      if (val == '2') {              // если есть символ 2 то делаем действия вскопках
           
  shiftOut(DS,SHCP,LSBFIRST,B01011011); 
shiftOut(DS,SHCP,LSBFIRST,B01000000); 
digitalWrite(STCP,HIGH);
digitalWrite(STCP,LOW); 


 shiftOut(DS,SHCP,LSBFIRST,B01011011); 
shiftOut(DS,SHCP,LSBFIRST,B00100000); 
digitalWrite(STCP,HIGH);
digitalWrite(STCP,LOW);            
    
    }
  }
}

 

bit
Offline
Зарегистрирован: 07.05.2012

Если делаем так  while то при отправки символ 2 действия закручивается по кругу и когда отправляешь символ 1 не перехода нет

 

  while (val == '2') {              // если есть символ 2 то делаем действия вскопках
           
  shiftOut(DS,SHCP,LSBFIRST,B01011011); 
shiftOut(DS,SHCP,LSBFIRST,B01000000); 
digitalWrite(STCP,HIGH);
digitalWrite(STCP,LOW); 


 shiftOut(DS,SHCP,LSBFIRST,B01011011); 
shiftOut(DS,SHCP,LSBFIRST,B00100000); 
digitalWrite(STCP,HIGH);
digitalWrite(STCP,LOW);            
    
    }

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

В каких фскопках вы хотите закручивать и что именно закручивать?

Правильно я понял или нет, не знаю, предполагаю, что в 24 строке нужно поставить }, а в 25-й строке {. И закрутит так, что не остановишь :) Строки 24 и 25 искать в сообщении номер #35 они там пустые.

}
{

 

bit
Offline
Зарегистрирован: 07.05.2012

 

if (val == '2') {              // если есть символ 2 то делаем действия вскопках
          
  shiftOut(DS,SHCP,LSBFIRST,B01011011);  //  Управляем 7 катодами



shiftOut(DS,SHCP,LSBFIRST,B01000000);  // Управляем 2 анодами
digitalWrite(STCP,HIGH);


digitalWrite(STCP,LOW);


 shiftOut(DS,SHCP,LSBFIRST,B01011011);
shiftOut(DS,SHCP,LSBFIRST,B00100000);
digitalWrite(STCP,HIGH);
digitalWrite(STCP,LOW);           
   
    }



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

Когда нужно вывести две цифры одновременно то есть скажем 22 то нужно цикл if (val == '2') {  повторять по кругу чтобы они светились обе одновременно

А в этом коде  происходит так когда подаёшь символ 2 в сер. То горит только одн

bit
Offline
Зарегистрирован: 07.05.2012

Спасибо всё закрутилась с вашей помощью

bit
Offline
Зарегистрирован: 07.05.2012

Доброго дня всем подскажите пожалуйста , а в этом коде закрутить цикл в строке 48 -59?

 

 

 

 

int DS =7 ; // дата рег нагрузка
int SHCP = 6;
int STCP = 5;


int dataPin = 11;             // Вывод  данных 165
int clockPin = 12;           // Вывод время 165
int loadPin = 13;          // Вывод выбора 165


byte val = 0, prev_val = 0;

int fadeValue = 0;

void setup(){
  
  pinMode(DS,OUTPUT);  // пины рег нагруз
pinMode(SHCP,OUTPUT);
pinMode(STCP,OUTPUT);

  
  pinMode(dataPin, INPUT);      //  Ввод 165. 
  pinMode(clockPin, OUTPUT);   // Ввод время 165. 
  pinMode(loadPin, OUTPUT);    //  Вывод load 165.
  
}

void loop(){
  
  digitalWrite(loadPin, 0); 
  digitalWrite(loadPin, 1); 
  val = SiftIn8bit(dataPin, clockPin); //  читаем 8в входов 165
 



                       
                        
  if (val == B01111111) {
       shiftOut(DS,SHCP,LSBFIRST,B00100001);    // отправляем биты на регистр сдвига

        shiftOut(DS,SHCP,LSBFIRST,B01000000); 
        digitalWrite(STCP,HIGH);
        digitalWrite(STCP,LOW);         
   
  }
  
   if (val == B10111111) {
       shiftOut(DS,SHCP,LSBFIRST,B01011011);    // отправляем биты на регистр сдвига

        shiftOut(DS,SHCP,LSBFIRST,B01000000); 
        digitalWrite(STCP,HIGH);
        digitalWrite(STCP,LOW);  
  
  
        shiftOut(DS,SHCP,LSBFIRST,B01011011);    // отправляем биты на регистр сдвига
        shiftOut(DS,SHCP,LSBFIRST,B00100000); 
        digitalWrite(STCP,HIGH);
        digitalWrite(STCP,LOW);         
        
   
  }
   if (val == B11011111) {
       shiftOut(DS,SHCP,LSBFIRST,B01110011);    // отправляем биты на регистр сдвига

        shiftOut(DS,SHCP,LSBFIRST,B01000000); 
        digitalWrite(STCP,HIGH);
        digitalWrite(STCP,LOW);         
   
  }
 
  if (val == B11101111) {
       shiftOut(DS,SHCP,LSBFIRST,B01100101);    // отправляем биты на регистр сдвига

        shiftOut(DS,SHCP,LSBFIRST,B01000000); 
        digitalWrite(STCP,HIGH);
        digitalWrite(STCP,LOW);         
   
  }
                 
}

  


byte SiftIn8bit(byte dataPin, byte clockPin){
  byte in8bit = 0;
  for(int i = 0; i < 8; i++){            // читаем  по 8 бит
    digitalWrite(clockPin, 0); 
    if(digitalRead(dataPin)) in8bit |= 1<<i;
    else in8bit &= ~(1<<i);
    digitalWrite(clockPin, 1); 
  }
  
  return in8bit;
  
}

 

bit
Offline
Зарегистрирован: 07.05.2012

Подскажите пожалуйста где взять  архив ардуино омега 168ра AVRDUDE.

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

bit пишет:

Подскажите пожалуйста где взять  архив ардуино омега 168ра AVRDUDE.

Ничего не понятно что вы хотите. Что за архив? Вам загрузчик что-ли ардуиновский нужен для АTmega168ра?

bit
Offline
Зарегистрирован: 07.05.2012

Ну такую же программу которую вы мне давали на атмегу 8 (скетч не в лазит мало место собрал плату на атмега 168 и нужен загрузчик)

Только сейчас нужно на атмега 168

Если у вас есть скиньте пожалуйста

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

http://yadi.sk/d/agkSYOEB2cKX8 распаковать в папку с avrdude.exe. Но, этот загрузчик я не проверял, не на чем. Так что фиг знает будет работать или нет. В IDE в настройках выбрать плату Arduino Diecimila, Duemilanove, or Nano w/ ATmega168.

bit
Offline
Зарегистрирован: 07.05.2012

Спасибо буду пробовать

 

bit
Offline
Зарегистрирован: 07.05.2012

Привет попробовал не прошивается не какой реакции сразу просит нажать любую клавишу, а когда запускаешь на отмегу 8 то проходит проверка 100% , а патом ругается что это не отмега 8

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

Никакой реакции при прошивке фъюзов или загрузчика? Сигнатура МК определяется?

Скриншоты выложите сюда на фъюзы и на загрузчик.

bit
Offline
Зарегистрирован: 07.05.2012

Привет вот пытался зашить но не получилось вот что пишет

 

 

 

 

bit
Offline
Зарегистрирован: 07.05.2012

А это  я от атмега 8 попробовал прошить шить начинает но поскольку прошивки от атмега 8 он ругается  

 

 

Evgen
Evgen аватар
Offline
Зарегистрирован: 10.06.2011

Ну так по ходу в папке ATmega168 нет файла avrdude.exe, зато он есть в папке Atmega8 вот поэтому оттуда и запускается. Я же писал распаковать в папку с avrdude.exe (у вас это Atmega8 получается). Или копируйте из папки Atmega8 в папку ATmega168 файлы avrdude.exe, avrdude.conf и ftd2xx.dll и пробуйте еще раз.