www.elektronik.si
Začetniški problem v C-ju pri AVR-ju
Pojdi na stran 1, 2, 3 ... 27, 28, 29  Naslednja  :||:
www.elektronik.si -> Osnove programiranja AVR-jev

Avtor: upornikKraj: Celje PrispevekObjavljeno: Tor Feb 05, 2008 2:06 pm    Naslov sporočila:  Začetniški problem v C-ju pri AVR-ju
----------------------------------------------------------------------------
Imam en začetniški problem. Hotel sem napisati en preprost testni programček v C-ju, pa mi prevajalnik vedno najde neko napako, ker nisem vključil nekatere knjižnice.
Torej, katere so tiste nujno potrebne knjižnice, ki jih moram na začetku vključiti za samo delovanje? Program sem napisal v AVR Studio 4 z vgrajenim WINAvr-jem.
Krmilnik je ATMega8515. Poskusil sem prevesti tudi nekaj Sample programčkov iz interneta, pa je tudi vedno neka napaka.
Aja, pa še to me zanima...kako vem v kateri vrstici je napaka pri omenjenem programskem okolju? Npr., poskusil sem klikniti na napako, ki se je izpisala in sem mislil, da se bo označila vrstica v kateri je omenjena napaka pa se ni.

Hvala za odgovor!

Avtor: Sokrat PrispevekObjavljeno: Tor Feb 05, 2008 2:44 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Nobena ni nujno potrebna, program lahko napises tudi brez njih.

