![]() |
![]() |
#1 |
Старший Пользователь
![]() Регистрация: 03.11.2006
Город: Казань
Регион: 16, 116
Машина: Toyota Corolla NZE121 2003
Сообщений: 259
![]() |
![]() Добрый вечер
Помогите разобраться, дело в том что я сваял блок питания с управлением по микроконтроллеру ATTINY15, так вот все бы нечего, если бы не устаревшая микросхема которую некак немогу найти в инете в наличии! Так к чему это я ![]() Я конечно неочень бум-бум по инглишу но понял что вроде как сушествует какой то режим совместимости с ATTINY15 Последний раз редактировалось BaGz; 03.08.2010 в 20:45. |
![]() |
![]() |
![]() |
#2 |
Старший Пользователь
![]() Регистрация: 24.08.2008
Возраст: 38
Город: Москва
Регион: 77, 97, 99, 177
Машина: Suzuki SX4, Magyar, 2008
Сообщений: 86
![]() |
![]() Для начала надо понять, что у тебя есть.
Есть ли связь с автором? Может ли он потратить вечер на раскуривание этого апликейшн-ноута (чтобы пофиксить старую прошивку)? Есть ли у тебя исходник на C/Asm, или уже бинарник? Если вкратце по апликейшн-ноуту, там не совсем всё просто, простым выставлением фуз CKSEL в 0011 не отделаться. Зависит от того, какие возможности контроллера использовались в прошивке. Чем больше использовалось - тем больше переделывать ![]() |
![]() |
![]() |
![]() |
#3 | |
Старший Пользователь
![]() Регистрация: 03.11.2006
Город: Казань
Регион: 16, 116
Машина: Toyota Corolla NZE121 2003
Сообщений: 259
![]() |
![]() Цитата:
PS Автор прошивки yurich38 Вот его тема про БП http://www.pccar.ru/showthread.php?t=9254 PPS Сама прошивка http://forum.pccar.ru/attachment.php...3&d=1247704033 |
|
![]() |
![]() |
![]() |
#4 |
Старший Пользователь
![]() Регистрация: 03.11.2006
Город: Казань
Регион: 16, 116
Машина: Toyota Corolla NZE121 2003
Сообщений: 259
![]() |
![]() Вот исходник, уважаемые программеры помогите перекомпилировать код под микросхему ATTiny25
//---------------------------------------------------------------------------------------------- // Программа управления блоком питания для EeeCarPc. версия 2 // Тестировано на Tiny15 // // © Bunin.Dev, 2009 // // Лицензия GPL // Данная программа является свободным программным обеспечением. // Вы вправе распространять ее и/или модифицировать в соответствии с условиями версии 2 // либо по вашему выбору с условиями более поздней версии Стандартной Общественной Лицензии GNU, // опубликованной Free Software Foundation. // http://www.gnu.org/copyleft/gpl.html // //---------------------------------------------------------------------------------------------- // // Индикация лампы "Режим" // Отключена - Комп выключен // Мигает 1 раз в сек - переходный режим, начат процесс включения/отключения // Включена - Комп включен // Мигает "Длинный-Короткий" - режим сбоя, компьютер отключтился самостоятельно. // .include "TN15DEF.INC" ; include chip definition ;------------------------------ .def mig =r26 // всякая всячина .def tmp =r28 .def temp1=r30 .def temp2=r31 .equ CalibrateValue = 0x3F // Состояние системы .equ ON_POCESS=1 // процесс вкл .equ ON=2 // вкл .equ OFF_POCESS=3 .equ OFF=4 // соответственно выкл .equ SYSTEM_FAILURE=10 // и сбой. // преднастройки.. примерно в секундах .equ PowerDownDelay = 35; // время удержания питания 30сек .equ initBeforeOFFDelay = 150; // время до отключения 150сек .equ initBeforeOFFDelay_Multipler = 6; // множитель 6 .=> 150сек*6 = 900сек = 15мин .equ initBeforeStartDelay = 10; // время до включения 10сек. .equ initButtonDelay = 2; // задержка кнопки 2сек .equ initAfterStartDelay = 50; // задержка после включения 50сек время нужное на старт винде. .equ initPC_OFFCritical_Time = 20; // сколько ждать отключения.. .equ initPC_ONCritical_Time = 20; // переменные .def PowerLife=r16; // сщетчик отключения питания .def PC_State=r17; // состояние системы .def PC_OFF_ON_Time=r18; // сщетчик времени .def BeforeStartDelay_Multipler=r19; // Множитель задержки перед стартом .def BeforeStartDelay=r20; // задержка перед стартом .def ButtonDelay=r21; // задержка нажатия кнопки .def AfterStartDelay=r22; // задержка после нажатия кнопки .def Waiting=r23; // бит ожидания .def Timer_step=r24; // делитель прерывания таймера. .def PC_Life_Time=r25; // сщетчик времени изменения PC_Life_State .def PC_on_signal=r27; // сигнал РС жив .MACRO WAIT ; Макрос ожидания "нуля" в переменной, для задержек ;subi @1,low(@0) ;sbci @2,high(@0) tst @0 breq L88363 dec @0 rjmp return L88363: .ENDMACRO ; End macro definition ;------------------------------ rjmp RESET ; Reset Handle rjmp INT0VECT ; External Interrupt0 rjmp NOVECT ; Pin change Interrupt rjmp NOVECT ; Timer/Counter1 Compare Match A ATTiny15 rjmp NOVECT ; Overflow1 Interrupt ATTiny15 rjmp OVF0VECT ; Overflow0 Interrupt rjmp NOVECT ; EEPROM ready Interrupt ATTiny12 ATTiny15 (Analog Comparator Interrupt Vector Address ATTiny11) rjmp NOVECT ; Analog Comparator Interrupt ATTiny12 ATTiny15 rjmp NOVECT ; ADC conversion complete ATTiny15 ;------------------------------ RESET: ldi temp1, CalibrateValue out EEAR, temp1 sbi EECR, 0 in temp1, EEDR out OSCCAL, temp1 ; init timer ldi temp1, (1<<CS02)|(1<<CS00) ; enable timer, CLK/1024 out TCCR0, temp1 ldi temp1, (1<<TOIE0) ; enable Timer0 Overflow int out TIMSK, temp1 ; init int0 ; ldi temp1, (1<<INT0) ; enable int0 ; out GIMSK, temp1 ; ldi temp1, (1<<ISC00) ; int0 at change ; out MCUCR, temp1 ; init ports ldi temp1, (1<<PINB0)|(1<<PINB1)|(1<<PINB3) ; 0 - output pin out DDRB, temp1 ; clear values ldi PowerLife, 0 ldi PC_State, OFF ldi PC_OFF_ON_Time, 0 ldi BeforeStartDelay_Multipler, initBeforeOFFDelay_Multipler ldi BeforeStartDelay, initBeforeStartDelay ldi ButtonDelay, initButtonDelay ldi AfterStartDelay, initAfterStartDelay ldi Waiting, 0 ldi PC_Life_Time, 0 ldi PC_on_signal, 1 ldi Timer_step, 0 cbi PORTB, PINB0 cbi PORTB, PINB1 ; enable interrupts sei ;------------------------------ MAIN: rjmp MAIN ;------------------------------ OVF0VECT: in temp1, SREG ; Store the Status register in reg temp1 //обрабатываем только каждое 6-е перерывание, т.е. раз в 1 сек. WAIT Timer_step ldi Timer_step, 6 in tmp, PINB // читаем состояние порта sbrc tmp, 2 // если bit 2 = 0 т.е. от компа сигнала НЕТ rjmp L9538 ;{ ldi PC_on_signal, 0; ;} rjmp L9539 L9538: ;{ ldi PC_on_signal, 1; ;} L9539: sbrc tmp, 4 // если bit 4 = 0 т.е. питания нет !ACC rjmp L9645 ;{ cpi PC_State, SYSTEM_FAILURE // если сбой brne L7794 ;{ ldi PC_State, OFF; // сбросить сбой ;} L7794: cpi PC_State, ON // если комп включен brne L4759 ;{ // выключаем ldi PC_OFF_ON_Time, 0; // сброс параметров отключения ldi BeforeStartDelay, initBeforeOFFDelay; ldi BeforeStartDelay_Multipler, initBeforeOFFDelay_Multipler; ldi ButtonDelay, initButtonDelay; ldi AfterStartDelay, initAfterStartDelay; ldi Waiting, 0; ldi PC_State, OFF_POCESS; // переход в режим отключения rjmp return; ;} L4759: ; } L9645: cpi PowerLife, 0 // если время прошло, отрубает питание brne L4760 ;{ cbi PORTB, PINB1 ;} rjmp L4760e L4760:;else ;{ // если нет sbi PORTB, PINB1 // питание включено cpi PC_State, OFF brne L4760e ;{ dec PowerLife; // считаем время, если комп отключен. ;} ;} L4760e: // состояние сбоя ----------------------------------------------------------------------------- cpi PC_State, SYSTEM_FAILURE brne L4163 ;{ ldi PowerLife, 0; // отключение питания // мигалка в режиме аварии cpi mig, 3 breq L1874 // если mig != 0 ;{ inc mig sbi PORTB, PINB3 // погастиь светодиод rjmp l1873 ;} L1874: ;else ;{ ldi mig, 0 cbi PORTB, PINB3 // зажечь светодиод ;} L1873: rjmp return; ;} L4163: ;in temp1, PINB // читаем состояние порта ;sbrs mig, 2 // если bit 3 = 1 т.е. питания нет // индикация режима вкл/выкл cpi PC_State, ON brne L4322 ;{ cbi PORTB, PINB3 rjmp L1333 // зажечь светодиод ;} L4322: cpi PC_State, OFF brne L4312 ;{ sbi PORTB, PINB3 // погастиь светодиод rjmp L1333 ;} L4312: // мигалка tst mig breq L1234 // если tmp != 0 ;{ ldi mig, 0 sbi PORTB, PINB3 // погастиь светодиод rjmp l1333 ;} L1234: ;else ;{ ldi mig, 1 cbi PORTB, PINB3 // зажечь светодиод ;} L1333: //----------------------------------------------------------------------------- in tmp, PINB // читаем состояние порта sbrs tmp, 4 // если bit 4 = 1 т.е. питание есть ACC rjmp L3545 ;{ ldi PowerLife, PowerDownDelay; // не отключать питание cpi PC_State, OFF // если комп отключен brne L3545 ;{ ldi PC_OFF_ON_Time, 0; // сброс параметров включеня ldi BeforeStartDelay, initBeforeStartDelay; ldi ButtonDelay, initButtonDelay; ldi AfterStartDelay, initAfterStartDelay; ldi Waiting, 0; ldi PC_State, ON_POCESS; // переход в режим включения rjmp return; ;} L3545: ;} //----------------------------------------------------------------------------- cpi PC_State, ON_POCESS // режим включения brne L4682 ;{ cpi Waiting, 0 // если кнопка еще не нажималлась brne L4892 ;{ sbrc tmp, 4 // если bit 4 = 0 т.е. питания нет !ACC то (при отключении питания) rjmp L4892 ;{ ldi PC_State, OFF; // отменяем запуск rjmp return; ;} ;} L4892: WAIT BeforeStartDelay // задержка перед cpi Waiting, 0 brne L7921 ;{ sbi PORTB, PINB0 // нажатие кнопки ldi Waiting, 1; // запрет отмены запуска и повторного нажатия кнопки ;} L7921: WAIT ButtonDelay cbi PORTB, PINB0 // восстановление WAIT AfterStartDelay // задержка после inc PC_OFF_ON_Time; // считаем время cpi PC_on_signal, 1 brne L1830 ;{ ldi PC_State, ON; // комп включен. процесс запуска завершен ;} rjmp L1830e L1830://else // комп не включился ;{ cpi PC_OFF_ON_Time, initPC_ONCritical_Time // слишком долго brne L1830e ;{ ; if(PC_OFF_ON_Time > initPC_ONCritical_Time) ldi PC_State, SYSTEM_FAILURE; // сбой! ;} L1830e: rjmp return; ;} L4682: //----------------------------------------------------------------------------- cpi PC_State, OFF_POCESS // режим выключения brne L0682 ;{ cpi Waiting, 0 // если кнопка еще не нажималлась brne L0892 ;{ cpi PC_on_signal, 0 // если нет сигнала brne L19839 ;{ ldi PC_State, OFF // отключение! ldi PowerLife, 0; // отключение питания ;} L19839: sbrs tmp, 4 // если bit 4 = 1 т.е. питания есть ACC то (при восстановлении питания) rjmp L0892 ;{ ldi PC_State, ON; // отменяем запуск rjmp return; ;} ;} L0892: WAIT BeforeStartDelay // задержка перед tst BeforeStartDelay_Multipler // множитель задержки breq L0963 ;{ dec BeforeStartDelay_Multipler ldi BeforeStartDelay, initBeforeOFFDelay; // повторяем задержку rjmp return ;} L0963: cpi Waiting, 0 brne L0921 ;{ sbi PORTB, PINB0 // нажатие кнопки ldi Waiting, 1; // запрет отмены запуска и повторного нажатия кнопки ;} L0921: WAIT ButtonDelay cbi PORTB, PINB0 // восстановление WAIT AfterStartDelay // задержка после inc PC_OFF_ON_Time; // считаем время cpi PC_on_signal, 0 // выключился либо breq L9897 cpi PC_OFF_ON_Time, initPC_OFFCritical_Time // слишком долго brne return ;{ L9897: ; if(PC_OFF_ON_Time > initPC_ONCritical_Time) ldi PC_State, OFF; // сбой! ;} rjmp return; ;} L0682: //----------------------------------------------------------------------------- cpi PC_State, ON // состояние включен brne L4931 ;{ ldi PowerLife, PowerDownDelay; // поддерживаем питание cpi PC_on_signal, 0 // если нет сигнала brne L9830 ;{ ldi PC_State, SYSTEM_FAILURE // Сбой! ldi PowerLife, 0; // отключение питания ;} L9830: ;} L4931: return: ;//rjmp MAIN EX_OVF0VECT: out SREG, temp1 ; Restore Status register reti ;------------------------------ INT0VECT: in temp2, SREG ; Store the Status register in reg temp2 EX_INT0VECT: out SREG, temp2 ; Restore Status register reti ;------------------------------ NOVECT: reti |
![]() |
![]() |
![]() |
#6 | |
Старший Пользователь
![]() Регистрация: 03.11.2006
Город: Казань
Регион: 16, 116
Машина: Toyota Corolla NZE121 2003
Сообщений: 259
![]() |
![]() Цитата:
![]() PS А еще меня мучает вопрос если взять за основу БП от yurich38 совпадут ли ножки микросхемы 15 тину и 25 я имею ввиду по функционалу |
|
![]() |
![]() |
![]() |
#7 | |
Старший Пользователь
![]() Регистрация: 24.08.2008
Возраст: 38
Город: Москва
Регион: 77, 97, 99, 177
Машина: Suzuki SX4, Magyar, 2008
Сообщений: 86
![]() |
![]() Совпадут:
Цитата:
![]() |
|
![]() |
![]() |
![]() |
#8 |
Старший Пользователь
![]() Регистрация: 03.11.2006
Город: Казань
Регион: 16, 116
Машина: Toyota Corolla NZE121 2003
Сообщений: 259
![]() |
![]() |
![]() |
![]() |
![]() |
#9 |
Гуру
![]() Регистрация: 13.10.2006
Возраст: 47
Город: Санкт-Петербург
Регион: 54
Машина: '98 PRIUS NHW10
Сообщений: 1,991
![]() ![]() |
![]() совпадают почти у всех 8и ногих, сам сейчас тини85 под тини13 перелопачиваю ) потому, что тини 85 у меня 3 а тини13 5
![]()
__________________
маст{ер} c[лов]а и стил<ус>а мои детки: сивик и геша + а у него названья нет + примус + грандесла |
![]() |
![]() |
![]() |
#10 |
Старший Пользователь
![]() Регистрация: 03.11.2006
Город: Казань
Регион: 16, 116
Машина: Toyota Corolla NZE121 2003
Сообщений: 259
![]() |
![]() билн вот как на зло, вот буквально месяца два их навалом на любом углу было (я про тину15) а щя фиг найдет, заказал 25 тин 8 числа появятся в наличии + доставка
|
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|