 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
Sadida Član


Pridružen-a: Pet 17 Apr 2009 12:53 Prispevkov: 636 Aktiv.: 3.23 Kraj: Zasavje
|
Objavljeno: Sre Avg 04, 2010 10:22 pm Naslov sporočila: ATmega88 težava z LCD-jem |
|
|
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.
Opis: |
|
 Download |
Ime datoteke: |
shema.pdf |
Velikost datoteke: |
22.37 KB |
Downloadano: |
23 krat |
|
|
Nazaj na vrh |
|
 |
lojzek Član



Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3387 Aktiv.: 15.99
|
Objavljeno: Čet Avg 05, 2010 6:37 am Naslov sporočila: |
|
|
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 . 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 |
|
 |
Sadida Član


Pridružen-a: Pet 17 Apr 2009 12:53 Prispevkov: 636 Aktiv.: 3.23 Kraj: Zasavje
|
Objavljeno: Čet Avg 05, 2010 10:34 am Naslov sporočila: |
|
|
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?
Opis: |
|
 Download |
Ime datoteke: |
lcd.c |
Velikost datoteke: |
5.04 KB |
Downloadano: |
11 krat |
Opis: |
|
 Download |
Ime datoteke: |
lcd.h |
Velikost datoteke: |
701 Bytov |
Downloadano: |
9 krat |
|
|
Nazaj na vrh |
|
 |
nakamichi Član

Pridružen-a: Pon 21 Avg 2006 18:51 Prispevkov: 845 Aktiv.: 3.69 Kraj: Nova Gorica
|
Objavljeno: Čet Avg 05, 2010 11:15 am Naslov sporočila: |
|
|
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 |
|
 |
lojzek Član



Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3387 Aktiv.: 15.99
|
Objavljeno: Čet Avg 05, 2010 12:17 pm Naslov sporočila: |
|
|
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 |
|
 |
Sadida Član


Pridružen-a: Pet 17 Apr 2009 12:53 Prispevkov: 636 Aktiv.: 3.23 Kraj: Zasavje
|
Objavljeno: Čet Avg 05, 2010 5:08 pm Naslov sporočila: |
|
|
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 |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.23 Kraj: Ig
|
Objavljeno: Čet Avg 05, 2010 9:25 pm Naslov sporočila: |
|
|
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
Opis: |
|
 Download |
Ime datoteke: |
LCD.PDF |
Velikost datoteke: |
5.61 KB |
Downloadano: |
10 krat |
_________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
Sadida Član


Pridružen-a: Pet 17 Apr 2009 12:53 Prispevkov: 636 Aktiv.: 3.23 Kraj: Zasavje
|
Objavljeno: Čet Avg 05, 2010 11:33 pm Naslov sporočila: |
|
|
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 |
|
 |
lojzek Član



Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3387 Aktiv.: 15.99
|
Objavljeno: Pet Avg 06, 2010 6:20 am Naslov sporočila: |
|
|
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 |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.23 Kraj: Ig
|
Objavljeno: Pet Avg 06, 2010 7:31 am Naslov sporočila: |
|
|
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 |
|
 |
Sadida Član


Pridružen-a: Pet 17 Apr 2009 12:53 Prispevkov: 636 Aktiv.: 3.23 Kraj: Zasavje
|
Objavljeno: Pet Avg 06, 2010 8:52 am Naslov sporočila: |
|
|
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 |
|
 |
lojzek Član



Pridružen-a: Pet 25 Jan 2008 8:00 Prispevkov: 3387 Aktiv.: 15.99
|
Objavljeno: Pet Avg 06, 2010 11:18 am Naslov sporočila: |
|
|
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 |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.23 Kraj: Ig
|
Objavljeno: Ned Avg 08, 2010 11:02 pm Naslov sporočila: |
|
|
Ker je jutri ponedeljek in boš najbrž testiral, sem spremenil takt istega HEX fajla v 1 MHz.
Pripenjam kodo. Postopki so isti...PDF > HEX
Opis: |
|
 Download |
Ime datoteke: |
LCD.PDF |
Velikost datoteke: |
5.61 KB |
Downloadano: |
10 krat |
_________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
Sadida Član


Pridružen-a: Pet 17 Apr 2009 12:53 Prispevkov: 636 Aktiv.: 3.23 Kraj: Zasavje
|
Objavljeno: Tor Avg 10, 2010 8:49 pm Naslov sporočila: |
|
|
Hvala za hex. Ponedeljek se je malo zavlekel, sem pa danes probal, ampak nažalost ni nobene spremembe od zadnjič
|
|
Nazaj na vrh |
|
 |
nakamichi Član

Pridružen-a: Pon 21 Avg 2006 18:51 Prispevkov: 845 Aktiv.: 3.69 Kraj: Nova Gorica
|
Objavljeno: Tor Avg 10, 2010 10:52 pm Naslov sporočila: |
|
|
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 |
|
 |
|
|
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
|