ATtiny13A 101 применение

MaksMS
Offline
Зарегистрирован: 11.03.2013

Я рассписал необходимые действия и вопросы и не надо грубо так отвечать..

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

MaksMS пишет:

У распаянной м/к зашит блинк - даже не знаю как он там оказался - и программа не сбрасывается ресетом ,вывод: ресет залочен..

Корпус напомню -  SOP-8 , с ним очень сложно возится - панельки нет

1.  По моему сначала моргает бутлодер, а потом начинает работать блинк.

Они все с прошитым блинком приходят.

2. http://www.ebay.com/itm/SOIC8-SOP8-to-DIP8-EZ-Programmer-Adapter-Socket-...

MaksMS
Offline
Зарегистрирован: 11.03.2013

У тинек 13 не куда загрузчик запихивать - там всего 1 кб , та и вообще серия attiny не поддерживает бутлоадер.Хотя есть пути обхода..

Про переходник вкурсе ,но цена его не выгодна.Лучше уж http://www.startcopy.ru/repair/soic.htm - хватит для опытов и перепрограммирования.

Densoider
Offline
Зарегистрирован: 02.11.2012

Неправда Ваша, есть для тинек бутлоадер. Не дуиновский конечно, но есть.

MaksMS
Offline
Зарегистрирован: 11.03.2013

У тинек нет фьюза BOOTRST ..А то что зашить загрузчик можно я упомянул.

Densoider
Offline
Зарегистрирован: 02.11.2012

Вот самый известный загрузчик для Attiny 13 -

http://jps.hut2.ru/free_avr_loader_en.html

MaksMS
Offline
Зарегистрирован: 11.03.2013

Сдаюсь ,не видал:) .Но речь была о том,что так таковой поддержки загрузчиков НЕТ..Это все костыли

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

jeka_tm пишет:

Ну вот и приближается проверка в железе драйвера фонарика

Код конечно же непокажете?

Densoider пишет:

Вот самый известный загрузчик для Attiny 13 -

http://jps.hut2.ru/free_avr_loader_en.html

Но даст возможность пихать тине по юарту прошивку?

Densoider
Offline
Зарегистрирован: 02.11.2012

HWman пишет:

Densoider пишет:

Вот самый известный загрузчик для Attiny 13 -

http://jps.hut2.ru/free_avr_loader_en.html

Но даст возможность пихать тине по юарту прошивку?

Залезте на страничку с окончанием не на "en" а на "ru". Там по русски. Там все написано (внутри зипа).

UPD. Упс. Ридми там на английском.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

HWman пишет:

jeka_tm пишет:

Ну вот и приближается проверка в железе драйвера фонарика

Код конечно же непокажете?

Почему не покажу. я не скрываю свои коды если не заметили.но еще рано. надо допилить. как все будет нормально работать тогда и выложу коды, видео, фото

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

А как же народная мудрость и всё такое?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

HWman пишет:

А как же народная мудрость и всё такое?

вы это к чему?

MaksMS
Offline
Зарегистрирован: 11.03.2013

Разобрался с китайскими attiny13 ,которые не шились.Собрал фьюз доктор и установил правельные фьюзы.У одной был залочен ресет и SPI (L:F6 H:F8).

PS. Востановил все 5 штук.Везде были установлены какие попало фьюзы...Проверена через SPI -одна

Использовал Arduino UNO и горсть радиодеталей :)

Кому интересно написал про это тут http://homes-smart.ru/index.php/oborudovanie/arduino/48-vostanavlivaem-fyuzy-na-mikrokontrollerakh-attiny-cherez-arduino .В будущем исправлю и дополню статью..

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Разобрался с делителями для ШИМа но рабочую частоту тиньки не могу поднять выше 1.2 мГц, прилагаю лог прошивки:

C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=attiny13 -DF_CPU=1200000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13 C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp -o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=attiny13 -DF_CPU=1200000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13 C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\pins_arduino.c -o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\pins_arduino.c.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=attiny13 -DF_CPU=1200000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13 C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\wiring.c -o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\wiring.c.o 
In file included from C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\/wiring_private.h:31,
                 from C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\wiring.c:10:
c:/mc/arduino-1.0.4/hardware/tools/avr/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=attiny13 -DF_CPU=1200000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13 C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\wiring_analog.c -o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\wiring_analog.c.o 
In file included from C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\/wiring_private.h:31,
                 from C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\wiring_analog.c:9:
c:/mc/arduino-1.0.4/hardware/tools/avr/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\wiring_analog.c: In function 'analogRead':
C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\wiring_analog.c:20: warning: suggest parentheses around arithmetic in operand of |
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=attiny13 -DF_CPU=1200000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13 C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\wiring_digital.c -o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\wiring_digital.c.o 
In file included from C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\/wiring_private.h:31,
                 from C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\wiring_digital.c:9:
c:/mc/arduino-1.0.4/hardware/tools/avr/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -c -g -Os -Wall -ffunction-sections -fdata-sections -mmcu=attiny13 -DF_CPU=1200000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13 C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\wiring_shift.c -o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\wiring_shift.c.o 
In file included from C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\/wiring_private.h:31,
                 from C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\wiring_shift.c:9:
c:/mc/arduino-1.0.4/hardware/tools/avr/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=attiny13 -DF_CPU=1200000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13 C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\events.cpp -o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\events.cpp.o 
In file included from C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\/wiring_private.h:31,
                 from C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\events.cpp:9:
c:/mc/arduino-1.0.4/hardware/tools/avr/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\events.cpp: In function 'long unsigned int pulseIn(unsigned char, unsigned char, long unsigned int)':
C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\events.cpp:13: warning: 'st' may be used uninitialized in this function
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=attiny13 -DF_CPU=1200000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13 C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\main.cpp -o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\main.cpp.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=attiny13 -DF_CPU=1200000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13 C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\Print.cpp -o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Print.cpp.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=attiny13 -DF_CPU=1200000 -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=104 -IC:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13 C:\Users\Администратор\Documents\Arduino\hardware\attiny13\cores\core13\WMath.cpp -o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\WMath.cpp.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\core.a C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\pins_arduino.c.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\core.a C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\wiring.c.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\core.a C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\wiring_analog.c.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\core.a C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\wiring_digital.c.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\core.a C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\wiring_shift.c.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\core.a C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\events.cpp.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\core.a C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\main.cpp.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\core.a C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Print.cpp.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-ar rcs C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\core.a C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\WMath.cpp.o 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-gcc -Os -Wl,--gc-sections -mmcu=attiny13 -o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.elf C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.o C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\core.a -LC:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp -lm 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.elf C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.eep 
C:\MC\arduino-1.0.4\hardware\tools\avr\bin\avr-objcopy -O ihex -R .eeprom C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.elf C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.hex 
Размер скетча в двоичном коде: 490 байт (из 1 024 байт максимум)
C:\MC\arduino-1.0.4\hardware/tools/avr/bin/avrdude -CC:\MC\arduino-1.0.4\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pattiny13 -cstk500v1 -P\\.\COM25 -b19200 -Uflash:w:C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.hex:i 

