AVR GCC pomoc

Ondrej Pribula o.pribula@sh.cvut.cz
Pátek Duben 22 12:27:13 CEST 2005


Zdravim konferenciu,

rozhodol som sa trosku pohrat s AVR GCC, ked uz je to take popularne (a hlavne free ;-}}). Narazil som vsak na jednu vec, ktorej nerozumiem. Z manualnu a popisu som pochopil (mozno zle), ze pokial chcem pracovat s konstantami (datami) ulozenymi v programovej flashke, tak musim pouzivat specialnu kniznicu, resp. sadu prikazov z pgmspace.h . Nuz teda spravil som pokus. Zostavil som si jednoduchy program, ktory ma posielat na UART String. A to nasledovne cez nasledujuce funkcie:


   void PosliZnak(unsigned char c) {
   while (!(UCSRA & (1<<UDRE))); 
   UDR=c; }
   
void PosliString(char *str){
  while (*str){ 
  PosliZnak(*str);
  str++;
               } 
    } 

Podla teorie, ktoru som uviedol hore, by tieto funkcie mali pracovat iba s datami z RAM. Napisal som teda do MAINu obligatny prikaz :

   PosliString("Ahoj svet") ;

A cuduj sa svete, ono to skutocne posiela tento reatazec na UART. A to v tom pripade nechapem, kedy je teda nutne pristupovat k datam na flash cez specialnu kniznicu a kedy nie?? Ked toto spolahlivo funguje aj s RAMdatami aj s FLASH datami ???
Pytam sa preto, lebo by som nerad spravil osudnu chybu, ktoru si v tejto chvili mozno neuvedomujem...

Za pripomienky dakujem, prajem pekny zvysok dna.

   Ondrej Pribula



------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://list.hw.cz/pipermail/hw-list/attachments/20050422/de2be1b8/attachment-0001.htm 


Další informace o konferenci Hw-list