Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Програмиране на AtMega 16
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=4546
Страница 1 от 2

Автор:  xanssa [ Сря Юли 25, 2007 3:08 pm ]
Заглавие:  Програмиране на AtMega 16

Здравейте,
имам нужда от малко помощ. Въпросите, които ще питам може да ви се сторят глупави, но аз съм абсолютно начинаещ и моля за снизхождение.

Значи въпроса е следния: имам atmega16, имам програматор, имам и програма:
Код:
#include <mega16.h>  /* Вставить вместо этой строки текст файла mega16.h  содержащий описание регистров МК. Не забывайте указать какой МК применяете в свойствах проекта ! */

#define PA_OUT DDRA = 0xFF
/* Заменить везде в тексте программы

PA_OUT    на       DDRA = 0xFF           
*/



// ++++ функция инициализации МК ++++
void initialization(void){

PA_OUT;//сделать весь PORTA выходом

TCCR0 = 0x05;/* таймер включить считать, делая один отсчет каждые 1024 колебания на ножке XTAL1 */
}


// ++++  Главная функция  ++++
void main (void){

initialization(); /* Вызвать (== выполнить) функцию инициализации МК - т.е. настройки нужных нам устройств МК в соответствии с поставленой задачей */

//Бесконечный цикл
while (1){ //Делать всегда

PORTA++; //добавить 1 к значению в PORTA

while (!(TIFR&0x01));
// ждем установки флага переполнения timer0

TIFR = 0x01;
// очистить флаг переполнения timer0
         }; //цикл закончен


} //скобка для main()


програмата показва в двоичен вид, с НЕ светещи светодиоди 8 битно число започвайки с 0 и постоянно увеличение с едно.
Така, искам тази вече компилирана програма да я прехвърля в микроконтролера с помоща на PonyProg и после да включа микроконтролера в реална схема и да видя как мигат светодиодите.
Обаче в ръководството, от което чета пише, че ако желая да прехвърля програмата в реален микроконтролер то трябва:
Цитат:
Если вы захотите "залить" полученную прогу в реальный МК вам понадобится запрограммировать фьюзы под кварц на 4 МГц по ДШ.

Какво означава това? И как да го направя?
И втория ми въпрос е може ли да ми кажете ако успея да прехвърля програмката как да си свържя микроконтролера за да видя в действителност как работи.
Благодаря предварително.

Автор:  stanleyhacker [ Сря Юли 25, 2007 5:28 pm ]
Заглавие: 

Теглиш дейташит, търсиш за fuse bits. Гледаш кои отговарят за тактов генератор, и др. неща. Изчети ЦЕЛИЯ дейташит и вярвам че ще са ти ясни много неща.

Автор:  xanssa [ Пет Авг 03, 2007 3:24 pm ]
Заглавие: 

stanleyhacker написа:
Теглиш дейташит, търсиш за fuse bits. Гледаш кои отговарят за тактов генератор, и др. неща. Изчети ЦЕЛИЯ дейташит и вярвам че ще са ти ясни много неща.


еми изтеглих го, едва ли ще го прочета целия - 357 страници....намерих много fuse bits и продължавам да си блъскам главата, а ако някой има желание да помогне малко повече ще бъда много благодарен..

Автор:  ДедоБоре [ Пет Авг 03, 2007 3:33 pm ]
Заглавие: 

дори не става дума да изчетеш ЕДИН път ЦЕЛИЯ документ. ще трябва да го четеш няколко пъти
микроконтролерите не са като кафеварките или пералните машини

прочети главите за фюсовете и вътрешния осцилатор (най-малкото)
и направи точно това, което е написано :roll:

Автор:  Predator_MF [ Съб Авг 04, 2007 12:07 pm ]
Заглавие: 

Аз мисля, че човека не знае за процеса "компилиране" и какво точно да хвърли в процесора. Ако съм прав - теглиш някой компилатор/среда за AVR C, (някой друг ще каже коя, че не съм запознат с Аtmel-ските среди много), правиш един проект с този сорс който имаш, компилираш и изхода от компилацията (binary или hex файл) "прогаряш" в чипа

Автор:  ДедоБоре [ Съб Авг 04, 2007 1:05 pm ]
Заглавие: 

ти па го изкара просто кат фасул (слагаш боба - вариш - ядеш) :yawinkle:

препоръчителна атмелска среда е AVR-studio.
безплатна, дърпа се от сайта на атмел. http://atmel.com/dyn/products/tools_card.asp?tool_id=2725
копилираш си проекта за конкретния процерор.

обаче как студиото ще проработи с МК програматора ? :-k

Автор:  woody [ Съб Авг 04, 2007 1:26 pm ]
Заглавие: 

Добър фасул всъщност се готви доста трудно. :lol:

Автор:  Ки4о [ Съб Авг 04, 2007 1:30 pm ]
Заглавие: 

Дедо Боре,много правилно си му посочил страницата.На страницата дето той я е посочил,ако се хване да я прочете цялата ще види по-надолу написано следното :

Цитат:
Като управляващ софтуер за компютъра може да се използва PonyProg или ICProg


