www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

ATmega88 težava z LCD-jem
Pojdi na stran 1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Sadida
Član
Član



Pridružen-a: Pet 17 Apr 2009 12:53
Prispevkov: 636
Aktiv.: 3.23
Kraj: Zasavje

PrispevekObjavljeno: Sre Avg 04, 2010 10:22 pm    Naslov sporočila:  ATmega88 težava z LCD-jem Odgovori s citatom

Imam atmego88 - 20PU, uporabljam AVR Studio 4 in WinAvr 20100110.
Na PORT D sem priklopil LCD(2x16) WH1602A.
Poskusil sem naložiti del kode, ki jo je imel na predavanju jvolk. Vklučil sem tudi knjižnico za LCD. Na lcd-ju se ne izpiše nič. Če pa naložim kodo, ki bere adc vhod, na katerega je priklučem potenciometer, se pa na lcdju vsi kvadratki obarvajo. Nisem prepričan ali je napaka v programu, ali v sami vezavi.

Koda:

#include <avr\io.h>
#include <util\delay.h>
#include "lcd.h"

#define led_port PORTB
#define tipka_pin PINB

#define led_rdeca   0
#define led_rumena   1
#define led_zelena   2
#define tipka      6

#define tipka_pritisnjena !(tipka_pin & (1<<tipka))
#define zelena_on   led_port |= (1<<led_zelena)
#define zelena_off   led_port &= ~(1<<led_zelena)
#define rumena_on   led_port |= (1<<led_rumena)
#define rumena_off   led_port &= ~(1<<led_rumena)
#define rdeca_on   led_port |= (1<<led_rdeca)
#define rdeca_off   led_port &= ~(1<<led_rdeca)

int main(void)
{
   DDRB= (1<<led_zelena) | (1<<led_rumena) | (1<<led_rdeca);

   lcdInit();   
   LCDcls();

   lcd_gotoxy(0,0);
   LCDputs("elektronik.si");

   while (1) {
      rdeca_on;
      while (!tipka_pritisnjena);
      _delay_ms(4000);
      rdeca_off;

      rumena_on;
      _delay_ms(1000);
      rumena_off;

      zelena_on;
      _delay_ms(3000);
      zelena_off;

      rumena_on;
      _delay_ms(1000);
      rumena_off;
   }
}


Bega me tudi to, ker nevem ali je potrebno priključiti pina AREF in AVCC na VCC.
Zanima me še to, če je kaj narobe ko sem priključil tipki na vhoda PD6 in PD7 , ki naj bi bila za analogni komparator.
Prilagam shemo, če bo mogoče kdo videl kakšno napako.



shema.pdf
 Opis:

Download
 Ime datoteke:  shema.pdf
 Velikost datoteke:  22.37 KB
 Downloadano:  23 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3387
Aktiv.: 15.99

PrispevekObjavljeno: Čet Avg 05, 2010 6:37 am    Naslov sporočila:   Odgovori s citatom

Po vrsti:
AVCC priključiš na 5V - če seveda potrebuješ AD pretvornik. Ta pin predstavlja napajanje AD pretvornika. Glej datasheet poglavje analog to digital converter.
AREF pa je odvisen od nastavitev registrov. Lahko nanj ne priklopiš nič, lahko kondenzator, lahko pa zunanjo napetost. Glej datasheet poglavje analog to digital converter.
V tvoji shemi mi ni najbolj všeč kondi na reset pinu Think . Kolikor imam v spominu, naj na RESETU nebi bilo kondijev.
V knjižnici za LCD (lcd.h ali lcd.c) imaš prav gotovo definirano, na katerem portu mora biti priključen LCD ter kateri pin LCDja gre na kateri pin mikrota. Če to ni enako, kot je na tvoji shemi, zadeva seveda ne more delovat. Torej v primeru, da je ta predpostavka pravilna, je potrebno popraviti ali knjižnico ali pa shemo.
Tipki lahko priključiš na pravzaprav katerikoli pin, ampak ga moraš obvezno definirati kot vhodni pin (komanda DDRx ), pa poskrbeti moraš za pravilno stanje pullup uporov- če jih potrebuješ (komanda PORTx). To storiš pri inicializaciji mikrota. Ta trditev sicer ni povsem natančna, ampak za začetnika bo povsem točna.
Vsi pini so univerzalni I/O pini, večinoma pa imajo lahko več funkcij - katero od njih in kako jo uporabiš si lahko ogledaš v datasheetu poglavje I/O ports - Alternate port functions.

V glavnem, Datasheet je zbirka dejstev, ki ti sploh omogočajo uporabo mikrota. Brez tega se boš težko kaj naučil. Seveda pa potrebuješ datasheet, ki ima 100+ strani (ne tistega z 20 stranmi).
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sadida
Član
Član



