Прошивка MK через Arduino IDE

Leopoll
Offline
Зарегистрирован: 16.06.2016

Стоит задача прошить скетч, работающий на Pro Mini, на голый МК, в данном случае Attiny861a. Пока пробую прошить тестовый blink. На С+ скетч прошивается и работает.


// 1.2 MHz (default) built in resonator
#define F_CPU 1200000UL

#include <avr/io.h>
#include <util/delay.h>

#define LED_BIT _BV(PB4)


int main()
{
	DDRB |= LED_BIT; // OUTPUT
    PORTB |= LED_BIT;
	while (1)
	{
		PORTB |= LED_BIT; // HIGH
		_delay_ms(1000);
		PORTB &= ~LED_BIT; // LOW
		_delay_ms(1000);
	}
}

Тот же blink в ардуиновском варианте светодиодом не мигает.

void setup() {
  pinMode(PB4, OUTPUT);
}
void loop() {
  digitalWrite(PB4, HIGH);
  delay(500);
  digitalWrite(PB4, LOW);
  delay(500);
}

Ядро отсюда. http://drazzy.com/package_drazzy.com_index.json

Оба варианта, прошитые таким же образом на Attiny13 работают нормально. 

Что не так?

b707
Offline
Зарегистрирован: 26.05.2017

Leopoll пишет:

Стоит задача прошить скетч, работающий на Pro Mini, на голый МК, в данном случае Attiny861a.

а скетч для про мини скомпилится для Attiny861a ?

Leopoll
Offline
Зарегистрирован: 16.06.2016

Да, скомпилировался. Но если даже blink  не мигает, работу скетча не пытался проверять. Может надо другое ядро попробовать? Где еще можно взять?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Internal:

  • 8 MHz
  • 1 MHz
  • 16 MHz (PLL clock, x5, x61 only)
  • 16 MHz ‡ (aggressively configured 441/841 only)
  • 4 MHz*** (except on x313, starts up at 1MHz and immediately switches to 4MHz before setup() is run)
  • 16.5MHz † ! (PLL clock, tweaked, x5, x61 Micronucleus only, for USB support)
  • 12.8MHz † ‡ (Internal, tweaked hardcore, Micronucleus only, for USB support)
  • 0.5 MHz** bangbang (x313 only)
  • 512 kHz** bangbang (ULP - x41 only)
  • 256 kHz** bangbang (ULP - x41 only)
  • 128 kHz** bangbang (watchdog or ULP, all except 1643, 828)
  • 64 kHz** bangbang (ULP - x41 only)
  • 32 kHz** bangbang (ULP - 1634, 828, x41 only)

External crystal (all except 828, 43 and x8-family):

  • 20 MHz !
  • 18.432 MHz* !
  • 16 MHz
  • 14.7456 MHz* !
  • 12 MHz !
  • 11.0592 MHz* !
  • 9.216 MHz* !
  • 8 MHz
  • 7.3728 MHz* !
  • 6 MHz !
  • 4 MHz
Leopoll
Offline
Зарегистрирован: 16.06.2016

Стоит по умолчанию Internal 8MHz. На проблему это не влияет. С другими МК ардуиновский blink работает, сейчас проверил еще на ATmega88. Не работает именно на этом. 

b707
Offline
Зарегистрирован: 26.05.2017

Leopoll пишет:

Стоит по умолчанию Internal 8MHz. На проблему это не влияет.

Вы, простите, пишете полную ерунду. Это у вас в ардуино ИДЕ стоит 8 МГц. А в чипе? - Вы проверяли?

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

 

Leopoll
Offline
Зарегистрирован: 16.06.2016

Аврдуд стандартно пишет "avrdude: warning: cannot set sck period. please check for usbasp firmware update." Это он всегда пишет.

Иде пишет, что прошивка прошла. Главное, почему тогда прошивается и работает первый вариант на С+?

 
b707
Offline
Зарегистрирован: 26.05.2017

Leopoll пишет:

Иде пишет, что прошивка прошла. Главное, почему тогда прошивается и работает первый вариант на С+?

 

хм... а может потому,  что у вас в коде на Си принудительно выставлена частота 12 МГц (судя по всему внешняя), а из Ардуино вы почему-то выбираете 8МГц внутренней...

А если выбрать и в Ардуино 12 МГц внешней?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

Leopoll пишет:

