MPLAB IDE v7.21

Pavel Prochazka.zde.cz hacesoft@mujmail.cz
Pondělí Říjen 24 18:42:25 CEST 2005


pridal jsem nastaveni registru ADCON a uz to funguje! :-) Moooc diky. 
Ale potom jsem cca 2 hodiny hledal v datasheetu proc tomu tak je. az 
jsem prisel na stranku 130 a tam je to prehledne napsano. A to jsem 
skousel nastavit hodotu 1 jako ze AN0 je digitalni a zbytek analog ale 
tak to nefungovalo. Podle tabulky jsou tam ruzne pracovni mody. Zase 
jsem o neco chytrejsi.

Pavel prochaka.zde.cz




Marek Pavlu napsal(a):

>Zdravim, 
>
>Tak tam zrovna sedi na RA0:3 A/D převodník :). 
>Takze si doi programu pred praci s I/O branou dejte toto: 
>
>ADCON1 = 6; 
>
>
>
>S pozdravem, 
>                Marek Pavlu 
>
>//  -----Original Message----- 
>//  From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz] On 
>//  Behalf Of Pavel Prochazka.zde.cz 
>//  Sent: Monday, October 24, 2005 9:13 AM 
>//  To: HW-news 
>//  Subject: Re: MPLAB IDE v7.21 
>//  
>//  Aha to me nenapadlo. Je to PIC16F877A v pouzdre PCLL44 
>//  
>//  Pavel Prochazka.zde.cz 
>//  
>//  
>//  
>//  Marek Pavlu napsal(a): 
>//  
>//  >Zdravim, 
>//  > 
>//  > 
>//  >No program vypada v poradku, ale myslim, ze jste zapomněl zminit, jaky 
>//  typ 
>//  >procesoru jste pouzil:). Totiž mnohe typy PIC mají na portech ruzne 
>//  další 
>//  >funkcni bloky a často jsou implicitne po startu zapnuty, takze 
>//  digitalni I/O 
>//  >brana se z nich teprve musí udelat. 
>//  > 
>//  >Trebas 16F628, 16F627, 12F675, ... 
>//  >Tohle je jen par typu, které maji nohy jako analogove komparatory nebo 
>//  A/D 
>//  >prevodník. Tak dejste vedet, jaky typ a urcite se něco vymysli:). 
>//  > 
>//  > 
>//  > 
>//  >//  #define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit)) 
>//  >//  static bit button @ PORTBIT(PORTA, 0); 
>//  > 
>//  >Tyhle dva radky jsou trosku nebo spis uplne mimo misu ANSI C:). 
>//  >Cele je to o tom, jak PICC pracuje s jednotlivym bitem na urovni 
>//  syntaxe, 
>//  >pricemz v ANSI C nemá "bit" co pohledavat:). 
>//  > 
>//  >Funguje to tak, ze mate nejakou sadu registru a chcete u konkretniho 
>//  >registru pouzivat paty bit. 
>//  > 
>//  >Tak kompiler si vezme adresu toho registru vzhledem k pocatku registru.
>
>//  Coz 
>//  >je ta magicka formule: 
>//  > 
>//  >(unsigned)(&adr) 
>//  > 
>//  >v prvnim radku. No ted kdyz to vynásobíte osmi, tak simuzete 
>//  představit, ze 
>//  >kompiler jako by chape pole registru jako bitove pole a ten nas registr
>
>//  >zacina nultym bitem prave na pozici udavane cislem: 
>//  > 
>//  >(unsigned)(&adr) 
>//  > 
>//  >Ted když chcete paty bit, tak k tomu prictete tu petku a kompiler 
>//  jakoby se 
>//  >posunul v bitove adresovatelne pameti na danou pozici daneho bitu. 
>//  > 
>//  >Ve skutecnosti to cele je jen konvence a kompiler takto nepracuje, to 
>//  je jen 
>//  >"jakasi" nazorna konstrukce v syntaxi PICC, aby tomu bylo lepe rozumet 
>//  a 
>//  > 
>//  > dalo se pouzivat i typ bit. 
>//  > 
>//  >Na urovni asm po kompilaci se pracuje primo s požadovaným registrem a 
>//  zadne 
>//  >posuny v bitove pameti se nerealizuji. Predpokladam, ze jednim z duvodu
>
>//  >pridani typu bit bylo zlepseni optimalizace kodu. 
>//  > 
>//  >Kdyz se bitove operace deji primo pomoci operaci and, or, xor, tak ne 
>//  vzdy 
>//  >to je pro slozite operace pro kompiler unosne. Treba pitome zapsani 
>//  nuly 
>//  >nebo jednicky jeste není velky problem a dobře se optimalizuje, ale 
>//  pokud 
>//  >hodlate v jednom kroku udelat několik bitovych operaci, tak se to bude 
>//  na 
>//  >jednom radku hemzit logickými funkcemi... 
>//  > 
>//  >Snad jsem to rekl srozumitelne :). 
>//  > 
>//  > 
>//  > 
>//  >S pozdravem, 
>//  >                Marek Pavlu 
>//  > 
>//  >// 
>//  >//  #define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit)) 
>//  >//  static bit button @ PORTBIT(PORTA, 0); 
>//  >//  #define time 1 
>//  >//  main(void) 
>//  >//  { 
>//  >//  unsigned i; 
>//  >//  unsigned char j; 
>//  >//  TRISA = 1; /* bit 0 jako vstup */ 
>//  >//  TRISB = 0; /* veschno ven */ 
>//  >//  j = 0; 
>//  >//  for(;;) { 
>//  >//      PORTB = 0x00; /* ->0 */ 
>//  >//      for(i = time ; --i ;) 
>//  >//      continue; 
>//  >//      PORTB = j; /* set out ->j */ 
>//  >//      for(i = time ; --i ;) 
>//  >//      continue; 
>//  >//      if(button == 1){ 
>//  >//      j++; 
>//  >//      } 
>//  >//  } 
>//  >//  } 
>//  >// 
>//  >//  Jedine cemu dokonale nerozumim jsou prvni dva radky, ten prvni me 
>//  nic 
>//  >//  nerika ale ten druhy je nejaka definice jednoho bitu na promennou. 
>//  >//  Puvodne jeste tam bylo jako prvni prikaz static ale to se me 
>//  nezdalo a 
>//  >//  tak jsem to umazl. Budu rad za kazdou pomoc... 
>//  >//  A jeste radky s prikazem for puvodne vypadali takto: for(i = 1600 ;
>
>//  --i 
>//  >//  ;) ale pro krokovani jsem to upravil. 
>//  >// 
>//  >//  Pavel Prochazka.zde.cz 
>//  >// 
>//  >// 
>//  >//  ** 
>//  >//  Pavel Prochazka.zde.cz napsal(a): 
>//  >// 
>//  >//  >Dobry den, 
>//  >//  >prave jsem stahnul MPLAB IDE v7.21 a HI-TECH PICC kompiler pro 
>//  cecko. 
>//  >//  >Nějaký příklad jsem už našel abych si mohl vyzkoušet jak to 
>//  všechno 
>//  >//  >funguje. Kod se přeloží, akorát jsem nepřišel na to jak přeložené 
>//  cecko 
>//  > 
>//  >//  >do asm zobrazit, jinak než že se podivám na hdd a prohlidnu si 
>//  >//  výsledek. 
>//  >//  >uvítal bych kdyby se preklad ukazal v MPLABu vedle kodu v cecku 
>//  abych 
>//  >//  >vedel jak co přeložil. 
>//  >//  >Po přeložení jsem si chtel  vyškoušet simulaci.  Kod bez problému 
>//  >//  >krokuji. Ale nemohu za boha přijít na to jak menit hodnoty na 
>//  potrech 
>//  >//  >IO. Aby program reagoval na podnety. A vubec celkove abych mel 
>//  přehled 
>//  >//  o 
>//  >//  >registrech a podobne. 
>//  >//  >Poradi nekdo? 
>//  >//  > 
>//  >//  > 
>//  >//  >Pavel Prochazka.zde.cz 
>//  >//  > 
>//  >//  > 
>//  >//  >_______________________________________________ 
>//  >//  >HW-list mailing list  -  sponsored by www.HW.cz 
>//  >//  >Hw-list@list.hw.cz 
>//  >//  >http://list.hw.cz/mailman/listinfo/hw-list 
>//  >//  > 
>//  >//  > 
>//  >//  > 
>//  >//  > 
>//  >//  > 
>//  >//  > 
>//  >//  > 
>//  >//  _______________________________________________ 
>//  >//  HW-list mailing list  -  sponsored by www.HW.cz 
>//  >//  Hw-list@list.hw.cz 
>//  >//  http://list.hw.cz/mailman/listinfo/hw-list 
>//  > 
>//  > 
>//  > 
>//  >  _____ 
>//  > 
>//  >avast! Antivirus <http://www.avast.com>  : Odchozi zprava cista. 
>//  > 
>//  > 
>//  >Virova databaze (VPS): 0542-5, 21.10.2005 
>//  >Testovano: 24.10.2005 0:34:27 
>//  >avast! - copyright (c) 2000-2003 ALWIL Software. 
>//  > 
>//  > 
>//  > 
>//  >_______________________________________________ 
>//  >HW-list mailing list  -  sponsored by www.HW.cz 
>//  >Hw-list@list.hw.cz 
>//  >http://list.hw.cz/mailman/listinfo/hw-list 
>//  > 
>//  > 
>//  > 
>//  > 
>//  > 
>//  > 
>//  > 
>//  _______________________________________________ 
>//  HW-list mailing list  -  sponsored by www.HW.cz 
>//  Hw-list@list.hw.cz 
>//  http://list.hw.cz/mailman/listinfo/hw-list 
>
>
>
>  _____  
>
>avast! Antivirus <http://www.avast.com>  : Odchozi zprava cista. 
>
>
>Virova databaze (VPS): 0543-0, 24.10.2005
>Testovano: 24.10.2005 15:15:32
>avast! - copyright (c) 2000-2003 ALWIL Software.
>
>
>
>_______________________________________________
>HW-list mailing list  -  sponsored by www.HW.cz
>Hw-list@list.hw.cz
>http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
>
>
>  
>



Další informace o konferenci Hw-list