avrdude: Version 5.11, compiled on Sep  2 2011 at 19:38:36
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2009 Joerg Wunsch

         System wide configuration file is "C:\MC\arduino-1.0.4\hardware/tools/avr/etc/avrdude.conf"

         Using Port                    : \\.\COM25
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Send: 0 [30]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
         AVR Part                      : ATtiny13
         Chip Erase delay              : 4000 us
         PAGEL                         : P00
         BS2                           : P00
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65     5     4    0 no         64    4      0  4000  4000 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           flash         65     6    32    0 yes      1024   32     32  4500  4500 0xff 0xff
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
avrdude: Send: A [41] . [80]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [02] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [81]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [01] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [82]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [12] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [98]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
avrdude: Send: A [41] . [84]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [85]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [86]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [87]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [89]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: Send: A [41] . [81]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [01] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [82]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [12] 
avrdude: Recv: . [10] 
avrdude: Send: B [42] . [14] . [00] . [00] . [01] . [01] . [01] . [01] . [02] . [ff] . [ff] . [ff] . [ff] . [00]   [20] . [00] @ [40] . [00] . [00] . [04] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny13
avrdude: Send: P [50]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: AVR device initialized and ready to accept instructions

Reading | avrdude: Send: V [56] 0 [30] . [00] . [00] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [1e] 
avrdude: Recv: . [10] 
avrdude: Send: V [56] 0 [30] . [00] . [01] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [90] 
avrdude: Recv: . [10] 
################avrdude: Send: V [56] 0 [30] . [00] . [02] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [07] 
avrdude: Recv: . [10] 
################################## | 100% 0.06s

avrdude: Device signature = 0x1e9007
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: Send: V [56] . [a0] . [00] < [3c] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [ff] 
avrdude: Recv: . [10] 
avrdude: Send: V [56] . [a0] . [00] = [3d] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [ff] 
avrdude: Recv: . [10] 
avrdude: Send: V [56] . [a0] . [00] > [3e] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [ff] 
avrdude: Recv: . [10] 
avrdude: Send: V [56] . [a0] . [00] ? [3f] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [ff] 
avrdude: Recv: . [10] 
avrdude: erasing chip
avrdude: Send: V [56] . [ac] . [80] . [00] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [00] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [81]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [01] 
avrdude: Recv: . [10] 
avrdude: Send: A [41] . [82]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [12] 
avrdude: Recv: . [10] 
avrdude: Send: B [42] . [14] . [00] . [00] . [01] . [01] . [01] . [01] . [02] . [ff] . [ff] . [ff] . [ff] . [00]   [20] . [00] @ [40] . [00] . [00] . [04] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny13
avrdude: Send: P [50]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: reading input file "C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.hex"
avrdude: writing flash (490 bytes):

Writing | avrdude: Send: U [55] . [00] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [09] . [c0] ! [21] . [c0]   [20] . [c0] I [49] . [c0] . [1e] . [c0] . [1d] . [c0] . [1c] . [c0] . [1b] . [c0] . [1a] . [c0] . [19] . [c0] . [11] $ [24] . [1f] . [be] . [cf] . [e9] . [cd] . [bf] . [10] . [e0] . [a0] . [e6]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [10] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [b0] . [e0] . [e8] . [ee] . [f1] . [e0] . [02] . [c0] . [05] . [90] . [0d] . [92] . [a2] 6 [36] . [b1] . [07] . [d9] . [f7] . [10] . [e0] . [a2] . [e6] . [b0] . [e0] . [01] . [c0] . [1d] . [92] . [aa] 6 [36] . [b1] . [07]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55]   [20] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [e1] . [f7] . [cc] . [d0] . [cf] . [c0] . [dc] . [cf] . [80] . [91] b [62] . [00] ` [60] . [91] d [64] . [00] b [62] . [d0]   [20] . [91] ` [60] . [00] 0 [30] . [91] a [61] . [00] . [80] . [91] d [64] . [00] . [90] . [91]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] 0 [30] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] e [65] . [00] . [82] . [0f] . [93] . [1f] . [90] . [93] e [65] . [00] . [80] . [93] d [64] . [00] . [00] . [97] . [19] . [f0] . [8f] ? [3f] . [91] . [05] A [41] . [f4] . [88] ' [27] . [99] ' [27] . [82] . [1b] . [93] . [0b]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
####avrdude: Send: U [55] @ [40] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [90] . [93] a [61] . [00] . [80] . [93] ` [60] . [00] . [8e] . [e1] . [90] . [e0] + [2b] . [d0] . [08] . [95] . [80] . [91] b [62] . [00] a [61] . [e0] ` [60] . [d0] . [08] . [95] . [1f] . [92] . [0f] . [92] . [0f] . [b6]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] P [50] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [0f] . [92] . [11] $ [24] . [8f] . [93] . [9f] . [93] . [af] . [93] . [bf] . [93] . [80] . [91] f [66] . [00] . [90] . [91] g [67] . [00] . [a0] . [91] h [68] . [00] . [b0] . [91] i [69] . [00] . [01] . [96] . [a1] . [1d]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] ` [60] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [b1] . [1d] . [80] . [93] f [66] . [00] . [90] . [93] g [67] . [00] . [a0] . [93] h [68] . [00] . [b0] . [93] i [69] . [00] . [bf] . [91] . [af] . [91] . [9f] . [91] . [8f] . [91] . [0f] . [90] . [0f] . [be] . [0f] . [90]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] p [70] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [1f] . [90] . [18] . [95] , [2c] . [e2] 1 [31] . [e0] . [04] . [c0] . [f9] . [01] 1 [31] . [97] . [f1] . [f7] . [01] . [97] . [00] . [97] . [d1] . [f7] . [08] . [95] . [83] . [b7] . [81] ` [60] . [83] . [bf] . [8f] . [b5]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
####avrdude: Send: U [55] . [80] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [83] ` [60] . [8f] . [bd] . [89] . [b7] . [82] ` [60] . [89] . [bf] . [12] . [be] x [78] . [94] . [86] . [b1] . [82] h [68] . [86] . [b9] . [08] . [95] . [0f] . [93] . [1f] . [93] . [18] / [2f] . [06] / [2f] a [61] . [e0]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [90] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [1b] . [d0] . [00] # [23] . [19] . [f4] . [81] / [2f] ` [60] . [e0] . [04] . [c0] . [0f] ? [3f] ! [21] . [f4] . [81] / [2f] a [61] . [e0] - [2d] . [d0] . [0d] . [c0] . [11] 0 [30] ) [29] . [f4] . [8f] . [b5] . [80] b [62]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [a0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [8f] . [bd] . [09] . [bd] . [06] . [c0] . [11] # [23] ! [21] . [f4] . [8f] . [b5] . [80] h [68] . [8f] . [bd] . [06] . [bf] . [1f] . [91] . [0f] . [91] . [08] . [95] 8 [38] / [2f] . [86] 0 [30] . [c0] . [f4] f [66] # [23]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [b0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] a [61] . [f4] ' [27] . [b3] . [81] . [e0] . [90] . [e0] . [02] . [c0] . [88] . [0f] . [99] . [1f] : [3a] . [95] . [e2] . [f7] . [80] . [95] . [82] # [23] . [87] . [bb] . [08] . [95] ' [27] . [b3] . [81] . [e0] . [90] . [e0]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
####avrdude: Send: U [55] . [c0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [02] . [c0] . [88] . [0f] . [99] . [1f] : [3a] . [95] . [e2] . [f7] ( [28] + [2b] ' [27] . [bb] . [08] . [95] 8 [38] / [2f] . [86] 0 [30] . [10] . [f5] . [82] 0 [30] @ [40] . [f4] . [88] # [23] . [19] . [f4] . [8f] . [b5]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [d0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [8f] w [77] . [02] . [c0] . [8f] . [b5] . [8f] } [7d] . [8f] . [bd] f [66] # [23] a [61] . [f4] ( [28] . [b3] . [81] . [e0] . [90] . [e0] . [02] . [c0] . [88] . [0f] . [99] . [1f] : [3a] . [95] . [e2] . [f7] . [80] . [95]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [e0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00]   [20] F [46] . [82] # [23] . [88] . [bb] . [08] . [95] ( [28] . [b3] . [81] . [e0] . [90] . [e0] . [02] . [c0] . [88] . [0f] . [99] . [1f] : [3a] . [95] . [e2] . [f7] ( [28] + [2b] ( [28] . [bb] . [08] . [95] . [8d] . [df] X [58] . [df]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [f0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: d [64] . [00] . [0a] F [46] 3 [33] . [df] . [fe] . [cf] . [f8] . [94] . [ff] . [cf] . [01] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
## | 100% 1.32s

avrdude: 490 bytes of flash written
avrdude: verifying flash memory against C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.hex:
avrdude: load data flash data from input file C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.hex:
avrdude: input file C:\Users\836D~1\AppData\Local\Temp\build9103030239233877441.tmp\Fade.cpp.hex contains 490 bytes
avrdude: reading on-chip flash data:

Reading | avrdude: Send: U [55] . [00] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [09] . [c0] ! [21] . [c0]   [20] . [c0] I [49] . [c0] . [1e] . [c0] . [1d] . [c0] . [1c] . [c0] . [1b] . [c0] . [1a] . [c0] . [19] . [c0] . [11] $ [24] . [1f] . [be] . [cf] . [e9] . [cd] . [bf] . [10] . [e0] . [a0] . [e6] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [10] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [b0] . [e0] . [e8] . [ee] . [f1] . [e0] . [02] . [c0] . [05] . [90] . [0d] . [92] . [a2] 6 [36] . [b1] . [07] . [d9] . [f7] . [10] . [e0] . [a2] . [e6] . [b0] . [e0] . [01] . [c0] . [1d] . [92] . [aa] 6 [36] . [b1] . [07] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55]   [20] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [e1] . [f7] . [cc] . [d0] . [cf] . [c0] . [dc] . [cf] . [80] . [91] b [62] . [00] ` [60] . [91] d [64] . [00] b [62] . [d0]   [20] . [91] ` [60] . [00] 0 [30] . [91] a [61] . [00] . [80] . [91] d [64] . [00] . [90] . [91] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] 0 [30] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: e [65] . [00] . [82] . [0f] . [93] . [1f] . [90] . [93] e [65] . [00] . [80] . [93] d [64] . [00] . [00] . [97] . [19] . [f0] . [8f] ? [3f] . [91] . [05] A [41] . [f4] . [88] ' [27] . [99] ' [27] . [82] . [1b] . [93] . [0b] 
avrdude: Recv: . [10] 
####avrdude: Send: U [55] @ [40] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [90] . [93] a [61] . [00] . [80] . [93] ` [60] . [00] . [8e] . [e1] . [90] . [e0] + [2b] . [d0] . [08] . [95] . [80] . [91] b [62] . [00] a [61] . [e0] ` [60] . [d0] . [08] . [95] . [1f] . [92] . [0f] . [92] . [0f] . [b6] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] P [50] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [0f] . [92] . [11] $ [24] . [8f] . [93] . [9f] . [93] . [af] . [93] . [bf] . [93] . [80] . [91] f [66] . [00] . [90] . [91] g [67] . [00] . [a0] . [91] h [68] . [00] . [b0] . [91] i [69] . [00] . [01] . [96] . [a1] . [1d] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] ` [60] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [b1] . [1d] . [80] . [93] f [66] . [00] . [90] . [93] g [67] . [00] . [a0] . [93] h [68] . [00] . [b0] . [93] i [69] . [00] . [bf] . [91] . [af] . [91] . [9f] . [91] . [8f] . [91] . [0f] . [90] . [0f] . [be] . [0f] . [90] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] p [70] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [1f] . [90] . [18] . [95] , [2c] . [e2] 1 [31] . [e0] . [04] . [c0] . [f9] . [01] 1 [31] . [97] . [f1] . [f7] . [01] . [97] . [00] . [97] . [d1] . [f7] . [08] . [95] . [83] . [b7] . [81] ` [60] . [83] . [bf] . [8f] . [b5] 
avrdude: Recv: . [10] 
####avrdude: Send: U [55] . [80] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [83] ` [60] . [8f] . [bd] . [89] . [b7] . [82] ` [60] . [89] . [bf] . [12] . [be] x [78] . [94] . [86] . [b1] . [82] h [68] . [86] . [b9] . [08] . [95] . [0f] . [93] . [1f] . [93] . [18] / [2f] . [06] / [2f] a [61] . [e0] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [90] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [1b] . [d0] . [00] # [23] . [19] . [f4] . [81] / [2f] ` [60] . [e0] . [04] . [c0] . [0f] ? [3f] ! [21] . [f4] . [81] / [2f] a [61] . [e0] - [2d] . [d0] . [0d] . [c0] . [11] 0 [30] ) [29] . [f4] . [8f] . [b5] . [80] b [62] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [a0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [8f] . [bd] . [09] . [bd] . [06] . [c0] . [11] # [23] ! [21] . [f4] . [8f] . [b5] . [80] h [68] . [8f] . [bd] . [06] . [bf] . [1f] . [91] . [0f] . [91] . [08] . [95] 8 [38] / [2f] . [86] 0 [30] . [c0] . [f4] f [66] # [23] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [b0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: a [61] . [f4] ' [27] . [b3] . [81] . [e0] . [90] . [e0] . [02] . [c0] . [88] . [0f] . [99] . [1f] : [3a] . [95] . [e2] . [f7] . [80] . [95] . [82] # [23] . [87] . [bb] . [08] . [95] ' [27] . [b3] . [81] . [e0] . [90] . [e0] 
avrdude: Recv: . [10] 
####avrdude: Send: U [55] . [c0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [02] . [c0] . [88] . [0f] . [99] . [1f] : [3a] . [95] . [e2] . [f7] ( [28] + [2b] ' [27] . [bb] . [08] . [95] 8 [38] / [2f] . [86] 0 [30] . [10] . [f5] . [82] 0 [30] @ [40] . [f4] . [88] # [23] . [19] . [f4] . [8f] . [b5] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [d0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [8f] w [77] . [02] . [c0] . [8f] . [b5] . [8f] } [7d] . [8f] . [bd] f [66] # [23] a [61] . [f4] ( [28] . [b3] . [81] . [e0] . [90] . [e0] . [02] . [c0] . [88] . [0f] . [99] . [1f] : [3a] . [95] . [e2] . [f7] . [80] . [95] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [e0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00]   [20] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [82] # [23] . [88] . [bb] . [08] . [95] ( [28] . [b3] . [81] . [e0] . [90] . [e0] . [02] . [c0] . [88] . [0f] . [99] . [1f] : [3a] . [95] . [e2] . [f7] ( [28] + [2b] ( [28] . [bb] . [08] . [95] . [8d] . [df] X [58] . [df] 
avrdude: Recv: . [10] 
###avrdude: Send: U [55] . [f0] . [00]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 
avrdude: Send: t [74] . [00] . [0a] F [46]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: 3 [33] . [df] . [fe] . [cf] . [f8] . [94] . [ff] . [cf] . [01] . [00] 
avrdude: Recv: . [10] 
## | 100% 0.78s

