Arduino as programmer Atmega328

Suro
Offline
Зарегистрирован: 03.07.2017

Здравстуйте.

Есть простой скетч.Загружаю в Ардуино Уно четко работает,но когда тот же самый скетч прошиваю в Атмега328 (используя Ардуино как программатор) работает некорректно.

И плюс всему этому, снимаю с Ардуино процессор  - работает.

Откликните пожалуйста.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Suro пишет:

Есть простой скетч.

Где?

bwn
Offline
Зарегистрирован: 25.08.2014

Suro пишет:

 прошиваю в Атмега328 (используя Ардуино как программатор) работает некорректно.

И плюс всему этому, снимаю с Ардуино процессор  - работает.

Еще легкое усилие - чем атмега328 в ардуине отличается от просто атмега328?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

bwn пишет:

Еще легкое усилие - чем атмега328 в ардуине отличается от просто атмега328?

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

bwn
Offline
Зарегистрирован: 25.08.2014

ЕвгенийП пишет:

bwn пишет:

Еще легкое усилие - чем атмега328 в ардуине отличается от просто атмега328?

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

Фу, противный. Нет, чтобы ТС хоть слегка голову поломал.)))

Suro
Offline
Зарегистрирован: 03.07.2017

вот скетч но не понимаю какая разница

int BUTTON1_PIN = 9;
int BUTTON2_PIN = 10;
int LED_PIN = 11;
unsigned long timer;


bool button1; //переменный состояний кнопок и леда
bool button2;
bool led;
  bool button1_on; //флаг нажатия кнопки 1
void setup(){
  pinMode(BUTTON1_PIN, INPUT);
  pinMode(BUTTON2_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {


button1 = digitalRead(BUTTON1_PIN); //считываются состояния кнопок и лампочки
button2 = digitalRead(BUTTON2_PIN);
led = digitalRead(LED_PIN);
   if(button1 && !button1_on) {  //если кнопка1 нажата, но флаг что она была нажата не стоит
     button1_on = 1; //ставим флаг что кнопка нажата
     delay(20);  //ждем 20мс чтоб дребезг ушел
     button1 = digitalRead(BUTTON1_PIN); //проверяем нажата ли кнопка все еще
     if(button1){  //если таки нажата
     timer = millis(); //засекаем текущее время, т.к. в изначальном условии есть флаг -
                           //оно засечется только в момент нажатия на кнопку
     if(!led){digitalWrite(LED_PIN,HIGH);} //если лампочка не горит, то зажигаем ее
     }}
   if(!button1 && button1_on) {button1_on=0;
digitalWrite(LED_PIN,LOW);} // если кнопка отжата - снимаем флаг нажатия кнопки
//и отключаем лампочку



   if(button2 && led){  //а тут тупо каждый цикл пока зажата кнопка 2 при горящем леде
     timer = millis();  //будет обновляться время в таймере
     }

   if(button2 && button1 && !led){  //если кнупку2 нажали при удерживаемой 1 и потухшем леде
     delay(20); //типа дребезг
     button2 = digitalRead(BUTTON1_PIN); //проверяем кнопку2
     if(button2){ //если нажата
     digitalWrite(LED_PIN,HIGH);
     timer = millis();    //подрубаем светодиод и засекаем время
   }}

   if(led && millis()-timer>10000){ // если лампочка горит и время не обновлялось более 10с
      digitalWrite(LED_PIN,LOW); //выключаем лампочку
      }

}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, не понимаете и не надо, но скетч публикуйте.

Как и какие фьюзы Вы устанавливали в микросхеме, прежде, чем шите её программатором? Если никакие не устанавливали или не понимаете о чём я - так и говорите.

Suro
Offline
Зарегистрирован: 03.07.2017

допустим что так - не понимаю.

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Прошиваете фьюзы как low_fuses=0xFF high_fuses=0xDE extended_fuses=0xFD радуетесь. Запаиваете кварц на 16 мегагерц с двумя конденсаторами.