char mod = 0; // vatiable for 0 to 1 volatile uint8_t amount; //vatiable for 0 to 12 need for 12 reps ot one side and back volatile uint8_t i; //vatiable for 0 to 10 need fo timer volatile uint16_t Sec; //variable for count the number of second volatile uint16_t SecF=0;// variable for make 5 second delay working mode, and than off. int rantime; // variable for make random number.
ISR(TIM0_OVF_vect){ //timer TCNT0 = T_POLL; i++;
if (i>=10) //period 1s { Sec++; i=0; } }
static void pulcesDREAMon(void){ for ( amount = 0; amount < 12; amount++ ) //this function make 11 times on/off ransistor of number 1 { PORTB |= TRANSON; _delay_ms(500); PORTB &= ~TRANSON; _delay_ms(1000); } }
static void pulcesDREAMoff(void){ for ( amount = 0; amount < 12; amount++ ) //this function make 11 times on/off ransistor of number 2 { PORTB |= TRANSOFF; _delay_ms(500); PORTB &= ~TRANSOFF; _delay_ms(1000); } }
DDRB = TRANSON | TRANSOFF | LED_R; //work for the exit
rantime = 1800 + random() % 5400; //make random number between 30 min and 2 hours.
while (1){ if (mod==0){ if (Sec>=1800){ pulcesDREAMon(); //on the need mode and give them to work 5 sek. povtor_per(); }
if (Sec>=SecF){ //check how much time passed pulcesDREAMoff(); povtor_per2(); }
}
if (mod==1){ if (Sec>=rantime){ pulcesDREAMon(); //on the need mode and give them to work 5 sek. povtor_per(); rantime = 1800 + random() % 5400; }
if (Sec>=SecF){ pulcesDREAMoff(); //check how much time passed povtor_per2(); }
}
if (PINB & BTN){ //just a function button processing cli(); Sec = 0; if (mod==0){ mod = 1; pulce_led(); } else { mod = 0; pulce_led(); _delay_ms(100); pulce_led(); SecF=5400; } _delay_ms(1000); sei(); } } }
СпойлерАдминам и пользователям, прошу извинения за дубликат темы. Сделано это по той причине, что в предыдущей теме оставлено уже множество сообщений и, возможно, это отпугивает тех, кто мог бы помочь. Ту тему, если это возможно, просьба отправить в архив.
Чем собираешь? gcc-4.8.2 с опцией -Os твой код в 574 байт скомпилировал. +надо добавить startup + вектора + внешние функции (беглый просмотр, что это _delay_ms()) Как _delay_ms() у тебя реализован, я не знаю. А что возможности посмотреть карту памяти в твоей среде нет? Если есть - посмотри, что так жрет и решай как решить.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
sTRog, вроде в AVR студии gcc и используется. Как там из среды запускать - не знаю, не ставил студию. Если там gcc - ищи в своей установке студии консольные приложения, с именами что-то типа avr-gcc*.exe, avr-objdump*.exe... Есть такие? Если есть, то любо сам можешь посмотреть их использование, либо сюда их название - может сможем пмочь.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Заголовок сообщения: Re: Уменьшение веса кода с 4kb до 1kb
Добавлено: Ср фев 08, 2017 19:19:37
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:1 Медали: 1
1. Включить оптимизацию для начала. 2. Использовать режим CTC таймера. 3. Использовать 8ми битные переменные, зачем считать 1800, когда можно до 18? 4. Оптимизировать алгоритм, использовать поменьше сравнений. 5. Не использовать volotile переменные без необходимости. 6. Взять МК с 32кБ флеша 7. Понять что случайностей не бывает и все предопределено , особенно в ПСЕВДОслучайной последовательности и убедится что при старте МК rantime всегда инициализируется одним и тем же совершенно случайным числом. 8. Написать ТЗ и дать денежку тому кто сделает. Хотите сделаю? Но сначала ТЗ почитаю конечно (это если что в личку).
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Заголовок сообщения: Re: Уменьшение веса кода с 4kb до 1kb
Добавлено: Ср фев 08, 2017 19:29:27
Встал на лапы
Зарегистрирован: Вс май 08, 2016 22:45:48 Сообщений: 131
Рейтинг сообщения:0
viiv писал(а):
sTRog, вроде в AVR студии gcc и используется. Как там из среды запускать - не знаю, не ставил студию. Если там gcc - ищи в своей установке студии консольные приложения, с именами что-то типа avr-gcc*.exe, avr-objdump*.exe... Есть такие? Если есть, то любо сам можешь посмотреть их использование, либо сюда их название - может сможем пмочь.
По адрессу C:\avr\avr8-gnu-toolchain\bin есть .exe avr-gcc.exe но я не понял, как ее запускать, если тупо два раза кликнуть то на мгновений открывается консольное окно, а затем сразу же закрывается.
Mishany писал(а):
реализовать stdlib.h (random() % 5400) на свободном таймере (сабака) либо так:
Спасибо. А не подскажите, где можно почитать о функциях рандом на си для микроконтролеров? Читал о генерации псевдослучайных чисел на регистре сдвига, но так и не нашел примеров под attiny 13 или принципов написание, которые уже можно было бы подстроить
Инкремент переменной в цикле с произвольным во времени обращением к ней и есть рандомное значение, да банальный шум на ацп.... Как часто нужно рандомное значение?
Заголовок сообщения: Re: Уменьшение веса кода с 4kb до 1kb
Добавлено: Чт фев 09, 2017 00:40:49
Встал на лапы
Зарегистрирован: Вс май 08, 2016 22:45:48 Сообщений: 131
Рейтинг сообщения:0
Mishany писал(а):
Инкремент переменной в цикле с произвольным во времени обращением к ней и есть рандомное значение, да банальный шум на ацп.... Как часто нужно рандомное значение?
Сейчас этот форум просматривают: AndrNet и гости: 43
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения