Малко като статия в "Направи сам" ще се получи, но поне има шанс да спестя
на някого безсмисленото лутане, през което минах аз. Изгубих си няколко
дни с грешни схеми и тъпо написани ръководства. Давам краен работещ
вариант като база за по-сложни разработки.
Та, от 20-тна години произвеждат едни благинки, наречени "едночипови
микрокомпютри", или "микроконтролери".
Крайна цел на упражнението - работещо устройство за под 10 лева, с разпространени чипове.
Има ги в почти всеки магазин за електроника. Лично на мен ми трябва един
таймер - да ми развърта вентилатор. След захранване - да държи реленце за
минута или повече. Следваща задачка ще е да обработва температурата от
датчик SMT. По-лесно ми е с контролер, отколкото да проектирам чиста хардуерия.
Важно за мен условие е - просто като боднеш чипа на захранване и да работи
. Без кварцове, ресет вериги, pull-up матрици и прочее. Единствено в моя
случай трябва да се помисли за транзисторче, осигуряващо управление на
релето. Много далеч съм от тежката артилерия на Спарки, но и целта ми е
друга.
Конкретната серия, на която се спрях е Attiny26 - 16PU.
26L серията като вариант работи от 2,7 до 5,5 волта.
Kъм 6 лева на магазина. Няма да минавам през обзор на алтернативите, всеки
производител има място под слънцето, просто това е моят избор. Осигурява
горните ми изисквания.
1. Хардуерия
Програматор. Сглобява се за под час, цялата схемотяхника се свежда до 4
резистора от 330 ома и куплунзи. Става за почти всички серии на Atmel,
които поддържат SPI. Трябва да има паралелен порт на компа.
Платката на програматора може да се ползва и за приложението, просто се
изважда връзката към паралелния порт. Като приключиш с писането на флаша -
програматорът пуска ресет веригата и контролерът започва изпълнение на
кода. С други думи - след записването веднага тръгва да работи.
Тук е дадено свързването с паралелния. Първия линк е по-чист, но е
пропуснато захранването на чипа, докато го програмираш. Аз го извадих от
5-те волта на захранването на компа. Трябва бушонче, защото 5-те волта на
компа дават едни 20 ампера и нагоре!
http://www.scienceprog.com/simplest-...ega-programmer
http://elecrom.wordpress.com/2007/10...vr-programmer/
2. Писане по флаша
Софта на програматора - http://www.lancos.com/ppwin95.html
Иска си калибрация първия път, сетват му се настройки на setup -> interface setup.

В главното меню се казва с какъв контролер работим (горе в дясно).

Това е. Може да работи директно с компилирани hex файлове.
3. Компилатор.
http://sourceforge.net/projects/wina...nAVR/20100110/
Инсталира се, в папката му се намира директория sample. Посоченият zip е мой
пример с настройки...
sample.zip
съдържа файлове с настройки за съотв. контролер Attiny26. След replace на
файловете в директория sample - сме готови за компилация. Оставих
компилираните hex файлове, за да може да се тества и преди компилация.
Посоченото приложение прецъква пин 20 на контролера, малък светодиод и
резистор 2 килоома визуализират резултата. Компилира се след написване на команда
make
в директорията sample.
Резултатът изглежда така:
Гледам, че дори има един eлементарен warning 
Важно! След инсталиране на WinAVR иска ресет
на Windows, за да прихване системните променливи.
В същата папка се намира резултатният hex файл, отваря се с PonyProg, след
флашкане - програматорът пуска ресета и програмата започва да работи веднага.
Програмирането не е проста работа, но кода за прости неща е елементарен.
test.c
OSCCAL трябва да се провери допълнително - дали е пуснат правилно вътрешния RC осцилатор.
Явно не е сетнат както трябва, и вътрешният генератор работи на няколко пъти по-ниска честота от
максималната.
Приложението дърпа към 5% от 2-та килобайта на флаша.
След първоначалната инвестиция на време и обучение - решаването на разни
проблеми с електрики из къщи става с писане на кодец, купуване на чип за 6
лева, запояване на захранване и управляване периферия - и работи!
Посоченото чипче има и няколко аналогови 10 битови входа, както и аналогови PWM изходи.
Kaкто и вграден EEPROM.
Става за почти всичко за управление из къщи. Подозирам, че има ресурс да управлява дори
автоматична пералня.
на някого безсмисленото лутане, през което минах аз. Изгубих си няколко
дни с грешни схеми и тъпо написани ръководства. Давам краен работещ
вариант като база за по-сложни разработки.
Та, от 20-тна години произвеждат едни благинки, наречени "едночипови
микрокомпютри", или "микроконтролери".
Крайна цел на упражнението - работещо устройство за под 10 лева, с разпространени чипове.
Има ги в почти всеки магазин за електроника. Лично на мен ми трябва един
таймер - да ми развърта вентилатор. След захранване - да държи реленце за
минута или повече. Следваща задачка ще е да обработва температурата от
датчик SMT. По-лесно ми е с контролер, отколкото да проектирам чиста хардуерия.
Важно за мен условие е - просто като боднеш чипа на захранване и да работи
. Без кварцове, ресет вериги, pull-up матрици и прочее. Единствено в моя
случай трябва да се помисли за транзисторче, осигуряващо управление на
релето. Много далеч съм от тежката артилерия на Спарки, но и целта ми е
друга.
Конкретната серия, на която се спрях е Attiny26 - 16PU.
26L серията като вариант работи от 2,7 до 5,5 волта.
Kъм 6 лева на магазина. Няма да минавам през обзор на алтернативите, всеки
производител има място под слънцето, просто това е моят избор. Осигурява
горните ми изисквания.
1. Хардуерия
Програматор. Сглобява се за под час, цялата схемотяхника се свежда до 4
резистора от 330 ома и куплунзи. Става за почти всички серии на Atmel,
които поддържат SPI. Трябва да има паралелен порт на компа.
Платката на програматора може да се ползва и за приложението, просто се
изважда връзката към паралелния порт. Като приключиш с писането на флаша -
програматорът пуска ресет веригата и контролерът започва изпълнение на
кода. С други думи - след записването веднага тръгва да работи.
Тук е дадено свързването с паралелния. Първия линк е по-чист, но е
пропуснато захранването на чипа, докато го програмираш. Аз го извадих от
5-те волта на захранването на компа. Трябва бушонче, защото 5-те волта на
компа дават едни 20 ампера и нагоре!
http://www.scienceprog.com/simplest-...ega-programmer
http://elecrom.wordpress.com/2007/10...vr-programmer/
2. Писане по флаша
Софта на програматора - http://www.lancos.com/ppwin95.html
Иска си калибрация първия път, сетват му се настройки на setup -> interface setup.
В главното меню се казва с какъв контролер работим (горе в дясно).
Това е. Може да работи директно с компилирани hex файлове.
3. Компилатор.
http://sourceforge.net/projects/wina...nAVR/20100110/
Инсталира се, в папката му се намира директория sample. Посоченият zip е мой
пример с настройки...
sample.zip
съдържа файлове с настройки за съотв. контролер Attiny26. След replace на
файловете в директория sample - сме готови за компилация. Оставих
компилираните hex файлове, за да може да се тества и преди компилация.
Посоченото приложение прецъква пин 20 на контролера, малък светодиод и
резистор 2 килоома визуализират резултата. Компилира се след написване на команда
make
в директорията sample.
Резултатът изглежда така:
Код:
-------- begin -------- avr-gcc (WinAVR 20100110) 4.3.3 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Compiling C: test.c avr-gcc -c -mmcu=attiny26 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./test.lst -std=gnu99 -MMD -MP -MF .dep/test.o.d test.c -o test.o Linking: test.elf avr-gcc -mmcu=attiny26 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=test.o -std=gnu99 -MMD -MP -MF .dep/test.elf.d test.o --output test.elf -Wl,-Map=test.map,--cref -lm Creating load file for Flash: test.hex avr-objcopy -O binary -R .eeprom -R .fuse -R .lock test.elf test.hex Creating load file for EEPROM: test.eep avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \ --change-section-lma .eeprom=0 --no-change-warnings -O binary test.elf test.eep || exit 0 Creating Extended Listing: test.lss avr-objdump -h -S -z test.elf > test.lss Creating Symbol Table: test.sym avr-nm -n test.elf > test.sym Size after: AVR Memory Usage ---------------- Device: attiny26 Program: 128 bytes (6.3% Full) (.text + .data + .bootloader) Data: 0 bytes (0.0% Full) (.data + .bss + .noinit) -------- end --------

Важно! След инсталиране на WinAVR иска ресет
на Windows, за да прихване системните променливи.
В същата папка се намира резултатният hex файл, отваря се с PonyProg, след
флашкане - програматорът пуска ресета и програмата започва да работи веднага.
Програмирането не е проста работа, но кода за прости неща е елементарен.
test.c
Код:
#include <avr/io.h> #include <util/delay.h> void main (void) { OSCCAL = 0xFF; //set PORTB for output DDRA = 0xFF; while (1) { _delay_ms(100); PORTA = 1; _delay_ms(100); PORTA = 0; } return 1; }
Явно не е сетнат както трябва, и вътрешният генератор работи на няколко пъти по-ниска честота от
максималната.
Приложението дърпа към 5% от 2-та килобайта на флаша.
След първоначалната инвестиция на време и обучение - решаването на разни
проблеми с електрики из къщи става с писане на кодец, купуване на чип за 6
лева, запояване на захранване и управляване периферия - и работи!
Посоченото чипче има и няколко аналогови 10 битови входа, както и аналогови PWM изходи.
Kaкто и вграден EEPROM.
Става за почти всичко за управление из къщи. Подозирам, че има ресурс да управлява дори
автоматична пералня.
Коментар