Собрал плату и зашил программу в неё.
Перепрограммироваться контроллер отказался второй раз.
Всё проверил и был в замешательстве, но потом в программаторе выставил паузы большие для медленных МК.
И МК стал прошиваться без проблем.
Программу пишу в 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) Если вынуть батарейки и подключить к параллельному интерфейсу компьютера МК начинает работать, как это ?