Ce imas v svojem programu vkljucene funkcije, ki so deklarirane v dolocenem headerju (.h), pa je doticni header seveda potrebno vkljuciti (#include).

Avtor: DomeniusKraj: Medvode PrispevekObjavljeno: Tor Feb 05, 2008 5:02 pm    Naslov sporočila:  Re: Začetniški problem v C-ju pri AVR-ju
----------------------------------------------------------------------------
upornik je napisal/a:

Aja, pa še to me zanima...kako vem v kateri vrstici je napaka pri omenjenem programskem okolju? Npr., poskusil sem klikniti na napako, ki se je izpisala in sem mislil, da se bo označila vrstica v kateri je omenjena napaka pa se ni.

Če dvakrat klikneš na obvestilo za napako bi ti prevajalnik moral pokazati vrstico z napako.

Avtor: silvo_vKraj: Domžale PrispevekObjavljeno: Tor Feb 05, 2008 5:15 pm    Naslov sporočila:  
----------------------------------------------------------------------------
upornik,
navedi točen opis napake.
Tudi jaz sem imel v pri povezavi AVR Studia in WinAVR-ja težave, če sem imel podobne, ti bom lahko pomagal.
Meni je javljalo napako, da ne najde datoteke *.o.d. Problem sem rešil tako, da sem ročno ustvaril mapo, ne spominjam pa se natančno ali je bila to mapa default ali dep.

Lp, Silvo

Avtor: upornikKraj: Celje PrispevekObjavljeno: Tor Feb 05, 2008 8:24 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Koda:
Build started 5.2.2008 at 19:17:07
make: Makefile: No such file or directory
make: *** No rule to make target `Makefile'.  Stop.
Build failed with 2 errors and 0 warnings...

Tole mi napiše, ko prevedem...

Avtor: trotKraj: glej fogl PrispevekObjavljeno: Tor Feb 05, 2008 9:29 pm    Naslov sporočila:  
----------------------------------------------------------------------------
klik

Avtor: silvo_vKraj: Domžale PrispevekObjavljeno: Tor Feb 05, 2008 9:44 pm    Naslov sporočila:  
----------------------------------------------------------------------------
upornik,

očitno nimaš makefile datoteke.

AVR studio samodejno naredi makefile datoteko pri ustvarjanju novega projekta.

Postopek je opisan v help-u AVR studia pod AVR Studio, Project, AVR GCC Project, Introduction, Getting Started, Creating a new project.

Avtor: upornikKraj: Celje PrispevekObjavljeno: Sre Feb 06, 2008 12:38 am    Naslov sporočila:  
----------------------------------------------------------------------------
Sem ustvaril projekt po tem postopku, vendar je bil problem drugje. Pot do projekta je vsebovala besedo, v kateri je bila črka ž in je očitno zelo občutljiv na šumnike. Hvala za pomoč, verjetno vas bom še kaj vprašal, če se bo zalomilo Smile

Avtor: upornikKraj: Celje PrispevekObjavljeno: Sre Feb 06, 2008 3:18 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Sedaj sem naletel na en drug problem. Rad bi uporabljal funkcijo delay, pa ne vem kako jo vključiti v program. Na začetku programa sem vključil delay knjižnico z ukazom #include <delay.h>, pa me je prevajalnik opozoril, da ta datoteka ne obstaja.
Nato sem preiskal vse mape in podatke v njih, ki so se ustvarile ob instalaciji, pa nisem nikjer našel omenjene knjižnice. Zanima me, ali moram te knjižnice dobiti iz interneta ali kje drugje in jih namestiti v mapo trenutnega projekta, ali kako drugače?
Če je to tako, bi bil vesel za kakšen link do knjižnic.

Hvala za odgovor!

Avtor: dragoonKraj: Trojane PrispevekObjavljeno: Sre Feb 06, 2008 3:39 pm    Naslov sporočila:  
----------------------------------------------------------------------------
delay ssi lahko nardiš sam; primer:

void delay(char d)
{
char i;
for(i=0;i<d;i++)
}

lahko dodaš še kakšen nop, v programu pa samo kličeš delay(123).



A lahko priporočim codevision? Zraven so vse osnovne knjižnice, uporaben GUI, help, wizard,...
Zastonj do 2k, če pa rabiš met licenco za firmo pa ni tako draga. Za učenje se da "popravit" da dela vse... in pa prihrani veliko živcev.

Avtor: upornikKraj: Celje PrispevekObjavljeno: Sre Feb 06, 2008 4:24 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Mislim, da sem celo že imel instaliran CodeVision pred nekaj dnevi, bom poskusil spet. Kaj pa če bi iz CodeVision-a skopiro knjižnico v svoj project file bi delovalo?
Namreč, meni se AVRStudio4 okolje kar dopade...

Avtor: DomeniusKraj: Medvode PrispevekObjavljeno: Sre Feb 06, 2008 5:41 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Ravno pišem kratke primerčke kode s komentarji za na spletno stran - napisano je za AVR Studio + WinAVR. Tole je moj primer Blinky-ja - vidi se tudi kako je vključen delay.h. Upam da ti bo ratalo oživeti zadevo.
Koda:
/*****************************************************
Project : Blinky 01
Version :
Date    :
Author  :

Chip type           : ATmega8
Clock frequency     : 1,000000 MHz
Memory model        :
External SRAM size  :
Data Stack size     :

Comments:
Program ni nič posebnega - na portu c.5 nam
na vsake pol sekunde za enak čas vklopi/izklopi
ledico - program je namenjen "oživljanju"
mikrokontrolerja oz. povezave

*****************************************************/

#define F_CPU 1000000


#include <avr\io.h>
#include <util\delay.h>


int main(void)
{
   // PC5 je izhod
   DDRC = 0x20;

   // glavna zanka
   while(1)
   {
      // z masko postavi PC5 na 1
      PORTC |= 0x20;

      // počakaj pol sekunde
      _delay_ms(500);

      // z masko postavi PC5 na 0
      PORTC &= ~0x20;

      // počakaj pol sekunde
      _delay_ms(500);
   }
}

Avtor: upornikKraj: Celje PrispevekObjavljeno: Čet Feb 07, 2008 12:35 am    Naslov sporočila:  
----------------------------------------------------------------------------
Direktno sem skopiral tole kodo, le tisto vrstico kjer definiraš frekvenco sem izbrisal. Nato sem v Project Configuration nastavil tip ATMega8515 in frekvenco 4MHz. Program je začel delovati, vendar _delay_ms(500); traja cca. 3s.
Prevajalnik je vrnil eno opozorilo:
Koda:
c:/winavr-20071221/bin/../avr/include/util\delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"

Poleg tega se mi zdi pa čudno to, da je tale programček zasedel nekaj čez 40% pomnilnika.
Koda:
AVR Memory Usage
----------------
Device: atmega8515

Program:    3386 bytes (41.3% Full)
(.text + .data + .bootloader)

Data:          8 bytes (1.6% Full)
(.data + .bss + .noinit)


Build succeeded with 1 Warnings...

Avtor: silvo_vKraj: Domžale PrispevekObjavljeno: Čet Feb 07, 2008 2:17 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Verjetno je vzrok obeh problemov, ki si ju opisal, da nimaš vključene optimizacije.

Pod Project Configuration nastavi Optimization - Os, (s=size).

Lp

Avtor: upornikKraj: Celje PrispevekObjavljeno: Čet Feb 07, 2008 2:47 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Aha, sem vključil in je zdaj super. Omenjeni programček je zasedel le 138 Bajtov. Čas pa še vedno ni čisto realn. Sedaj traja 500ms okoli 2sekundi.
Je lahko razlog v tem, da je v knjižnici za delay definiran kristal 1MHz, sam pa uporabljam 4MHz? Takole izgleda:
Koda:

/** \file */
/** \defgroup util_delay <util/delay.h>: Convenience functions for busy-wait delay loops
    \code
    #define F_CPU 1000000UL  // 1 MHz
    //#define F_CPU 14.7456E6
    #include <util/delay.h>
    \endcode

Stran 1 od 29

Powered by phpBB © 2001,2002 phpBB Group