Иде пишет, что прошивка прошла. Главное, почему тогда прошивается и работает первый вариант на С+?

 

хм... а может потому,  что у вас в коде на Си принудительно выставлена частота 12 МГц (судя по всему внешняя), а из Ардуино вы почему-то выбираете 8МГц внутренней...

А если выбрать и в Ардуино 12 МГц внешней?

а написано 1.2 Mhz, нулики я не считал, таблицу и приложил, что нет в IDE поддержки такой скорости, но раз запрограммировал на 12 и внешний кварц, то не может он мигать, на этом пине у него как раз кварц, если не путаю ничего )))
ПУТАЮ у него PB4 отсутствует

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

ПУТАЮ у него PB4 отсутствует

в первом коде тоже PB4 - смотри внимательнее. И ТС утверждает, что этот код работает

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

ua6em пишет:

ПУТАЮ у него PB4 отсутствует

в первом коде тоже PB4 - смотри внимательнее. И ТС утверждает, что этот код работает

а там еще системная LED может она подставляет что надо?

b707
Offline
Зарегистрирован: 26.05.2017

ua6em пишет:

а там еще системная LED может она подставляет что надо?

нет там никакой "системной" LED,  LED_BIT - это собственный дефайн автора кода, заданный в строке 7

Leopoll
Offline
Зарегистрирован: 16.06.2016

Почему нет PB4? На седьмой ноге. И внешнего кварца никакого нет.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Leopoll пишет:

Почему нет PB4? На седьмой ноге. И внешнего кварца никакого нет.

да ошибся посмотрел, да не на ту (841), но с кристаллом не ошибся, нога кристалла )))

Вот так попробуйте:
 

void setup() {
  pinMode(5, OUTPUT);
}
void loop() {
  digitalWrite(5, HIGH);
  delay(500);
  digitalWrite(5, LOW);
  delay(500);
}

 

Leopoll
Offline
Зарегистрирован: 16.06.2016

ua6em пишет:
Вот так попробуйте:

Помогло. В чем прикол?

b707
Offline
Зарегистрирован: 26.05.2017

Leopoll пишет:

ua6em пишет:
Вот так попробуйте:

Помогло. В чем прикол?

ну значит ардуина не знает, что такое PB4

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

b707 пишет:

Leopoll пишет:

ua6em пишет:
Вот так попробуйте:

Помогло. В чем прикол?

ну значит ардуина не знает, что такое PB4

мы русские документацию не смотрим )))
с левой стороны картинки цветовая расцветка пинов ардуины

PS не одолев 85 решил не одолеть 861? может послушать совет Евгения и считать эти фьюзы

 

Leopoll
Offline
Зарегистрирован: 16.06.2016

Посмотрел. Оказывается в этом ядре вместо PB4 надо писать PIN_PB4. Хоть бы ошибку выдало, зараза. Спасибо, это моя первая попытка перейти от ардуино на голый МК. 
Пока разбирался с Attiny861, проект заработал на АТМега88. Но от PCINT пришлось отказаться.

b707
Offline
Зарегистрирован: 26.05.2017

Leopoll пишет:

Пока разбирался с Attiny861, проект заработал на АТМега88. Но от PCINT пришлось отказаться.

чей та? На голом МК пропали прерывания? :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

b707 пишет:

На голом МК пропали прерывания? :)

Украли. :) 

Leopoll
Offline
Зарегистрирован: 16.06.2016

Опа, чего я еще не знаю?  Я в даташите на ATMega88 не вижу выводов PCINT. Только INT0, INT1.

b707
Offline
Зарегистрирован: 26.05.2017

Leopoll пишет:

Опа, чего я еще не знаю?  Я в даташите на ATMega88 не вижу выводов PCINT. Только INT0, INT1.

даташит у Атмег88, 168 и 328 - общий. Вывод - если у 328-й PCINT есть, значит и у 88-й должны быть... я так думаю.

Leopoll
Offline
Зарегистрирован: 16.06.2016

Упс, на странице ATMega88 у  Чипидипа была ссылка https://static.chipdip.ru/lib/547/DOC005547852.pdf, а она про АТМега8. Ошибочка.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Leopoll пишет:

Опа, чего я еще не знаю?  Я в даташите на ATMega88 не вижу выводов PCINT. Только INT0, INT1.

ты думаешь один, нас таких тут Легион )))