avrdude: verifying ...
avrdude: 490 bytes of flash verified
avrdude: Send: Q [51]   [20] 
avrdude: Recv: . [14] 
avrdude: Recv: . [10] 

avrdude done.  Thank you.

 

smW
Offline
Зарегистрирован: 24.11.2013

Марцинов пишет:
криво перевожу или криво написано, но сколько входов  ATtiny13A могут работать по внешним прерываниям ?
Цитата:
... one 8-bit Timer/Counter with compare modes, Internal and External Interrupts, a 4-channel, 10-bit ADC, a programmable Watchdog Timer with internal Oscillator, and three ...
судя по схеме внешние прерывания доступны на всех ногах кроме земли и питания, те их больше, чем у Atmega256 ...

 

PS: с учетом важного дополнения от step962:

http://arduino.ru/forum/apparatnye-voprosy/otlichie-int-i-pcint#comment-...

step962 пишет:

PCINTx-прерывания обслуживают сразу целый порт, поэтому в обработчике необходимо смотреть на записанное и текущее состояние выводов и выискивать, какой же из пинов изменил свое состояние (и в какую сторону). Ну а потом уже решать, реагировать ли на это изменение или проигнорировать.

Вот, например, у ATMega328 есть три соответствующих вектора обработки прерываний PCINT: 4-й (PCINT0_vect), 5-й (PCINT0_vec1) и 6-й (PCINT2_vect). 4-й вектор обслуживает ноги PCINT7...0 (порт B), 5-й - PCINT8...14 (порт C - в нем только 7 выводов)6-й - PCINT16...23 (порт D). 

INTx слушает один-единственный вывод и может настраиваться на тип происходящего на нем изменения уровня. Стало быть, более оперативно реагирует на дергание соответствующей ножки.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Илья73 пишет:

Вот код. На самом деле нижнюю температуру можно чуток приподнять. В качестве темодатчиков использовал термисторы, мне понравилось, очень широки  диапазон дают на АЦП, и дешевые!

Зарядное такое

void setup()
{ 
  PORTB=0x00;  //записать в весь порт В 0
  DDRB=0x01;   //настроить порт В 0x01: по другому 000001 (1 означает выход, 0 вход)
  
//Настройка аппаратного ШИМ 
  TCCR0A=0x83;  //настраиваем аппартанный шим на PB0 с частотой 37,5кГц(аппаратный шим только на PB0 и PB1)
  TCCR0B=0x83;  //на PB1 (второй шим) ничего делать не надо
  OCR0A=0x00;
  
} 
void loop()
{
  {
    int valo = analogRead(A3);        //Читаем термистор
   valo = map(valo,400,750,40,255);   // масштабируем аналог в шим
   analogWrite(1,valo);               //выводим шим на вентелятор
   valo = analogRead(A3);             // это выражение может показаться лишним, но без него программа не работает.
   if(valo<=400)analogWrite(1,0);     //если температура ниже чем 30гр. то шим ноль
   if(valo>=750)analogWrite(1,255);   //если выше 65 то шим на максимум
  }
  {
 
   int val = analogRead(A1);        //то же самое, только для второго вентелятора.
   val = map(val,400,750,40,255);
   analogWrite(0,val); 
   val = analogRead(A1);
   if(val<=400)analogWrite(0,0);
   if(val>=750)analogWrite(0,255);
  }
  
}

Илья73, напиши нормальный код без PORTB, DDRВ, TCCR0A, TCCR0B и OCR0A, просто напиши как на дуинку, выкинь конденсаторы С3 и С4, чтобы транзисторы работали в ключевом режиме и перекачай ядро потом перед прошивкой тиньки выбери из списка ATtiny13 9.6 MHz BOD 2.7 V и запиши загрузчик потом залей прошивку и скорей всего ты писк уже не услышишь.

Densoider
Offline
Зарегистрирован: 02.11.2012

Хочу на УАЗик сделать управляемые тинькой дворники с запоминанием. Три режима - медленный, средний и быстрый плюс спецрежим, когда можно задать время между махами и на каком то махе писать писалкой. Главное - это то  что время между махами и время между сцыками надо запоминать в епроме. У кого какие идеи будут?

Илья73
Offline
Зарегистрирован: 06.09.2013

HWman,  а на какой частоте это "ядро". Сейчас попробую установить ядро, а тиньку завтра вытащу, она на работе.

Если все получится, будет совсем не плохо иметь такую версию ядра. Можно будет делать выбор если нужен шим неслышный :)

Да он в принципе и не пищит сейчас, вернее пищал только перед самым включеним , вот эти кондеры и гасили этот начальный писк. Сейчас только потрескивает перед запуском один вентелятор уже не помню на каой ноге. В общем вроде и работает, но чувствую что как то не совсем правильно.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Кстати, убил 2 тиньки неверно выставленными фьюзами, что-то мудрил с частотой 128 кГц, будь внимательный.

