Автор Тема: Започваме да се запознаваме с програмирането!  (Прочетена 43823 пъти)

Borislav

  • Administrator
  • *****
  • Публикации: 1010
    • Профил
    • http://robotics-bg.com
Започваме да се запознаваме с програмирането!
« Отговор #15 -: Февруари 19, 2008, 08:45:45 am »
Цитат на: "tar"
Нещо не разбрах,при "[WIinAVR]Make all"ли се качва програмата във контролера или после след компилацията по някакъв начин? :roll:


След компилиране, качваш *.hex-файла с програматора в микроконтролера! Това посредством PonyProg2000! :) Това е, поразрови се в личните си съобщения, бях ти го обяснявал преди време!
Роботиката не е хоби - тя е начин на живот!

zoro1

  • Global Moderator
  • *****
  • Публикации: 610
    • Профил
    • http://www.zoro1.com
Започваме да се запознаваме с програмирането!
« Отговор #16 -: Юли 01, 2008, 12:58:28 pm »
Тестова установка:
http://upload.robotics-bg.com/files/P1020818.JPG
Захранване -12/5 волта
http://upload.robotics-bg.com/files/P1020820.JPG
мигнатия свето диод
http://upload.robotics-bg.com/files/P1020822.JPG
е като качих интелския файл в атмегата -мига та се къса.
Добре ама не можах да го компилирм както е описано в поста.

PS
Платката е направена така че да може да се закачат сензори -светлинни  и бутонен тип към МК,ще я монтирам на шаси от пласмаса.или метал ,връзката между силовата част и "мозъка" ще е на куплунг.


...Великите нации  се държат като гангстери,а малките като проститутки...
И.Несторов
Skype:Zorro1430

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Започваме да се запознаваме с програмирането!
« Отговор #17 -: Юли 01, 2008, 08:45:27 pm »
Как компилираш: през AVR Studio или чрез make файл? През AVR Studio съм тествал и нещата вървят.
Ясен Паунски,  гр.София, 39 г.

zoro1

  • Global Moderator
  • *****
  • Публикации: 610
    • Профил
    • http://www.zoro1.com
Започваме да се запознаваме с програмирането!
« Отговор #18 -: Юли 01, 2008, 10:48:18 pm »
и с двете не става.слагам файла в нотепада както е описано и ми излизат грешки -около 100...
С АВР студиото изобщо не иска да компилира файла


Много се извинявам ама грешката си е моя.понеже в настройките съм дал да ми програмира директно файла/CODE V AVR/и съм сложил чисто нов но дефектен чип/те даже са два!!! ама рискове на он-лайн пазаруването от китай!!/
Сега всичко е наред.Дажв взех че си оправих и пони програматора...


...Великите нации  се държат като гангстери,а малките като проститутки...
И.Несторов
Skype:Zorro1430

cech

  • Новодошъл
  • *****
  • Публикации: 8
    • Профил
Започваме да се запознаваме с програмирането!
« Отговор #19 -: Декември 15, 2008, 10:46:16 pm »
във училище уча С++ но още не мога да различа С и С++.
на какъв взик се програмират микроконтролерите (С или С++).
копирах един от кодовете за мигащ светлодиод и го компилирах но ми дава грешка още при библиотеките.в началото ,при създаването на файла го давам "source file"
знам че въпросите ми могат да звучат тапо но съм нов в тази област и ми трябва помощ.
Благодаря!
михаил, пловдив, 18 години
http://www.erepublik.com/en/referrer/petr_cech (Който иска да влиза)

zbytsam

  • Заклет Роботостроител
  • *****
  • Публикации: 256
    • Профил
    • http://genadi.masoko.net
Започваме да се запознаваме с програмирането!
« Отговор #20 -: Февруари 06, 2009, 05:24:30 am »
ako във двете опции за изчакването зададем числата съответно 1 милисекунда и 4 милисекунди ще получим ли на практика такова премигване, че диода да намали светлината си драстично,без да премигва видимо и ако направим това може ли да се каже че сме направили ШИМ?
гр. София

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Започваме да се запознаваме с програмирането!
« Отговор #21 -: Април 03, 2009, 12:33:17 am »
Малко линкове за последните версии на:

AVR Studio 4.16 (build 628)  (126 MB, updated 2/09)
http://www.atmel.com/dyn/resources/prod_documents/AvrStudio416Setup.exe

и WinAVR December 6, 2008:
http://sourceforge.net/project/showfiles.php?group_id=68108&package_id=66543&release_id=645436
Ясен Паунски,  гр.София, 39 г.

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Започваме да се запознаваме с програмирането!
« Отговор #22 -: Април 09, 2009, 07:41:42 pm »
Не се бях изразил точно в темата която постнах. Tрябва ми синтаксисът за "if" (работа с датчици). Например:
if( (какво трябва да се напише тук за да се провери 1 или 0 на някой пин) ) {}
Иван Петров 16г
skype: slayer_kolyo

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Започваме да се запознаваме с програмирането!
« Отговор #23 -: Април 09, 2009, 11:30:14 pm »
Погледни този пост:
http://www.robotics-bg.com/forum/viewtopic.php?p=6240#6240
Всеки I/O порт на AVR има няколко регистъра през, които се управлява. Четенето става през PINX,  където X  е името на порта.
Примерно ако искаш  да провериш дали пин PD3 на Порт D  е във високо ниво:
if(PIND&(1<<PD3)){

     
}
Ясен Паунски,  гр.София, 39 г.

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Започваме да се запознаваме с програмирането!
« Отговор #24 -: Април 10, 2009, 11:21:36 am »
Направих го както ми каза, но не се получи. Ето програмата:
#include <avr/io.h>
#include <avr/delay.h>
#define F_CPU 4000000UL

   
int main(void)
{
   
DDRD=0xff;
DDRC=0x00;  
   
while (1) {

if (PINC&(1<<PC5))
{
PORTD|=_BV(PD1);
}
}
}


След като пусна захранването на схемата светодиодът свързан към D1 светва без да има сигнал (+5V) на пин C5 :? . Когато подавам сигнал към C5 нищо не се променя.
Къде може да е грешката?
Иван Петров 16г
skype: slayer_kolyo

yasko

  • Administrator
  • *****
  • Публикации: 484
    • Профил
Започваме да се запознаваме с програмирането!
« Отговор #25 -: Април 10, 2009, 12:16:12 pm »
В кода който си постнал, няма кой да загаси светодиода. Пробвай този код:

#include <avr/io.h>
#include <avr/delay.h>
#define F_CPU 4000000UL

   
int main(void)
{
   
     DDRD=0xff;
     DDRC=0x00;
   
  while (1) {

     if (PINC&_BV(PC5)){
          PORTD|=_BV(PD1); //пали светодиода ако PC5=1
     }
     else{
           PORTD&=~_BV(PD1); //гаси светодиода ако PC5=0
     }
   }
}


За тези които се чудят какво е _BV, това е вграден макрос. Дефиниране е по следния начин:
#define _BV(bit) (1 << (bit)) и следователно _BV(PC5) е еквиеалентно на (1<<PC5)
И накрая ако PC5 е оставан висящ във въздуха, няма гаранция какво ще бъде неговото входно състояние.
Ясен Паунски,  гр.София, 39 г.

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Започваме да се запознаваме с програмирането!
« Отговор #26 -: Април 10, 2009, 12:53:40 pm »
Пробвах и по този начин - пак същото :( . Но този път забелязах нещо: когато включа захранването диода светва, но когато подам сигнал на C5 - диода светва по-силно :?: и след като спра сигнала пак светва по-слабо. Значи реагира на сигнала ама неможе да изгасне напълно. Също така ми се струва че трепти когато няма сигнал.
Някакви идеи? :roll:
Иван Петров 16г
skype: slayer_kolyo

durankulakat

  • Бил знаел какво е Мехатроника!
  • *****
  • Публикации: 103
    • Профил
Започваме да се запознаваме с програмирането!
« Отговор #27 -: Април 10, 2009, 04:36:42 pm »
Благодарение на yasko успях да оправя схемата :clap: . Проблемът не е в програмата, а в това че когато C5 не е свързан никъде, се индуктират шумове и входа е в високо ниво. За да се премахнат, трябва да се сложи резистор към маса. Тогава входа е в ниско ниво и когато подам сигнал - светодиода светва :) .
Иван Петров 16г
skype: slayer_kolyo

bugybarabata

  • Новодошъл
  • *****
  • Публикации: 5
    • Профил
Започваме да се запознаваме с програмирането!
« Отговор #28 -: Август 13, 2009, 09:50:24 pm »
може те ли да ми кажете как да направя цикъл за редуване на 4 вита от PORTD на ATMEGA8 така че да се получипреместващ регисър
Антон Георгиев 21г.
Добрич
Поздрави

importante

  • Зомбиран Роботостроител
  • *****
  • Публикации: 178
    • Профил
Re: Започваме да се запознаваме с програмирането!
« Отговор #29 -: Март 21, 2015, 10:59:28 pm »
Заредих  програмата от началото с някой промени, защото моята Atmega8 е за 16MHz и си поиграх със времената за ''1'' и ''0'' на портовете, обаче на 10000ms мигането на светодиода не съответства на 1 секунда.Мига бързо, да не би да не съм настроил правилно честотата?И на 8 и на 16 еднакво мига
#include <avr/io.h>
   #include <avr/delay.h>
   #define F_CPU 16000000UL
   
   int main(void)           
   {
   
   DDRD = 0xff;           

        while (1) {             

PORTD = 0xff;

_delay_ms(1000); 

PORTD = 0x00; 

_delay_ms(1000);   

}     

   }     
Мартин Костадинов
Skype - Optixam