preklad z C do Bascom

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
apam
Příspěvky: 111
Registrován: 17 bře 2007, 00:00

preklad z C do Bascom

#1 Příspěvek od apam »

Dobry den, najde se zde dobrovolnik, který dokáže přeložit program pro atmega 32 napsany v avr c do kodu bascom, jde mi hlavne o pasaze tykajici se snimani hodnoty z adc a naslednem zobrazeni na glcd a ovladani glcd s radicem ks0108,
Nelze pouzit ovladani pomoci knihovny glcdks108.lib!!!
kdo si na to troufa tomu zaslu komplet v C

Cecko moc neumim a v bascomu se mi porad nedari vytvorit to same co dela puvodni program napsany v c ,lepe napsano neumim ovladat glcd s ks0108 jinym zpusobem jak pomoci glcdks108.lib a to zde neni mozne.
potrebuji to pro dalsi rozsireni programu coz v C u mne nehrozi.
Uživatelský avatar
apam
Příspěvky: 111
Registrován: 17 bře 2007, 00:00

#2 Příspěvek od apam »

preci to neni nemozne... je tu alespon nekdo kdo umi ovladat tento radic lcd jinak nez pomoci glcdks108.lib? staci aspon jak inicializovat, zobrazit a smazat pixel aby pri taktu megy32 16mhz vse fungovalo jak ma.
Návštěvník

#3 Příspěvek od Návštěvník »

Dyť si stáhni datašít, tam je všechno potřebné popsané.
Uživatelský avatar
apam
Příspěvky: 111
Registrován: 17 bře 2007, 00:00

#4 Příspěvek od apam »

kdybych vedel jak to napsat tak tu nezadam o pomoc.
Návštěvník

#5 Příspěvek od Návštěvník »

A co nevíš jak napsat? V datašítu je všechno popsané a jestli neumíš v Bascomu, tak nechápu proč to v něm má být.
Uživatelský avatar
apam
Příspěvky: 111
Registrován: 17 bře 2007, 00:00

#6 Příspěvek od apam »

jeste jsem se s tim nesetkal a dost dobre tomu nerozumim pac jsem nikde nenasel nic podobneho napsaneho v bascomu, takze nemam ani paru jak by to melo vypadat tak se tu snazim najit radu jak mam zacit nebo jestli to trebas uz nekdo neresil.
a co vyctu z toho datasheetu kdyz polovinu veci vidim poprve... ? bascom se ucim 2 mesice a vzhledem k tomu, ze jsem nikdy nic neprogramoval tak neni nic spatneho na tom ze se tu na to ptam ne, jak jinak se to mam asi naucit kdyz siroko daleko neznam nikoho kdo by se tomu venoval a mohl by mi s tim pomoct.
Uživatelský avatar
ujosvec
Příspěvky: 283
Registrován: 07 srp 2008, 00:00

#7 Příspěvek od ujosvec »

Jde taky o to jak je zapojený k tý M32.Podle toho nastavuješ LCD.Chtělo by to také schéma.
Dell INSPIRON N7110-Intel i7-2630QM-8G RAM-GT525M/1G-SSD-256G-Win8-64bit
Uživatelský avatar
apam
Příspěvky: 111
Registrován: 17 bře 2007, 00:00

#8 Příspěvek od apam »

Db0 - DB7 = PortD.0 - PortD.7
RW = PortB.7
Rs = PortB.6
E = PortB.2
Cs1 = PortB.5
Cs2 = PortB.4
Uživatelský avatar
ujosvec
Příspěvky: 283
Registrován: 07 srp 2008, 00:00

#9 Příspěvek od ujosvec »

Dell INSPIRON N7110-Intel i7-2630QM-8G RAM-GT525M/1G-SSD-256G-Win8-64bit
Uživatelský avatar
apam
Příspěvky: 111
Registrován: 17 bře 2007, 00:00

#10 Příspěvek od apam »

no ma to jeden maly problem ukazkovy program neni v bascomu. ale snad bych to mohl zvladnout je to docela dost popsane...
Asi blba otazecka, co jsou to busy a reset priznaky?
Návštěvník

#11 Příspěvek od Návštěvník »

To jsou bity ve stavovém slově, kterými řadič displeje říká, v jakém je stavu. Máš je popsané v té tabulce, B je Busy a R je Reset.

Kód: Vybrat vše

čtení stavového slova
B=1 - řadič zaneprázdněn, B=0 - připraven
D=1 - LCD zapnut, D=0 - LCD vypnut
R=1 - probíhá reset, R=0 - reset ukončen
Uživatelský avatar
apam
Příspěvky: 111
Registrován: 17 bře 2007, 00:00

