Fórum témák

» Több friss téma
Fórum
Keresés
Lapozás: OK   24 / 29
(#) m.joco válasza gthomas hozzászólására (») Feb 15, 2009
Nos, először a ADCON0 := 0x07; utasítás legyen, mert a PIC c portján a lábakat át kell szerintem állítani digitálisra. Majd a trisc:=0; utasítással állítsd be kimenetnek a c portot. Ezután jöhet az lcd configja és a többi. Ellenőrizd, hogy jól van-e beállítva az LCD kontrasztja.
Üdv.
(#) gthomas hozzászólása Feb 15, 2009
A kijelző EW162G0GLY - elvileg 44780 kompatibilis.

Lcd_Config(PORTC,3,2,1,0,PORTC,4,6,5);
Lcd_Cmd(LCD_TURN_OFF);
lcd_Cmd(LCD_TURN_ON);
Lcd_Out(1, 1, 'HELLO');

így sem megy
(#) m.joco válasza gthomas hozzászólására (») Feb 15, 2009
Hello
Előszöris bizonyosodj meg róla, hogy az LCD-d HD44780 kompatibilis-e.
Szerintem mielőtt kiiratnál valamit, adj egy:
lcd_cmd(lcd_turn_on); utasítást, hogy biztosan bekapcsoljon az LCD.
Üdv.
(#) gthomas hozzászólása Feb 15, 2009
Sziasztok!

Mikropascalban szeretnék egy LCD-t működtetni, de nekem meg sem szólal. A PIC 16F690 adatbitek PORTC 0,1,2,3 cmd bitek rs 4, enable 5.

program Proba1;
begin

Lcd_Config(PORTC,3,2,1,0,PORTC,4,6,5);

Lcd_Out(1, 1, 'HELLO');

end.

Az áramkör egy próbapanelon van, asm-ben (MPLAB-ban) működik. Már vagy százszor lefordítottam ilyen-olyan változtatásokkal, de nem tudom miért nem indul el. A lcd unit ahogy látom, le van fordítva úgyhogy abba nem tudok belenézni. Mi lehet a gond, kol keressem a hibát?
(#) ha1drp válasza lgyk hozzászólására (») Jan 5, 2009
Én első rápillantásra két dolgot látok:

Usart_Init(4800); - kivenném a ciklusból, mert nem valószínű, hogy pár uS alatt - a lekérésig jönne be adat.

Lehet, hogy rosszul emlékszem de a szenzornak kevés a 100mS mérési idő.
(#) lgyk válasza hajos.norbert hozzászólására (») Jan 5, 2009
Köszi, megnézem!
(#) hajos.norbert válasza lgyk hozzászólására (») Jan 5, 2009
Szia!

http://users.edpnet.be/rosseel01/DRO/PIC/index.htm

Itt foglalkoznak a dologgal. Van hozzá valami LIB is
(#) lgyk hozzászólása Jan 5, 2009
Hi!

mikroPascalban írogatok egy programot, nagy része működik, de van pár problémám:

- A DS1820-as szenzorral kommunikál (azonosítókat beolvassa, kiküldi, de valamiért a szenzor nem válaszol, vagy a kontroller hibásan dolgozza fel.

- RS-232 porton keresztül nem hajlandó kommunikálni...

A segítséget előre is köszi!

A forrás:

-----

Még egy pár kiegészítés: a szenzorok (1-Wire) a PORTA.0-n vannak, a nyomógombok a megfelelő (bemenetre állított) portokon. Az LCD része, nyomógobmkezelés, szenzoradatok beolvasása tökéletesen működik... A mikrovezérlő PIC16F877 20/P (HS 20,000 MHz).
(#) pako válasza pako hozzászólására (») Jan 5, 2009
Az adatlap szerint a szerint a DDRB regiszter 6. és 7. bitje csak olvasható, próbáld meg $FF helyett $3F-re állítani. Nem biztos hogy segít, de egy próbát megér.

Ezzel kapcsolatban akár kérdezhetsz az http://www.hobbielektronika.hu/forum/topic_861.html témában is
(#) pako válasza Istike88 hozzászólására (») Jan 5, 2009
Atmelekhez nagyon nem értek még. Próbáld meg ASM parancsokkal kapcsolgatni a lábakat. Megnéztem az adatlapját ennek az atmel csodabogárnak , szerintem próbáld ki ezt:
setbit helyett:
Asm
SBR PortB,3
end;
clearbit helyett:
Asm
CBR PortB,3
end;
Ha nem lesz jó, akkor passzolom
(#) Istike88 válasza pako hozzászólására (») Jan 4, 2009
Helló!

Igaz, át is írtam hogy 7-0ig menjen. És ez a data.i megoldás is egyszerűbbé teszi a dolgot! De van még egy problémám!

Ha így akarom megváltoztatni a kimenet értékét hogy pl: SCLK:=1;

Akkor az nem működik, de ha ezt:
setbit(portb,3);

írom akkor ugyan beáll a kimenet, de szerintem a
clearbit(portb,3);

nem csinál semmit ha utána meghívom

Nem lehet hogy valami regiszterrel kellene szórakozni hogy menjen?
(#) Istike88 válasza El_Pinyo hozzászólására (») Jan 4, 2009
Helló!

Ez sajnos nem jött be, nem enged konstans értéket beírni!
(#) pako válasza Istike88 hozzászólására (») Jan 4, 2009
Üdv!
Észrevettem egy hibát a kódodban.

Idézet:
„Procedure write_dorc(data:byte);
var i,data2:byte;
Begin
for i:=8 downto 0 do
Begin
SCLK:=0;
if ((data and $80)=0) then
SDA:=0
else
SDA:=1;
SCLK:=1;
data:=data shl 1;
End;
End;”


Ha a for ciklus 8-tól megy 0-ig, az 9 bitet jelent. Helyesen 7-től kell mennie 0-ig.
Én így csináltam volna:

Procedure write_dorc(data:byte);
var i:byte;
Begin
for i:=7 downto 0 do
Begin
SCLK:=0;
if data.i=0 then
SDA:=0
else
SDA:=1;
SCLK:=1;
End;
End;
(#) hajos.norbert válasza hajos.norbert hozzászólására (») Jan 4, 2009
Megvan az error

Íráskor és olvasáskor máshogy kell megcímezni a slave-t
(#) wangi hozzászólása Jan 4, 2009
Hello!Udv mindenkinek!Segitseget kernek
"MikroPascal V.8.001" ugyben,valami javito progira lenne szuksegem...Elore is kosz!
(#) Istike88 válasza kobold hozzászólására (») Jan 3, 2009
Megvan! Sikerül neki shiftelni, és úgy nézem hogy jó is a végeredmény, majd még átfutok rajta meg azon is ahonnan írtam az egészet.

Akkor tépném csak a hajamat ha kiderülne hogy a kijelző a rossz!

Jaja, van még mit tanulnom ezért járok ide

üdv
(#) El_Pinyo válasza Istike88 hozzászólására (») Jan 3, 2009
Szia!
Esetleg még megpróbálhatnád azt is, hogy a write_dorc és a write_cmd eljárásokat nem érték, hanem változó paraméterekkel paraméterezed.
Tehát amire gondolok:
  1. Procedure write_dorc(var data:byte);

...
  1. Procedure write_cmd(var cmd:byte);

...
Üdv.
(#) kobold válasza Istike88 hozzászólására (») Jan 3, 2009
Tegyél töréspontot (breakpoint) a függvényre, akkor megáll a programvégrehajtás a szimulátorban, és utána lépésenként át tudod nézni, mi történik. Kicsit ismerkedni kell a debug lehetőségeivel.
(#) Istike88 válasza kobold hozzászólására (») Jan 3, 2009
Igen, csinál asm fájlt, csatoltam is.

Bár asm-hez nem konyítok.

a data2 azért volt ott mert elősször abba akartam tárolni a shiftelt fájlt, de úgy gondoltam egyszerűbb ha a saját helyére számoltatom ki azaz a data-ba, a data2 megmaradt véletlen.

Hogy sikerül e a shift azt nem tudom, mert nem tudtam rendesen megnézni a watch-al. Turbo pascalban kicsit máshogy volt

Nem mutatta hogy mikor ugrik erre az eljárásra, pedig a write_data eljárással az is meg volt hívva a főprogramban.
Annyit tudtam kivenni belőle hogy: data: inaccessible
(#) kobold válasza Istike88 hozzászólására (») Jan 3, 2009
Amikor lefordítod, készít belőle asm file-t? Ha igen, azt lehetne még megnézni, hogy alakul benne a kódod.
Közben azon gondolkodom, ott van pl. ez a rész:
  1. Procedure write_dorc(data:byte);
  2. var i,data2:byte;
  3. Begin
  4.   for i:=8 downto 0 do
  5.     Begin
  6.       SCLK:=0;
  7.       if ((data and $80)=0) then
  8.         SDA:=0
  9.       else
  10.         SDA:=1;
  11.       SCLK:=1;
  12.       data:=data shl 1;
  13.     End;
  14. End;

Helyet foglal data2-nek, de nem is használja; szimulátorban megnézted, hogy a balra léptetésnél tényleg léptet-e? Ha nem, akkor azért, mert a függvény paraméterét nem módosíthatja (pl. basic esetében az érték szerint átadott változók ilyenek). És akkor talán a rutin elején egy
Idézet:
„data2 := data”
sor, majd a data2 használata szükséges.
(#) Istike88 válasza abalazs hozzászólására (») Jan 3, 2009
Ugyan az a kijelzője van, csak nagyobb felbontású, de a vezérlő ic ugyanaz benne!

Nagyon szépen köszönöm a forrást! Szerintem ezzel sikerül már valamire jutnom!

Üdv
(#) Istike88 válasza kobold hozzászólására (») Jan 3, 2009
úgyhiszem jó az érték, ez állítja kimenetnek a portját. A resetet közben én is észre vettem és javítottam. sőt kipróbáltam azt hogy nem így adok értéket egy lábnak:

pinb4:=1;

hanem

setbit(portb,4);

De így se semmi, kivéve hogy mostmár látom a leden az órajelet.
(#) Istike88 válasza icserny hozzászólására (») Jan 3, 2009
Helló!

Ezen a részen is elgondolkoztam, láttam néhány c forrás kódot de azon se láttam olyat. Valahol mint ha azt olvastam volna hogy a kijelző 4Mbit/s sebességgel képes fogadni az adatokat!
(#) abalazs válasza Istike88 hozzászólására (») Jan 3, 2009
Nemtudom hogy a 3410-nek milyen kijelzője van, én a 3310, 5110-esét próbáltam már. Van hozzá egy komplett bekötési rajzom, és egy forrás, amit a zippben megtalálsz. Egy próbapanelen szinte mindig ezt a kijelzőt használom ha látnom kell az infókat a fejlesztés alatt. Remélem hasznát veszed.
(#) kobold válasza Istike88 hozzászólására (») Jan 3, 2009
Az már elsőre is biztos, hogy a kijelző Reset lába alacsony szinten marad, vagyis állandó Reset-ben van, úgy nem is ír ki semmit.
Az Attiny-t nem ismerem, abban nincs olyan, hogy a portok irányát (ki / bemenet) be kell állítani? vagy ez volna a
Idézet:
„ddrb:=$FF;”
? Ha igen, jó ez az érték? Már csak azért, mert ha kivezérlés sincs, talán valami ilyesmi hiányzik még.
(#) icserny válasza Istike88 hozzászólására (») Jan 3, 2009
Az adatbitek kiküldésének az időzítését nem látom benne. Milyen tempóban tudja a kijelző fogadni az adatokat, s hogyan akarod a kiküldés sebességét korlátozni?
(#) Istike88 válasza Istike88 hozzászólására (») Jan 3, 2009
hopsz! nem csatoltam a fájlt

nokialcd.txt
    
(#) Istike88 hozzászólása Jan 3, 2009
Ismét én!

Írtam egy programot mikropascalban nokia 3410 lcd vezérlésre, de sehogy sem akar működni! Mellékelem a forrás kódot, hátha találtok benne olyat amit én nem vettem észre.

Az egészet egy C program forráskódjának az átírásával csináltam, vagyis nem saját kútfő.

A kijelző meg se akar mukkanni. Attiny 45-el próbáltam.
Kínomban már egy ledet kötöttem az SCK lábra hogy figyeljem van-e órajel, de az se világított!
(#) Istike88 válasza kobold hozzászólására (») Jan 3, 2009
Megmentőm vagy! Köszönöm szépen!

Én úgy emlékeztem hogy így működik: Shl(data);

A te verziód működik!

Üdv
(#) kobold válasza Istike88 hozzászólására (») Jan 3, 2009
Ha mindegy neki a kis- és nagybetű (azaz nem shl kellene), akkor lehagytad, hány bittel léptessen, pl.:
Idézet:
„var1 := var2 shl 2”
--> ez két bitet léptet.
Következő: »»   24 / 29
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem