attiny26 зарядное

Hello All!

есть такое самодельное зарядное

formatting link
оно норм работает но индикация недоделана

там так: вкл - пробежались диоды по очереди - погасли вставли акк - его потрогало и если все ном - вкл ток заряда - диод горит когда их 4, видно, что раз 0.5 где то сек пробегает пауза коротенькая по очереди (смотрят на акк - в это время снята зарядка)

по окончании диод тупо тухнет

в итоге фиг поймешь - акк заряжен или неконтачит и тп

добавить бы, что бы в конце вспыхивал изредка

я в си авр не очень

исходный код

formatting link
добавить бы мигания подпрограиму, но как понимаю, если она через ожидания - раком остальное стоит, пока диод мыргает

те, хотя бы пример пофиг чего, где в каком месте апппарат моргает - оттуда спереть как сделано навсидку гуглил - как то не то

Sasha

formatting link
formatting link
[Team OS/2][Team EDSMO]

Reply to
Sasha Shost
Loading thread data ...

Sasha,

You wrote to All:

SS> есть такое самодельное зарядное SS>

formatting link
SS>

SS> оно норм работает SS> но индикация недоделана SS>

SS> там так: SS> вкл - пробежались диоды по очереди - погасли SS> вставли акк - его потрогало и если все ном - вкл ток заряда - диод SS> горит когда их 4, видно, что раз 0.5 где то сек пробегает пауза SS> коротенькая по очереди (смотрят на акк - в это время снята зарядка) SS>

SS> по окончании диод тупо тухнет SS>

SS> в итоге фиг поймешь - акк заряжен или неконтачит и тп SS>

SS> добавить бы, что бы в конце вспыхивал изредка SS>

SS> я в си авр не очень SS>

SS> исходный код SS>

formatting link
SS>

SS> добавить бы мигания подпрограиму, но как понимаю, если она через SS> ожидания - раком остальное стоит, пока диод мыргает SS>

SS> те, хотя бы пример пофиг чего, где в каком месте апппарат моргает - SS> оттуда спереть как сделано навсидку гуглил - как то не то

=== Begin of S_Timer.h === //=============================================================== #ifndef _S_TIMER_H_ #define _S_TIMER_H_

#ifdef S_TIMER_D #define EXTERN #else #define EXTERN extern #endif //

EXTERN volatile unsigned int time_1ms; EXTERN volatile unsigned int time_1sec; EXTERN volatile unsigned int mmi_time;

EXTERN void Init_Timer (void); EXTERN void Reset_Timer(void);

#endif /* __TIMER_H__ */

=== End of S_Timer.h =====

=== Begin of S_Timer.c === #define S_TIMER_D

#include <inttypes.h>

#include <avr/io.h>

#include <avr/interrupt.h>

#include <stdio.h>

#include <string.h>

//#include <avr/iocan128.h>

//#include <avr/iocanxx.h>

#include "macros.h" #include "S_Timer.h"

//-------------------------------------------------------------------- //--- Timer Inizialisieren //-------------------------------------------------------------------- void Init_Timer (void) { time_1ms = 0; time_1sec = 0; mmi_time = 0;

// ATMEGA128 TCNT2 = 5; TIMSK |= 0x40; //Timer/Counter2 Overflow Interrupt Enable TCCR2 = 0x6B; //Fast PWM, Clear OC2 on compare match, // set OC2 at TOP, 64-> 1kHz = 1mS

// AT90CAN128 /* TCNT2 = 5; TIMSK2 |= 0x01; //Timer/Counter2 Overflow Interrupt Enable TCCR2A = 0x6C ; //Fast PWM, Clear OC2 on compare match, // set OC2 at TOP, 64-> 1kHz = 1mS

*/ // инициализация таймера в привденном тобой коде есть своя }

//-------------------------------------------------------------------- //#pragma interrupt_handler OCR2_CC_handler:iv_TIMER2_OVF //void OCR2_CC_handler(void) // в разных компиляторах вектор прерывания обзывается по разному //-------------------------------------------------------------------- SIGNAL(SIG_OVERFLOW2) { TCNT2 = 5;

mmi_time++; time_1ms++; if (time_1ms == 1000) { time_1ms = 0; time_1sec++; } }

//-------------------------------------------------------------------- // Timer Reset //-------------------------------------------------------------------- void Reset_Timer(void) { time_1ms = 0; time_1sec = 0; mmi_time = 0; } === End of S_Timer.c =====

Корректируешь, то что уже есть, ну а дальше, манипулируя той же mmi_time (при необходимости, добавив ещё переменных) в имеющемся бесконечном цикле:

while(1) { ... }

по какому-то числу и условию что-то включаешЬ, по достижению другого числа

- сбрасываешь. Вообщем как-то так.

Можно даже заменить и эти delay(150000);

Andrey

Reply to
Andrey Arnold

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.