Каким программатором прошить Attiny13?
Добавлено: Вс фев 05, 2012 22:42:50
Ребят подскажите каким программатором можно прошить Attiny13 вот исходник прошивки
говорят под attiny13a прошива не подходит. Мне пробовали прошивать на stk500 но тот чел кудато слился ни слуху ни духу. Либо дела либо не получается.STK500 стоит чуть более 5 тысяч дороговато чтобы прошить пару микрух. Посоветуйте может быть что побюджетнее и действующее есть?
Код: Выделить всё
/*****************************************************
Project : PWM Bipolar Locomotive Controller;
Version : 2.00 for MOSFET bridge with overcurrent protection.
Date : 18.04.2007
Author : Yuri V. Kalashnikov;
Company : KRTPC
Comments: Bipolar PWM Power Supply Controller
for railway models;
questions you can send by e-mail: tigerail@yandex.ru
Chip type : ATtiny13
Clock frequency : 9,600000 MHz internal RC option;
CKSEL1..0 = 10;
Memory model : Tiny
External SRAM size : 0
Data Stack size : 16
*****************************************************/
#include <tiny13.h>
#include <delay.h>
void main(void)
{
int k,i;
int AH, AL;
int OC;
// 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=Out Func3=In Func2=In Func1=Out Func0=Out
// State5=T State4=0 State3=T State2=T State1=0 State0=0
PORTB=0x00;
DDRB=0x17;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
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=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;
ADMUX=0x03; // Vcc as VRef, ADC connect to PB3 pin
ADCSRA=86; // ADC enable, ADC CLK divider=0b110 (9600/64=150kHz)
OC=1;
while (OC==1)
{ // overcurrent/START cycle
ADCSRA=0xC6; //START conversion
PORTB.2=0;
delay_ms(300);
PORTB.2=1;
delay_ms(300);
// ADC result performing
AL=ADCL; // extract low part ADC result;
AH=ADCH; // extract high part ADC result;
k=AH*256; // shift high part to most significant byte;
k=k+AL; // add low byte;
if ((k>412) && (k<612))
{
OC=0; // USER set trimmer to STOP position, out from cycle
}
}
while (1)
{
ADCSRA=0xC6; //START conversion
if ((k>412) && (k<612)) // CENTRAL "STOP" trimmer position
{
PORTB.2=0; // LED "STOP" is lighting;
PORTB.1=0;
PORTB.0=0;
}
else // 412<k<612
{
PORTB.2=1; // LED "STOP" is OFF;
if (k<=412) // RIGHT-turned trimmer position;
{
k=412-k;
// Pulse Width Modulation cycles "FORWARD";
for(i=1; i<=k; i=i+1)
{
PORTB.0=1;
delay_us(10);
}
for(i=k; i<=412; i=i+1)
{
PORTB.0=0;
delay_us(10);
}
} //(k<=412)
if(k>=612) // LEFT-turned trimmer position;
{
k=k-612;
// Pulse Width Modulation cycles "BACK";
for(i=1; i<=k; i=i+1)
{
PORTB.1=1;
delay_us(10);
}
for(i=k; i<=412; i=i+1)
{
PORTB.1=0;
delay_us(10);
}
} //(k>=612)
} // else
AL=ADCL; // extract low part ADC result;
AH=ADCH; // extract high part ADC result;
k=AH*256; // shift high part to most significant byte;
k=k+AL; // add low byte;
};// while
} // main