Pridružen-a: Pet 17 Apr 2009 12:53
Prispevkov: 636
Aktiv.: 3.23
Kraj: Zasavje

PrispevekObjavljeno: Čet Avg 05, 2010 10:34 am    Naslov sporočila:   Odgovori s citatom

Torej je uredu, če sta AVCC in AREF priključena na 5V.
Kondenzator na reset pinu - to sem videl tule(http://www.elektronik.si/phpBB2/viewtopic.php?t=9423), gre za tipko s katero resetiraš, to mi tudi deluje.
V knjižnicah za lcd najdem samo, da gre RS pin na PD4 in pin E na PD5, to je pravilno. Kaj je z ostalimi pini, ne razberem iz knjižnice.(prilagam v priponki).
Datasheet imam, tistega s 100+ stranmi, vendar sem še malo zgubljen z branjem le tega.
Glede teh komand itd. ali obstaja kakšna knjiga oz. karkoli, kjer bi bilo to zbrano?
Bi lahko dobil kakšen košček kode s katerim bi lahko samo sprobal, če lcd deluje?



lcd.c
 Opis:

Download
 Ime datoteke:  lcd.c
 Velikost datoteke:  5.04 KB
 Downloadano:  11 krat


lcd.h
 Opis:

Download
 Ime datoteke:  lcd.h
 Velikost datoteke:  701 Bytov
 Downloadano:  9 krat

Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
nakamichi
Član
Član



Pridružen-a: Pon 21 Avg 2006 18:51
Prispevkov: 845
Aktiv.: 3.69
Kraj: Nova Gorica

PrispevekObjavljeno: Čet Avg 05, 2010 11:15 am    Naslov sporočila:   Odgovori s citatom

Knjižnica ni med najboljšimi. Glede na videno uporablja celoten port, vsaj tako je definirano v lcd.h in to je v rvojem primeru portd. Ne vem, če lahko imaš na istem portu command line in data line v tem primeru. Sicer zadeva res deluje v 4 bitnem načinu ampak inicializira pa celoten port kot izhoden, za data pa uporablja spodnje 4 bite.

L.P.,
Miha
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3387
Aktiv.: 15.99

PrispevekObjavljeno: Čet Avg 05, 2010 12:17 pm    Naslov sporočila:   Odgovori s citatom

Nekaj je že nakamichi povedal in mislim da vse to drži. Mogoče malce boljša knjižnica je recimo tukaj , čeprav ima nekaj "pomankljivosti", tako da sem jo predelal za lastne potrebe (moja omogoča uporabo dveh različnih portov za CMD in DATA povezave, vse ostale pine pa pusti pri miru).

Nimam pa nobene mege88, da bi s primerom pomagal.


EDIT: sem vedel, da imam nekje dokument o ISP programiranju. V njem se resnično kot najbolj optimalno vezan RESET pin priporoča 10k pullup upor in 100n kondenzator proti masi. Čeprav jaz običajno ne uporabim nič od tega.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sadida
Član
Član



Pridružen-a: Pet 17 Apr 2009 12:53
Prispevkov: 636
Aktiv.: 3.23
Kraj: Zasavje

PrispevekObjavljeno: Čet Avg 05, 2010 5:08 pm    Naslov sporočila:   Odgovori s citatom

S to knjižnico bom moral verjetno tudi spremeniti kodo kajne?
Ali lahko spremenim tudi, pine na katere imam priključen display, v knjižnici so drugače razporejeni.

Našel sem tole stran, bi lahko probal s tem primerom. Ali nujno potrebujem quartz?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1714
Aktiv.: 7.23
Kraj: Ig

PrispevekObjavljeno: Čet Avg 05, 2010 9:25 pm    Naslov sporočila:   Odgovori s citatom

Poskusi na tvoj mega88 zapeči tale hex, ki je v prilogi. Prilagojen je tvojim povezavam. Na hitro spacano v Bascomu, kjer lahko po mili volji nastaviš pine za LCD. Če ti tale hex deluje, potem imaš s povezavo, uCjem in LCDjem vse ok.
Aja, Nastavi interni oscilator na 4MHz (v kolikor ga še nisi). LCD.PDF prej preimenuj v LCD.HEX (drugače nisem mogel pripeti datoteke)

LP G



LCD.PDF
 Opis:

Download
 Ime datoteke:  LCD.PDF
 Velikost datoteke:  5.61 KB
 Downloadano:  10 krat


_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Sadida
Član
Član



Pridružen-a: Pet 17 Apr 2009 12:53
Prispevkov: 636
Aktiv.: 3.23
Kraj: Zasavje

PrispevekObjavljeno: Čet Avg 05, 2010 11:33 pm    Naslov sporočila:   Odgovori s citatom

Najlepša hvala za pomoč. Torej, program sem zapekel, toda ne najdem možnosti nastavitve internega oscilatorja na 4MHz, sedaj je nastavljen na 8MHz, edino če ga neznam. Program se je zapekel uspešno, vendar stvar ne deluje. Na lcdju samo občasno žmrkajo kvadratki. Sem pomislil, da je mogoče lcd fuč, ampak ne verjamem ker je nov. Potem sem na hitro zvezal še na protobordu in prav tako ne deluje. Kaj bi sploh še lahko bilo narobe?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3387
Aktiv.: 15.99

PrispevekObjavljeno: Pet Avg 06, 2010 6:20 am    Naslov sporočila:   Odgovori s citatom

Rgorazd, daj mu poizkusi spremeniti program toliko, da bo delal na osnovni frekvenci. Da sadida ne bo spreminjal fuse bitov....

Namreč, če sedaj uC dela na 8MHz (tudi odvisno od CLKDIV/8 fuse bita), program je pa pisan za 4MHz, se odvija prehitro in ga LCD ne more dohajat.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1714
Aktiv.: 7.23
Kraj: Ig

PrispevekObjavljeno: Pet Avg 06, 2010 7:31 am    Naslov sporočila:   Odgovori s citatom

Bom pol spremenil, ko pridem s šihta in pripnem.

Sadida, a ti do sedaj še nisi nič Fuse bitov nastavljal? Vse je tako kot je privzeto nastavljeno? Če je temu tako, potem ti interni clk teče na 1MHz?! Razen če ima Mega88 kako drugače, ker Mega8 ima tovarniško interni clk nastavljen na 1MHz. Kateri programator pa uporabljaš?

LP G

_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Sadida
Član
Član



Pridružen-a: Pet 17 Apr 2009 12:53
Prispevkov: 636
Aktiv.: 3.23
Kraj: Zasavje

PrispevekObjavljeno: Pet Avg 06, 2010 8:52 am    Naslov sporočila:   Odgovori s citatom

Ne, čisto use sem pustil pri miru tako kot se je samodejno nastavilo. V avr studio sem šel pod zavihek fuses in tam lahko izbiraš med internimi in zunanjimi oscilatorji. Ampak kot sem že rekel, je na voljo za interni osc. samo 8MHz in pa nekih 127kHz, nevem točno.
Danes nažalost ne bom mogel probati ker me do ponedeljka ni doma, bom pa takoj v ponedeljek spet probal, če boš Rgorazd pripel drug program.
Uporabljam pa programator od Darkota.

hvala, LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3387
Aktiv.: 15.99

PrispevekObjavljeno: Pet Avg 06, 2010 11:18 am    Naslov sporočila:   Odgovori s citatom

Sem Downloadal datasheet. Defaultno ima nova mega88 nastavljeno interni oscilator 8MHz in postavljen CKDIV8, tako da od začetka dela z 1MHZ taktom. Se pravi točno tako kot Mega8.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RGorazd
Član
Član



Pridružen-a: Čet 20 Maj 2004 15:57
Prispevkov: 1714
Aktiv.: 7.23
Kraj: Ig

PrispevekObjavljeno: Ned Avg 08, 2010 11:02 pm    Naslov sporočila:   Odgovori s citatom

Ker je jutri ponedeljek in boš najbrž testiral, sem spremenil takt istega HEX fajla v 1 MHz.

Pripenjam kodo. Postopki so isti...PDF > HEX



LCD.PDF
 Opis:

Download
 Ime datoteke:  LCD.PDF
 Velikost datoteke:  5.61 KB
 Downloadano:  10 krat


_________________
.
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._|
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Sadida
Član
Član



Pridružen-a: Pet 17 Apr 2009 12:53
Prispevkov: 636
Aktiv.: 3.23
Kraj: Zasavje

PrispevekObjavljeno: Tor Avg 10, 2010 8:49 pm    Naslov sporočila:   Odgovori s citatom

Hvala za hex. Ponedeljek se je malo zavlekel, sem pa danes probal, ampak nažalost ni nobene spremembe od zadnjič Sad
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
nakamichi
Član
Član



Pridružen-a: Pon 21 Avg 2006 18:51
Prispevkov: 845
Aktiv.: 3.69
Kraj: Nova Gorica

PrispevekObjavljeno: Tor Avg 10, 2010 10:52 pm    Naslov sporočila:   Odgovori s citatom

Jaz priporočam, da se dobiš s kakšnim forumovcem in stvar skupaj pogledata, lahko je res kakšna hardverska napaka ali slab spoj na LCDju ali pa je samo kakšna malenkost v softveru.

L.P.,
Miha
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2, 3  Naslednja
Stran 1 od 3

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group