attiny26 зарядное

Sep 17, 2014 1 Replies

Hello All!



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

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



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



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



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



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



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



исходный код

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



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


Sasha

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


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

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required