#12 Příspěvek od apam »

dokazete to nekdo napsat v bascomu tak jak to je tu v c, ja tomu proste nerozumim...

Kód: Vybrat vše




#include <util/delay.h>
#define   lcdrs   6       // LCD's RS pin is connected to Pin0 of AVR 0
#define   lcdrw   7       // LCD's r/w pin is connected to Pin1 of AVR 1
#define   lcde   2       // LCD's e pin is connected to Pin2 of AVR
#define   lcdcs1   5       // LCD's CS1 pin is connected to Pin5 of AVR
#define   lcdcs2   4       // LCD's CS2 pin is connected to Pin4 of AVR
#define   lcdrst   3       // LCD's RST pin is connected to Pin3 of AVR

#define   ctrl_port       PORTB
#define   ctrl_port_ddr   DDRB
#define   ctrl_port_pins   PINB

#define   data_port      PORTD
#define   data_port_ddr   DDRD
#define   data_port_pins   PIND

...

void glcdInit (void)

  data_port_pins = 0;  //DATA Port Low
  data_port_ddr = 0xff; //Make DATA port output

  ctrl_port = 0;   //CONTROL Port Low
  ctrl_port_ddr = 0xff; //Make CONTROL port outputs

  ctrl_port |= (1<<lcdrst);
  ctrl_port |= (1<<lcdcs1);   //Enable the CS1 of the display
        ctrl_port |= (1<<lcdcs2);   //Enable the CS2 of the display
        ctrl_port &= ~(1<<lcdrs);        //Clear RS  \_
        ctrl_port &= ~(1<<lcdrw);        //Clear RW  /  Command mode


  _delay_us(42);
  data_port = 0b11000000;   //Display start line = 0 (0-63)
        eStrobe();

  _delay_us(42);
        data_port = 0b01000000;   //Set address = 0 (0-63)
        eStrobe();


  _delay_us(42);
        data_port = 0b10111000;   //Set page = 0 (0-7)
        eStrobe();

  _delay_us(42);

        data_port = 0b00111111;   //Display ON
        eStrobe();

        ctrl_port &= ~(1<<lcdcs1);  //Disable the CS1 of display
        ctrl_port &= ~(1<<lcdcs2);  //Disable the CS2 of display

  createRaster(); //  raster...
  showTheWave(); // LCD.
     
}

====================================================================
Návštěvník

#13 Příspěvek od Návštěvník »

V C neumím a v Bascomu tuplem ne, ale mohlo by to vypadat nějak takhle:

Kód: Vybrat vše

lcdrs ALIAS Portb.6
lcdrw ALIAS Portb.7
lcde ALIAS Portb.2
lcdcs1 ALIAS Portb.5
lcdcs2 ALIAS Portb.4
lcdrst ALIAS Portb.3

ctrl_port ALIAS Portb

data_port ALIAS Portd
data_port_pins ALIAS Pind



glcdInit:

 data_port = 0
 config data_port = output

 ctrl_port = 0
 config ctrl_port = output

 lcdrs = 1
 lcdcs1 = 1
 lcdcs2 = 1
 lcdrs = 0
 lcdrw = 0

 waitus 42
 data_port = &B11000000
 gosub eStrobe

 waitus 42
 data_port = &B10111000
 gosub eStrobe

atd.........

 return
nepřihlášen

#14 Příspěvek od nepřihlášen »

Proč nelze použít "glcdks108.lib" ?
Pro zobrazování pixelů existuje příkaz PSET X,Y,Value

Jen pro inspiraci: jednoduchý osciloskop v Bascomu
http://www.avr64.com/English/Projects/Index.htm
Uživatelský avatar
apam
Příspěvky: 111
Registrován: 17 bře 2007, 00:00

#15 Příspěvek od apam »

proc ji nejde pouzit? no protoze pri 16mhz je nestabilni, nebo nevim cim to je po chvili nekdy driv nekdy pozdeji se vypne pulka lcd a pak zhasne uplne, nebo sem tam stridave zobrazuje a maze pixely ktere nema. pri 8Mhz to nedela.jenze to je zase dost pomale pro ucel ke kteremu to potrebuju.jestli lze toto nejak osetrit tak by to snad i s tou knihovnou slo.

ten odkaz je zajimavy, ale jen bych dodal ze s verzi pana seratidise to nelze srovnat. mam to odzkousene.
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“