Доброго времени суток. Прошу помощи по attiny13a. Поставил MicroCore, попробовал Blink_using_Timer0 на частоте 9,6МГц.
(внутренний генератор работает на частоте 9,6 МГц)
#include <avr/io.h>
//---------------------------------------------------
// Переменная для хранения счетчика времени(uint8_t = byte)
uint8_t timeCount = 0;
//---------------------------------------------------
int main(void){
DDRB |= _BV(PB2); // Устанавливаем PB2 в качестве выхода, игнорируем остальные
TCCR0B = _BV(CS02) | _BV(CS00); // Тактовая частота / 1024
OCR0B = 0x00; // Output compare
TCNT0 = 0; // Устанавливаем счетчик 0 на ноль
TIMSK0 = _BV(TOIE0); // Включить прерывание переполнения
sei(); // Включить глобальные прерывания
while(1); // Бесконечная петля
}
//---------------------------------------------------
ISR(TIM0_OVF_vect){ // Вектор переполнения таймера 0 — запускается каждый раз, когда переполняется таймер 0.
timeCount++;
if(timeCount == 37){ // Таймер переполнен в 37-й раз
PORTB ^= _BV(PB2); // Переключить PB2
timeCount = 0;
}
}
Всё прекрасно шьется и работает. Нашел на гитхабе Блог Лукаша Подкалицкого
У него много простых проектов, решил их попробовать. Например:blinky_with_timer_compa
/**
* Copyright (c) 2016, Łukasz Marcin Podkalicki <lpodkalicki@gmail.com>
* ATtiny13/004
* Simple blinky with Timer COMPA.
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#define LED_PIN PB0
ISR(TIM0_COMPA_vect)
{
PORTB ^= _BV(LED_PIN); // toggle LED pin
}
int
main(void)
{
/* setup */
DDRB = 0b00000001; // set LED pin as OUTPUT
PORTB = 0b00000000; // set all pins to LOW
TCCR0A |= _BV(WGM01); // set timer counter mode to CTC
TCCR0B |= _BV(CS02)|_BV(CS00); // set prescaler to 1024 (CLK=1200000Hz/1024/256=4.57Hz, 0.22s)
OCR0A = 255; // set Timer's counter max value
TIMSK0 |= _BV(OCIE0A); // enable Timer CTC interrupt
sei(); // enable global interrupts
/* loop */
while (1);
}
У него блинк на частоте 1,2МГц. Загрузчик прошиваю на 1,2МГц, а скетч не шьется.
Дает ошибку :
avrdude: auto set sck period (because given equals null)
avrdude usbasp_spi_program_enable() error: program enable: target does not answer (0x01)
avrdude main() error: initialization failed, rc=-1
avrdude main() error: initialization failed, rc=-1
Что я делаю не так?