Перед прошивкой жми записать загрузчик, это выставит нужные фьюзы и рабочая частота тиньки будет 9.6 мГц., если же ничего не хочешь менять то выбирай 0.6 мГц., в таком случае загрузчик шить ненужно.

Кстати, конденсаторы в цепи образуют RC цепочку, тоесть транзистор по идее работает как бы в линейном режиме - дико греется, в ключевом не так.

Илья73
Offline
Зарегистрирован: 06.09.2013

Если ни чего не менять, т.е выбрать 0.6 мГц то и тинька будет работать на 0.6 мГц? С delay проблем не будет?

Сейчас перезаписал в Arduino 1.0.5

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

HWman пишет:

Илья73 пишет:

Вот код. На самом деле нижнюю температуру можно чуток приподнять. В качестве темодатчиков использовал термисторы, мне понравилось, очень широки  диапазон дают на АЦП, и дешевые!

Зарядное такое

void setup()
{ 
  PORTB=0x00;  //записать в весь порт В 0
  DDRB=0x01;   //настроить порт В 0x01: по другому 000001 (1 означает выход, 0 вход)
  
//Настройка аппаратного ШИМ 
  TCCR0A=0x83;  //настраиваем аппартанный шим на PB0 с частотой 37,5кГц(аппаратный шим только на PB0 и PB1)
  TCCR0B=0x83;  //на PB1 (второй шим) ничего делать не надо
  OCR0A=0x00;
  
} 
void loop()
{
  {
    int valo = analogRead(A3);        //Читаем термистор
   valo = map(valo,400,750,40,255);   // масштабируем аналог в шим
   analogWrite(1,valo);               //выводим шим на вентелятор
   valo = analogRead(A3);             // это выражение может показаться лишним, но без него программа не работает.
   if(valo<=400)analogWrite(1,0);     //если температура ниже чем 30гр. то шим ноль
   if(valo>=750)analogWrite(1,255);   //если выше 65 то шим на максимум
  }
  {
 
   int val = analogRead(A1);        //то же самое, только для второго вентелятора.
   val = map(val,400,750,40,255);
   analogWrite(0,val); 
   val = analogRead(A1);
   if(val<=400)analogWrite(0,0);
   if(val>=750)analogWrite(0,255);
  }
  
}

Илья73, напиши нормальный код без PORTB, DDRВ, TCCR0A, TCCR0B и OCR0A, просто напиши как на дуинку, выкинь конденсаторы С3 и С4, чтобы транзисторы работали в ключевом режиме и перекачай ядро потом перед прошивкой тиньки выбери из списка ATtiny13 9.6 MHz BOD 2.7 V и запиши загрузчик потом залей прошивку и скорей всего ты писк уже не услышишь.

видишь даже в ссылке на ядро что ты дал написано 9600000 частота  при твоих фьюзах а не 1200000 как у тебя

###############################################################

attiny13.name=ATtiny13 9.6 (internal 9.6 MHz clock) MHz BOD 2.7 V
attiny13.upload.using=arduino:arduinoisp
attiny13.bootloader.low_fuses=0x7A # частота тиньки 9.6 мГц
attiny13.bootloader.high_fuses=0xFB # BOD 2.7 В.
attiny13.upload.maximum_size=1024
attiny13.build.mcu=attiny13
attiny13.build.f_cpu=9600000L
attiny13.build.core=core13

###############################################################

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

jeka_tm пишет:

видишь даже в ссылке на ядро что ты дал написано 9600000 частота  при твоих фьюзах а не 1200000 как у тебя

###############################################################

attiny13.name=ATtiny13 9.6 (internal 9.6 MHz clock) MHz BOD 2.7 V
attiny13.upload.using=arduino:arduinoisp
attiny13.bootloader.low_fuses=0x7A # частота тиньки 9.6 мГц
attiny13.bootloader.high_fuses=0xFB # BOD 2.7 В.
attiny13.upload.maximum_size=1024
attiny13.build.mcu=attiny13
attiny13.build.f_cpu=9600000L
attiny13.build.core=core13

###############################################################

 

Так я поправил и перезалил, раньше было 1200000 причём без буквы "L"

Илья73 пишет:

Если ни чего не менять, т.е выбрать 0.6 мГц то и тинька будет работать на 0.6 мГц? С delay проблем не будет?

Сейчас перезаписал в Arduino 1.0.5

Так как все свои тиньки поубивал то проверить что там с delay нету возможности.

Кстати, приставка BOD 2.7 V означает что тинька будет питаться до 2.7 В дальше будет перезагружатся пока напряжение не станет выше 2.7В .

MaksMS
Offline
Зарегистрирован: 11.03.2013

HWman пишет:

Так как все свои тиньки поубивал

Не поубивал,а просто заблокировал :) востановить как оказалось ничего сложного.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ага. давай уже восстанавливай и исправляй boards

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

jeka_tm пишет:

ага. давай уже восстанавливай и исправляй boards

Под рукой кроме дуинки ничего нет, так получится восстановить?

А что с boards.txt не так?

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Кстати, тиня залочилась когда я выбрал данную опцию:

attiny13int.name=Attiny13 @ 128 KHz (internal watchdog oscillator)
attiny13int.upload.using=arduino:arduinoisp
attiny13int.upload.maximum_size=1024
attiny13int.upload.speed=250 # important for not losing connection to a slow processor
attiny13int.bootloader.low_fuses=0x7B
attiny13int.bootloader.high_fuses=0xFF
attiny13int.bootloader.unlock_bits=0x3F
attiny13int.bootloader.lock_bits=0x3F
attiny13int.build.mcu=attiny13
attiny13int.build.f_cpu=128000
attiny13int.build.core=core13

 

 

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Перезалил ядро, при выборе Attiny13 1 MHz (default) никаких проблем с задержками быть не должно, даже загрузчик шить не обязательно.

Если хочется больше скорости то есть другой режим - ATtiny13 9.6 MHz, BOD 2.7 V с настроенным BODLEVELом на 2.7 В. просто перед прошивкой тинки жмём прошить загрузчик, это выставит нужные фьюзы.

Кстати, я тут делал хоть какую-то регулировку частоты ШИМ, немного переделал функцию из ядра, постарался максимально закоментировать что и как:


void analogWrite1(uint8_t pin, uint8_t val){ 
  pinMode(pin, OUTPUT); //For compatibility - STUPID! 
  if(val==0){ //Handle Off condition
    digitalWrite(pin,0);
  } 
  else if(val == 255){ //Handle On condition
    digitalWrite(pin, HIGH);
  } 
  else { //Otherwise setup the appropriate timer compare
    if(pin == 1){
      TCCR0A = 0x83; // рулим ШИМом
      TCCR0B = 0x04; // делитель N = 256
      OCR0B = val;
    }
    if(pin == 0){
      TCCR0A = 0x83;
      TCCR0B = 0x04; // N = 256
/*
       TCCR0B = 0x05 (N = 1024), 9600000(9.6 МГц) / 1024 / 256 = 36.6 Гц
       TCCR0B = 0x04; (N = 256), 9600000 / 256 / 256 = 146 Гц
       TCCR0B = 0x03 (N = 64), 9600000 / 64 / 256 = 586 Гц
       TCCR0B = 0x02 (N = 8), 9600000 / 8 / 256 = 4688 Гц 
       TCCR0B = 0x01 (N = 1), 9600000 / 1 / 256 = 37500 Гц 
*/
      OCR0A = val;
    }
  }
}

И теперь я в своей велофаре могу убавить частоту до 70 Гц, что на глаз не заметно, но, по моему мнению немного уменьшит энергопотребление.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

сделал плату для драйвера. теперь осталось отладить программу

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

А ты как будешь рулить яркостью? Подавать ШИМ на драйвер?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

HWman пишет:

А ты как будешь рулить яркостью? Подавать ШИМ на драйвер?

да шим, но на транзистор, а управлять яркостью кнопкой (2 контакта слева)

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

планирую только 2 режима: 50% яркости (может немного меньше или больше)  и 100%. больше мне не требуется

частота шим в районе 100-150: на глаз незаметно, но меньше нагружает выход тиньки

частота тиньки скорее всего 128 кгц

пока так

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

HWman пишет:

Перезалил ядро, при выборе Attiny13 1 MHz (default) никаких проблем с задержками быть не должно, даже загрузчик шить не обязательно.

Если хочется больше скорости то есть другой режим - ATtiny13 9.6 MHz, BOD 2.7 V с настроенным BODLEVELом на 2.7 В. просто перед прошивкой тинки жмём прошить загрузчик, это выставит нужные фьюзы.

Кстати, я тут делал хоть какую-то регулировку частоты ШИМ, немного переделал функцию из ядра, постарался максимально закоментировать что и как:

void analogWrite1(uint8_t pin, uint8_t val){ 
  pinMode(pin, OUTPUT); //For compatibility - STUPID! 
  if(val==0){ //Handle Off condition
    digitalWrite(pin,0);
  } 
  else if(val == 255){ //Handle On condition
    digitalWrite(pin, HIGH);
  } 
  else { //Otherwise setup the appropriate timer compare
    if(pin == 1){
      TCCR0A = 0x83; // рулим ШИМом
      TCCR0B = 0x04; // делитель N = 256
      OCR0B = val;
    }
    if(pin == 0){
      TCCR0A = 0x83;
      TCCR0B = 0x04; // N = 256
/*
       TCCR0B = 0x05 (N = 1024), 9600000(9.6 МГц) / 1024 / 256 = 36.6 Гц
       TCCR0B = 0x04; (N = 256), 9600000 / 256 / 256 = 146 Гц
       TCCR0B = 0x03 (N = 64), 9600000 / 64 / 256 = 586 Гц
       TCCR0B = 0x02 (N = 8), 9600000 / 8 / 256 = 4688 Гц 
       TCCR0B = 0x01 (N = 1), 9600000 / 1 / 256 = 37500 Гц 
*/
      OCR0A = val;
    }
  }
}

И теперь я в своей велофаре могу убавить частоту до 70 Гц, что на глаз не заметно, но, по моему мнению немного уменьшит энергопотребление.

у меня тоже к вас вопрос в том что вы выкладывали

файл boards

attiny13def.name=Attiny13 1 MHz (default)
attiny13def.upload.using=arduino:arduinoisp
attiny13def.upload.maximum_size=1024
attiny13def.bootloader.low_fuses=0x6A
attiny13def.bootloader.high_fuses=0xFF
attiny13def.build.mcu=attiny13
attiny13def.build.f_cpu=1000000L
attiny13def.build.core=core13

вроде как частота должна быть не 1мгц а 1.2 мгц

и здесь должно быть соответственно 1200000

attiny13def.build.f_cpu=1200000L

поправьте если ошибаюсь

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Всё там нормально, при 1200000 задержка в 1000 где-то реально на 1200-1300, можеш проверить.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

HWman пишет:

Всё там нормально, при 1200000 задержка в 1000 где-то реально на 1200-1300, можеш проверить.

странно это. частота по фьюзам стоит 9.6. делитель на 8 получается 1.2 мгц. откуда 1мгц не понял. ладно вечером постараюсь проверить

denis64
Offline
Зарегистрирован: 07.10.2013

очень большое фото в тему

кристалл тини13

http://s.zeptobars.ru/atmel-attiny13a-HD.jpg

 

внимание размер более 8000пх

zsm@nxt.ru
Offline
Зарегистрирован: 27.05.2013

Вот если кому надо включение освещения по фоторезистору под 13 тиньку.

Код Megakoteyka написал (за что ему огромное спасибо), я толко резисторы прикрутил и чуть по другому гистерезис сделал.Тинька напрямую управляет твердотельным реле ssr25.

#define BUFFER_SIZE 10  // количество показаний датчика для расчета среднего
//#define INTERVAL 100  // интервал опроса датчика

int buffer[BUFFER_SIZE];// буфер с показаниями датчика
long nextTime = 0;      // время очередного срабатывания датчика

// пороги гистерезиса


void setup()
{
  pinMode(0, OUTPUT);
}

void loop()
{
  // получили текущее время
  
  int sensitivity = analogRead(A1);
  int INTERVAL = analogRead(A3)*2; 
  
  long time = millis();

  // если текущее время дошло до времени срабатывания
  if(time >= nextTime)
  {
    // устанавливаем новое время срабатывания
    nextTime = time + INTERVAL;

    // сдвинули все элементы массива влево,
    // при этом потеряли первый элемент
    for(int i = 0; i < BUFFER_SIZE - 1; i++)
      buffer[i] = buffer[i + 1];

    // на место последнего элемента записали показания датчика
    buffer[BUFFER_SIZE - 1] = analogRead(A2);

    // суммируем показания
    int sum = 0;
    for(int i = 0; i < BUFFER_SIZE; i++)
      sum += buffer[i];

    // вычисляем среднее
    sum /= BUFFER_SIZE;

    if(sum >= sensitivity+20)
    {
      // выключить свет
      
      digitalWrite(0, LOW);
      
    }
    if(sum <= sensitivity-20)
    {
      // включить свет
      
      digitalWrite(0, HIGH);
    }
  }
}

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Новая статья на ЕЕ, возможно кому то будет интересно:

8 канальный ШИМ на attiny13, (с использованием 74HC595)

Densoider
Offline
Зарегистрирован: 02.11.2012

Ребята помогите разобраться.

