Собрал плату и зашил программу в неё.
Перепрограммироваться контроллер отказался второй раз.
Всё проверил и был в замешательстве, но потом в программаторе выставил паузы большие для медленных МК.
И МК стал прошиваться без проблем.
Программу пишу в CodeVisionAVR и ничего не менял в окошке программирования(то есть фусе бит не трогал).
Вот код программы:
- Код: Выделить всё • Развернуть
/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.7 beta 5 Standard
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 10.02.2008
Author : F4CG
Company : F4CG
Comments:
Chip type : ATtiny13
Clock frequency : 1,000000 MHz
Memory model : Tiny
External SRAM size : 0
Data Stack size : 16
*****************************************************/
#include <tiny13.h>
#include <delay.h>
// Declare your global variables here
int timen = 0;// изменение по прерыванию каждые 4 Гц.
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
timen++;
}
void main(void)
{
// Declare your local variables here
// Crystal Oscillator division factor: 1
#pragma optsize-
//CLKPR=0x80;
//CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State5=T State4=T State3=T State2=T State1=T State0=T
DDRB = 0b00010001;//выходы на диоды
//подымаем кнопки
PORTB = 0b00101110;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 0,977 kHz
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x05;
TCNT0 = 244;
OCR0A=0x00;
OCR0B=0x00;
// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x02;
// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
if(PINB.3 == 0)
{
if(timen > 2) {timen = 0; PORTB.4++;}
}
else {
if(timen > 20) {timen = 0; PORTB.4++;}
}
}
}
По идеи диод должен мигать через 5 сек и при нажатой кнопке через 1\2 сек, но диод мигает через 48 сек.
Из чего я делаю вывод, что МК работает на 128кГц примерно частоте.
1) Как МК перевёлся на такой медленный режим работы ?
2) Как вернуть скорость 1МГц ?
3) Если вынуть батарейки и подключить к параллельному интерфейсу компьютера МК начинает работать, как это ?