Наработки есть, но своего ума не хватает.
Собственно имеются XM-L диоды, Attiny85, AVR Studio5 и напряжение питания 11-16 Вольт.
Хочу собрать стабилизатор тока без режимов, настроек и т.п.
Есть схема:
Спойлер

Спойлер
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
unsigned int adc_counter,current;
volatile unsigned long current_value;
ISR(ADC_vect)
{
ADCSRA = 0; // Выключаем АЦП
current_value = current_value + ADC; // Суммируем измеренные значения тока и помещаем в буфер
adc_counter++; // Увеличиваем счетчик выборок АЦП на 1
ADCSRA=0b11111111;// Включаем АЦП
}
int main(void)
{
PORTB=0b00000000;
DDRB=0b00011000;
ADMUX=0b10000111; //Vref=1,1V, Ku=20, PB4+/PB3-
ADCSRA=0b11111111; //pre=128,
ADCSRB=0b00100000; //unipolare mode
DIDR0=0b00100100; //ADC2,ADC3 enable
sei();
PLLCSR=0x00;//запуск PLL
PLLCSR=0b00000010;
while ((PLLCSR & 1)==0);
PLLCSR|=0b00000100;
OCR1C=255; // Шим на минимум
OCR1A=0x00;
OCR1B=0x00;
GTCCR=0x00;
TCCR1=0b01100001;
while(1)// вычисляем среднее значение АЦП
{
if (adc_counter > 10)
{
ADCSRA = 0; // Выключаем АЦП
current = (current_value/adc_counter);
adc_counter = 0; // Обнуляем счетчик выборок АЦП
current_value = 0; // Обнуляем буфер значений тока
//резистор 0,01 Ом, ток 2,6 А, сл-но падение на шунте 26мВ
//т.к. Ku=20, URef=1,1V на ацп придет 520 мВ и это есть значение ADC равное 484
if (current>486)
{
OCR1C++;
}
if (current<484)
{
OCR1C--;
}
else
{
OCR1C++;
}
ADCSRA=0b11111111;// Включаем АЦП
}
}
}Я не прошу готового кода, а прошу пинать меня в нужном направлении.
only pure true norwegian blackx 