Задача минимум:

Тинька в режиме минимального потребления. Раз в 15 минут должна на вывод (любой) подать меандр с частотой 2 Герца и длительностью 2 секунды.

Задача максимум: Делать то же самое, но при замыкании на ноль одной ноги - выдавать импульсы через 5 минут, другой ноги - через 10 минут, третьей ноги - через 15 минут. Замыкание происходит в отключенном состоянии и невозможно в работе. Т.е. это предустановка.

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

Помогите разобраться - никак не пойму с чего копать.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

HWman пишет:

Вот тут есть парочка интересных вещей.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

zsm@nxt.ru пишет:

Вот если кому надо...

Как-то неправильно усреднение работает - при неизменном текущем значении усредненное отображается на пару градусов выше.

Размер буфера 5 измерений, т.е. уже за 10 измерений текущее и усредненное по идее должны совпадать, а они отличаются.

Вот вывод показаний:

Setup...
Now Averaging is TRUE
... end
TsensorA - Current:26.25	Average: 5.25
TsensorA - Current:26.25	Average: 11.55
TsensorA - Current:26.25	Average: 18.06
TsensorA - Current:26.25	Average: 24.61
TsensorA - Current:26.25	Average: 31.17
TsensorA - Current:26.31	Average: 32.50
TsensorA - Current:26.25	Average: 32.76
TsensorA - Current:26.25	Average: 32.81
TsensorA - Current:26.25	Average: 32.83
TsensorA - Current:26.25	Average: 32.83
TsensorA - Current:26.25	Average: 32.82
TsensorA - Current:26.25	Average: 32.81
TsensorA - Current:26.25	Average: 32.81
TsensorA - Current:26.25	Average: 32.81
TsensorA - Current:26.25	Average: 32.81
TsensorA - Current:26.25	Average: 32.81
TsensorA - Current:26.25	Average: 32.81
TsensorA - Current:26.50	Average: 32.86
TsensorA - Current:28.87	Average: 33.40
TsensorA - Current:29.94	Average: 34.24
TsensorA - Current:29.81	Average: 35.12
TsensorA - Current:29.25	Average: 35.90
TsensorA - Current:28.87	Average: 36.53
TsensorA - Current:28.56	Average: 36.59
TsensorA - Current:28.25	Average: 36.27
TsensorA - Current:28.06	Average: 35.85
TsensorA - Current:27.87	Average: 35.50
TsensorA - Current:27.69	Average: 35.19
TsensorA - Current:27.56	Average: 34.92
TsensorA - Current:27.44	Average: 34.71
TsensorA - Current:27.31	Average: 34.52
TsensorA - Current:27.25	Average: 34.35
TsensorA - Current:27.19	Average: 34.22
TsensorA - Current:27.06	Average: 34.09
TsensorA - Current:27.00	Average: 33.98
TsensorA - Current:26.94	Average: 33.88
TsensorA - Current:26.94	Average: 33.80
TsensorA - Current:26.87	Average: 33.72
TsensorA - Current:26.81	Average: 33.66
TsensorA - Current:26.81	Average: 33.61
TsensorA - Current:26.75	Average: 33.56
TsensorA - Current:26.75	Average: 33.51

Вот код:

#define ONE_WIRE_BUS 21               // назначаем пин для шины OneWire и датчиков температуры
#define TIME_REFRESH 2000             // Задаем время обновления показаний
#define BUFFER_SIZE 5                 // Число итераций для усреднения, чем выше, тем больше инерционность вывода показаний
float tempSensorA;                    // Переменная температуры с датчика A
float tempABuffer[BUFFER_SIZE];       // Буфер с показаниями датчика A для усреднения
boolean flagAveraging = true;         // Указатель - надо ли усреднять выводимые показания

// Подключаем библиотеку Dallas
#include <OneWire.h>
#include <DallasTemperature.h>
// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature sensors(&oneWire);


void setup() 
{
  Serial.begin(9600);     
  Serial.println("Setup...");
  // Start up the Dallas Temperature library
  sensors.begin(); // IC Default 9 bit. If you have troubles consider upping it 12. Ups the delay giving the IC more time to process the temperature measurement
  Serial.print("Now Averaging is ");
  flagAveraging?Serial.println("TRUE"):Serial.println("FALSE");
  Serial.println("... end");
}


void loop() 
{ 
  sensorTempRead();  // Опрос датчиков температуры
  delay (TIME_REFRESH);
}


// Опрос датчиков температуры
void sensorTempRead()
{   
//  Serial.println("Reading sensors...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  tempSensorA = sensors.getTempCByIndex(1);  // Читаем второй датчик и записываем в последний элемент массива

  Serial.print("TsensorA       Current: ");
  Serial.print(tempSensorA);

  // *** блок усреднения показаний для устранения скачков
  if (flagAveraging)
  {
    // сдвинули все элементы массива влево, при этом потеряли первый элемент
    for(byte i = 0; i < BUFFER_SIZE - 1; i++) tempABuffer[i] = tempABuffer[i + 1];
    // на место последнего элемента записали текущие показания датчика
    tempABuffer[BUFFER_SIZE - 1] = tempSensorA;
    // суммируем показания
    static float sumA = 0;
    for(byte i = 0; i < BUFFER_SIZE; i++) sumA += tempABuffer[i];
    // вычисляем среднее
    sumA /= BUFFER_SIZE;    // Аналогично выражению sum = sum/BUFFER_SIZE
    tempSensorA = sumA;     // Перезаписываем текущее показание усредненным значением

    Serial.print("\t");
    Serial.print("Average: ");
    Serial.print(tempSensorA);
  }
  // *** конец блока усреднения

  Serial.println();
}

 

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

косяк найден :)

Вместо 

static float sumA = 0;

Надо 

float sumA = 0;

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Похоже что на вашей   ATtiny13 памяти вагон и ёё некуда девать, и  RAM и FLASH

http://arduino.ru/forum/proekty/dosvetka-v-teplitse#comment-49692

http://arduino.ru/forum/proekty/dosvetka-v-teplitse#comment-49917

Unreturned
Offline
Зарегистрирован: 04.05.2013

Hi уважаемый All

стандартная проблема - новичок.

девайс рулит скоростью движка шимом при помощи двух клавиш, плюс сохраняет текущее значение в еепром при отключении питания.

немогу понять, как пофиксить багу - при старте девайса предидущие значения берутся из еепрома, например 20% шима, и при уменьшении кнопкой до нуля, значения прыгают опять до этой цифры.







#include <EEPROM.h>                     

byte eep,B1,B2=0;                       
int pwm=0;                             
unsigned long time,timeB1,timeB2;

void setup()
{
     pinMode(0,OUTPUT);
}
void loop()
{
     pwm=min(pwm,255);          //ограничиваем диапазон pwm от 0 до 255
     pwm=max(pwm,0);
     time=millis();             //запускаем таймер и очевидные проверки,
     eep=EEPROM.read(0);        //проверить, запустилисть мы с нуля или нет
     if(millis()-time<50&&pwm==0)
   {
     if(eep<=180)                //если у нас шим был больше 180, то сбрасываем в базовые значения
     pwm=eep;
   }
     
  
     B1=digitalRead(3);          //кнопки
     B2=digitalRead(4);

     if(B1==HIGH)               //определяем нажатие клавиш, 50мс для антидребезга и +1 для счётчика
  {
       if (millis()-timeB1>50)
      {
       timeB1=millis();
       pwm++;
      }
  }
 
    if(B2==HIGH)                //определяем нажатие клавиш...      
  {
       if (millis()-timeB2>50)
     {
        timeB2=millis();
        pwm--;
     }
  }
     
     analogWrite(0, pwm);      //пишем значение шим

     if (digitalRead(2)==LOW)  //определяем есть ли напряжение до стабилизатора.
     {                         //(на тиньке висит толстый кондёр, если с блока
       EEPROM.write(0,pwm);    //питания пропадёт напруга - пишем текущее значение в еепром)
       delay(500);             //ну это буду подбирать в зависимости от толщины кондёра
     }
 }

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а можете тоже самое словами описать? просто интересно то что вы написали соответствует тому что вы хотели написать

просто коментами рядом с кодом

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

замени int pwm=0; на byte pwm=0; и выкинь min и max

А код - он да, немного не соответствует ТЗ :)

Unreturned
Offline
Зарегистрирован: 04.05.2013

ну так то я изначально попробовал, но если лишнее выкинуть и оставить только шим и две кнопки, то при достижения максимума переменная сваливается в ноль.

EEPROM.read похоже возвращает значение именно в byte, если ограничение max сделать равным 1 , то всё работает,но мне нужен 0% шим

 

Tomasina пишет:

А код - он да, немного не соответствует ТЗ :)

повторюсь - я не волшебник...

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

ячейка EEPROM имеет размерность byte, т.е. ты пытаешься впихнуть 65535 (int) в 255 (byte)   :)  При этом вполне возможно, что ячейка или обнуляется, или затрагивает соседние. А в следующей строчке тут же читаеся из EEPROM это непредсказуемое значение.

А по коду у тебя и должно при превышении максимума сваливаться в ноль, потому что никаких ограничений не задано.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

вот так немного лучше



#include <EEPROM.h>                     

byte eep,B1,B2=0;                       
byte pwm=0;                             
unsigned long time,timeB1,timeB2;

void setup()
{
  pinMode(0,OUTPUT);
}
void loop()
{
  time=millis();             //запускаем таймер и очевидные проверки,
  eep=EEPROM.read(0);        //проверить, запустилисть мы с нуля или нет
  if(millis()-time<50 && pwm==0 && eep<=180){
    pwm=eep;
  }

  B1=digitalRead(3);          //кнопки
  B2=digitalRead(4);

  if(B1==HIGH)               //определяем нажатие клавиш, 50мс для антидребезга и +1 для счётчика
                             // ++++ кнопка по моему некорректно в некоторых случаях будет обрабатываться
  {
    if (millis()-timeB1>50)
    {
      timeB1=millis();
      if (pwm < 255){        //++++ это чтобы не переполнялся PWM и не переходил в ноль после 255
        pwm++;
      }
    }
  }

  if(B2==HIGH)                //определяем нажатие клавиш...      
  {
    if (millis()-timeB2>50)
    {
      timeB2=millis();
      if(pwm>0){
         pwm--;               //++++ чтобы не было скачка с 0 на 255
      }
    }
  }

  analogWrite(0, pwm);      //пишем значение шим

  if (digitalRead(2)==LOW)  //определяем есть ли напряжение до стабилизатора.
  {                         //(на тиньке висит толстый кондёр, если с блока
    EEPROM.write(0,pwm);    //питания пропадёт напруга - пишем текущее значение в еепром
    delay(500);             //ну это буду подбирать в зависимости от толщины кондёра
  }
}

и еще почитай

http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no...

Unreturned
Offline
Зарегистрирован: 04.05.2013

jeka_tm пишет:

вот так немного лучше





#include <EEPROM.h>                     

byte eep,B1,B2=0;                       
byte pwm=0;                             
unsigned long time,timeB1,timeB2;

void setup()
{
  pinMode(0,OUTPUT);
}
void loop()
{
  time=millis();             //запускаем таймер и очевидные проверки,
  eep=EEPROM.read(0);        //проверить, запустилисть мы с нуля или нет
  if(millis()-time<50 && pwm==0 && eep<=180){
    pwm=eep;
  }

  B1=digitalRead(3);          //кнопки
  B2=digitalRead(4);

  if(B1==HIGH)               //определяем нажатие клавиш, 50мс для антидребезга и +1 для счётчика
                             // ++++ кнопка по моему некорректно в некоторых случаях будет обрабатываться
  {
    if (millis()-timeB1>50)
    {
      timeB1=millis();
      if (pwm < 255){        //++++ это чтобы не переполнялся PWM и не переходил в ноль после 255
        pwm++;
      }
    }
  }

  if(B2==HIGH)                //определяем нажатие клавиш...      
  {
    if (millis()-timeB2>50)
    {
      timeB2=millis();
      if(pwm>0){
         pwm--;               //++++ чтобы не было скачка с 0 на 255
      }
    }
  }

  analogWrite(0, pwm);      //пишем значение шим

  if (digitalRead(2)==LOW)  //определяем есть ли напряжение до стабилизатора.
  {                         //(на тиньке висит толстый кондёр, если с блока
    EEPROM.write(0,pwm);    //питания пропадёт напруга - пишем текущее значение в еепром
    delay(500);             //ну это буду подбирать в зависимости от толщины кондёра
  }
}

и еще почитай

http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-no...

блин, теория и практика - разные вещи, я так уже пробовал, сейчас попробовал ещё раз, обнаружились грубые ошибки - компилятору не понравились переменные с заглавными буквами типа В1 и В2.

ну это я для сайта хотел код причесать

что происходит на практике без min и max: при зажатой кнопке В1 значение переменной byte pwm растёт до  255 и не останавливается, а сбрасывается до значения переменной eep.

при зажатой кнопке В2 значение уменьшается до 0 и сбрасывается до значения eep.

насчёт ссылочки про работу с кнопками - если бы я её не перелопатил, данный "код" не родился бы.

Unreturned
Offline
Зарегистрирован: 04.05.2013

Tomasina пишет:

никаких ограничений не задано.

кроме min и max как ограничения задать? поймите правильно, на форуме пишу, только когда уже отчаялся.

maksim
Offline
Зарегистрирован: 12.02.2012