Microchip-C18 x htsoft-C18

Michal HW michalgregor@centrum.cz
Středa Listopad 1 16:46:17 CET 2006


Jsem zvykly na bity z asm. Na preklad bitovych promennych se podivam a 
zkusim to porovnat z unsigned char

Libi se mi tento zapis u HT.C18: static volatile bit Tlacitko1 @ 
PORTBIT(PORTB, 4);  Nebo treba GIE=0. (M.C18 - INTCONbits.GIE=0)

Mam pole structur v externi pameti - 1024 polozek. Je tam 12 bitovych 
promennych. Kdyz je prepisu na unsigned char tak to hodi navic 10KB. Je ale 
fakt, ze tam jeste misto mam. Popremyslim nad tim.

Chybne pole structur. Menu v BC funguje, ale M.C18 hlasi chyby.  (Moc jsem 
si s tim nehral.)
/*---------------------------------------------------------*/
//Definice structury

typedef struct {
 far u08 *p_Text;  //Text na prvni radek (v BC far nedavam)
 void (*Vypis)(); //Vypis hodnoty na druhy radek
 void (*Edit)(); //Tato funkce spusti editaci
 u08 Menu; //číslo nadřazeného menu
  u08 Pozice //číslo řádku v nadřazeném menu
  u08 Cas_Obnov; //Doba obnovovaní 0=není

} MENU;

/*---------------------------------------------------------*/
// Texty pro menu

GLOBAL const MENU Menu_Obsah [8][23]= {

 /*---------------------------------------------------------*/
 // Prazdné menu - číslo 0

 {
  {"",Prazdna_Funkce,Prazdna_Funkce,0,0,0}
 },

 /*---------------------------------------------------------*/
 // Hlavní menu - číslo 1

 {
  {"Databaze",Prazdna_Funkce,Databaze_Edit,0,0,0},
  {"Mereni",Mereni_Vypis,Mereni_Edit,0,0,0},
  {"Verze programu",Menu_Verze_Vypis,Prazdna_Funkce,0,0,0},
  {"Stav systemu",Prazdna_Funkce,Menu_2,0,0,0},
  {"Konfigurace systemu",Prazdna_Funkce,Menu_3,0,0,0},
  {"Konfigurace site",Prazdna_Funkce,Menu_4,0,0,0},
  {"Tabulka udalosti",Prazdna_Funkce,Menu_5,0,0,0},
  {"",Prazdna_Funkce,Prazdna_Funkce,0,0,0}
 },
 /*---------------------------------------------------------*/
 // Servisní menu - číslo 2
   {
    ....
    }
atd....
}

Co se tyce vetsiho procesoru mam 18F8622 64KB FLASH, pak je jeste 18F8722 
ale ten ma pouze vetsi FLASH - 128KB.
Dnes odpoledne jsem koncil na techto cislech:

FLASH - 96%
RAM - 80%
External SRAM 70% (128KB)
 Nic optimistickeho

Michal Gregor


----- Original Message ----- 
From: "Marek Pavlu" <pavlu@HWserver.cz>
To: "'HW-news'" <hw-list@list.hw.cz>
Sent: Wednesday, November 01, 2006 4:15 PM
Subject: RE: Microchip-C18 x htsoft-C18


Zdravim,

No nevim, ukazte ten kus kodu, ktery nechodi, protoze ja tu s polem struktur
potize nemam a ani studentska verze nemela...

Zas tak moc pameti bit snad neusetri ne?
Navic kdyz si predstavim ty konstrukce, ktere nekde v pameti ukladaji jeden
bit a potom s nim pracuji alespon tak, jak to resi PICC18, tak to zase setri
jen pamet dat zato pamet programu uz moc ne ve srovnani s typem unsigned
char a manmipulaci s nim jako porovnavani/testovani atd...

Osobne takova rozsireni nepouzivam ani kdyz jsou takto dostupna, protoze
budu to zase ja sam, koho to placne rakoskou pres prestiky, kdyz kousek kodu
budu chtit pouzit na jinem procesoru nebo jinem kompileru prave pri prechodu
PICC18 a C18 nebo jinam...

To toho vazne delate obrovske serie, ze se Vam vyplati takto ztracet vlastni
cas místo uziti vetsiho PIC? Bez ironie, jen zvedavost:).

S pozdravem,
Marek Pavlu