Той младежа има програматор и вече му е посочен софта.На страницата има и указания .Така че има всичкото нужно инфо и май само трябва да седне да попрочете.

Автор:  Wise [ Съб Авг 04, 2007 1:37 pm ]
Заглавие: 

Програмата е на C, та не му ли трябва и нещо като WinAVR - GCC?
Аз работя само на асемблер и не знам за С-то какво точно още трябва.
Докара ли го до .hex файла - ще го програмира някак, вероятно де..... :)

Автор:  xanssa [ Съб Авг 04, 2007 4:31 pm ]
Заглавие: 

Wise написа:
Програмата е на C, та не му ли трябва и нещо като WinAVR - GCC?
Аз работя само на асемблер и не знам за С-то какво точно още трябва.
Докара ли го до .hex файла - ще го програмира някак, вероятно де..... :)


Ама аз отдавна съм го докарал до .hex фаила, нали ви казах, че използвам CodeVisionAVR. Въпроса, е че там от където се уча пише, че ако реално искам да програмирам микроконтролер то ще трябва да запрограмирам фюзовете му (каквото и да значи) за кварц на 4MHz. Явно щом ми го казват че трябва да го направя отделно значи не е част от програмата.
Та въпроса ми е как се програмират фюзове и ако може поне за този случай да ми кажете по подробно как ще стане, аз един път като го направя вече ще мога по пътя на логиката и други задания да изпълнявам.... :roll:

Автор:  ДедоБоре [ Съб Авг 04, 2007 5:21 pm ]
Заглавие: 

в AVR/mega архитектурата има 4 вида памети, достъпни през програмния интерфейс: flash, eeprom, fuse и oscal.
първите 3 могат да се програмират, трият и четат независимо. oscal е само за четене.
само първите 2 вида памети са "видими" от процесора, при това по различен начин.
fuse контролират сетъпването на процесора преди reset (е, и след това)
oscal стойностите служат за точна настройка на честотата на вътрешния генератор (когато е разрешен от фюсовете).

за достъпа до всеки вид памет през програмния интерфейс се ползва различна команда.
програматора трябва да може да дава достъп до всички видове памет, ако е читав.
.hex файл може да се програмира (дупчи, гори, качва, залива и т.н.) в първите два вида.
много вероятно е фюсовете да се показват като чек-боксче за програматор с графичен интерфейс.
та там някъде трябва да има кутийка "internal oscilator 4MHz", която трябва да се чекне. но освен нея и други неща трябва също да се настроят, чети си конкретния дейташит кое какво значи.
ако ще гониш точни времена, oscal трябва да се пренесе нейде във видимата от процесора памет. за това няма общ подход, зависи от програматора.

Автор:  xanssa [ Съб Авг 04, 2007 6:21 pm ]
Заглавие: 

ДедоБоре написа:
.....много вероятно е фюсовете да се показват като чек-боксче за програматор с графичен интерфейс. та там някъде трябва да има кутийка "internal oscilator 4MHz"


Първо наистина благодаря за мнението.

Доколкото разбира щом за програмиране/прехвърляне на програмата използвам софтуера PonyProg значи тия чек-боксчета трябва да са някъде из менютата му? Правилно ли схващам?

Автор:  ДедоБоре [ Съб Авг 04, 2007 7:35 pm ]
Заглавие: 

да

Автор:  neutrino_V [ Съб Авг 04, 2007 11:10 pm ]
Заглавие: 

привет,
Първо - поздравление за избора на контролер :roll:
Чудесни "машинки" са :wink: , и доста отзивчиви, ако знаеш какво правиш разбира се
Четенето на дейташита няма да ти спестя, но малко насока спестява много мъка ако си начинаещ

Тук ми попадна един полезен материал относно бушоните в AVR контролера
:arrow: http://electrons.psychogenic.com/module ... OGuide.php
"4 CKSEL bits that specify the type of clock source"

Изобщо секцията за AVR на сайта изглежда полезна

А за PonyProg, FUSE битовете ще намериш в менюто Command -> Security and Configuration bits.. - иконката катинарче
Контролера ти от фабриката идва настроен на 1MHz вътрешен осцилатор. Ако е нов(непрограмиран) значи не му трябва външен кристал за да го програмираш. За такива елементарни задачки не ти трябва по-висока честота и външен кристал изобщо.
Ако все пак трябва, намери в дейташита каква конфигурация на CKSEL битовете отговаря на външния кристал и честотата.
За пример - ако искаш да настроиш контролера да работи на 4MHz с вътрешния му RC осцилатор, сложи отметки на CKSEL0, CKSEL1 и CKSEL3. CKSEL2 да е празно!
И гледай да не пипаш другите фюсове преди да си научил за какво служат :D (за да не се наложи да си купуваш нов :wink: )

дано съм помогнал поне малко, то тая материя се научава с много практика :lol: експериментирай

Автор:  neutrino_V [ Съб Авг 04, 2007 11:41 pm ]
Заглавие: 

Забравих нещо важно
Ако ще променяш нещо по Security and Configuration bits.. не забравяй първо да натиснеш Read за да не се загубят настройките на всички останали битове !!!

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/