//  -----Original Message-----
//  From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz] On
//  Behalf Of Michal HW
//  Sent: Wednesday, November 01, 2006 9:42 AM
//  To: HW-news
//  Subject: Re: Microchip-C18 x htsoft-C18
//
//  Asi jsem to spatne napsal. Ten bit mne netrapi, ale spoustu veci
//  ulehcuje,
//  setri pamet, kratsi kod... V BC to mam takto: typedef unsigned char bit;
//
//  Modifikator near. Mel by u obou kompilatoru ulozit promennou do pameti
//  acces, ktera ma trosku rychlejsi pristup. Ale u Mic. C18 mi tam hlasil
//  chybu.
//
//  Co mi ale vadi je pole structur, predpokladam ze to v norme je. S tim si
//  C18
//  od Microchipu
//  neporadila. Zatim jsem dalsi pokusy odlozil, takze nevim kde je chyba.
//
//  Ale je videt jedna vec, i kdyz je C normovano kazdy kompilator si dela
//  co
//  chce a spousta veci lze implementovat ruznymi zpusoby.
//
//  Michal
//
//
//
//
//  ----- Original Message -----
//  From: "Marek Pavlu" <pavlu@HWserver.cz>
//  To: "'HW-news'" <hw-list@list.hw.cz>
//  Sent: Tuesday, October 31, 2006 3:23 PM
//  Subject: RE: Microchip-C18 x htsoft-C18
//
//
//  Zdravim,
//
//  Sorry, ale vycitat full ANSI C kompileru, ze neumi datovy typ bit je
//  docela
//  zcestne, ne???
//
//  Dale potom near, far a dalsi modifikatory thoto druhu jsou silne
//  implementacne zaavisle, netusim tedy, jak chcete na teto urovni
//  prechazet
//  mezi ruznymi cilovymi platformami???
//
//  Cimzto bych doporucil se podivat na normu ANSI C a zjistite, ze prave v
//  ohledu na datovy typ bit je C18 vice ANSI C nez PICC18...
//
//  Dale pak jak zavadite v BC datovy typ bit by mne vazne docela zajimalo,
//  ja
//  si to predstavit neumim:(...
//
//  Ale trebas jsem vedle jak ta jedle, nejsu kovany informatik, ale i tak
//  pochybuji, ze se pletu az tak seredne:).
//
//  S pozdravem,
//  Marek Pavlu
//
//  //  -----Original Message-----
//  //  From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz]
//  On
//  //  Behalf Of Michal HW
//  //  Sent: Tuesday, October 31, 2006 12:44 PM
//  //  To: HW-News
//  //  Subject: Microchip-C18 x htsoft-C18
//  //
//  //  Pokousim se porovnat kompilatory. Oba dva maji napsano "full ANSI
//  C...".
//  //  Mam odladeny soft na PC - BC++ . (70 000 radku) Je to psano s
//  ohledem na
//  //  PIC
//  //  procesory.
//  //
//  //  Ht-Soft se trochu hadal, ale prelozil vse. Zatim ale program nechce
//  //  fungovat, nekam se zabiha. (Drobny detail :-))) )
//  //  Omezeni je u promennych v externi pameti. Napriklad nelze napsat
//  //  Structura.Bit_Pole=1 nebo ++Structura.Pocet. Taky je nestastne
//  vyresen
//  //  pristup do externi pameti - u zapisu se vzdy inicializuje TBLPTR i
//  kdyz
//  //  zapisuji do promennych za lezicich v pameti za sebou.
//  //
//  //  Microchip-C18 si neporadil s polem structur. Mam jich tam nekolik,
//  takze
//  //  je
//  //  to o nicem. Musel jsem taky vymazat z prommennych "near".
//  //  Dale nezna typ promenne bit, takze misto TMR1IF=1 musite psat
//  //  PIR1bits.TMR1IF=1. Taky jsem zatim neprisel na to jak zapnout asm
//  vypis.
//  //
//  //  Zatim tedy vysledek nic moc. Potrebuji odladit vse na PC a co s
//  //  nejmensimi
//  //  upravami prelozit do PICu, protoze ICDII je strasne pomala - u
//  velkych
//  //  procesoru je tak akorat  vhodne na ladeni drobnych kosmetickych
//  uprav.
//  //
//  //  Obe verze kompilatoru jsou posldniho data
//  //
//  //  Michal Gregor 




Další informace o konferenci Hw-list