Sari la conținut
ELFORUM - Forumul electronistilor

Programarea uC-urilor Atmel


Postări Recomandate

Salutare!

Ma tot chinui sa fac un lcd 2x16 sa mearga.In 8 bit am reusit ,dar in 4 biti nu reusesc.Pana acum am facut 3 functii si am incercat sa-l initializez.

#include <avr/io.h>#include <util/delay.h>#define LcdData        PORTD#define LcdControl     PORTB#define LcdDataDdr     DDRD#define LcdControlDdr  DDRB#define FunctionData   PINB0#define ReadWrite      PINB1#define Enable         PINB2void Data_in(void){  LcdControl|=(1<<Enable);  asm volatile("nop");  asm volatile("nop");  LcdControl&=~(1<<Enable);}void Check_Busy(void){  LcdDataDdr=0;  LcdControl|=(1<<ReadWrite);  LcdControl&=~(1<<FunctionData);  while(LcdData >= 0x08)  {    Data_in();  }  LcdDataDdr=0xFF;}void Send_Command(unsigned char command){  Check_Busy();   LcdData=(LcdData & 0xF0)|((command>>4) & 0x0F);  LcdControl&=~(1<<ReadWrite|1<<FunctionData);  Data_in(); LcdData= (LcdData & 0xF0)|(command & 0x0F);  Data_in();   }void Init_Lcd(void){  LcdControlDdr|=(1<<ReadWrite)|(1<<FunctionData)|(1<<Enable);  LcdDataDdr=0xFF;  LcdControl|=(0<<ReadWrite)|(0<<FunctionData)|(0<<Enable);  _delay_ms(200);  Send_Command(0x33);  Send_Command(0x32);  Send_Command(0x28);  Send_Command(0x0F);  Send_Command(0x01);  Send_Command(0x06);}int main(void){   Init_Lcd();    while(1)   {    }  

Problema este ca nu imi apare cursorul pe ecran ,iar cateodata imi apare pe prima linie si coloana 2,nu reusesc sa-i dau de cap,am incercat in toate modurile ,m-am uitat la n tutoriale ,dar tot nu pot sa inteleg ce are.

De conectat este conectat bine la Atmega8 ,dar nu vrea.

Stiti cumva ce poate sa aiba?

Link spre comentariu

La prima vedere eroarea de initializare provine de aici:

  Send_Command(0x33);  Send_Command(0x32);  Send_Command(0x28);  Send_Command(0x0F);  Send_Command(0x01);  Send_Command(0x06);

Citeste: http://web.alfredstate.edu/weimandn/programming/lcd/ATmega328/LCD_code_gcc_4d.html si : http://www.avrfreaks.net/forum/tut-lcd-tutorials-updated?name=PNphpBB2&file=viewtopic&t=81823 pentru edificare

Link spre comentariu
  • 2 luni mai târziu...
Vizitator simipop

Salut.

   Caut pe cineva care ar putea sa-mi copieze memoria flash si eeprom dintr-un procesor atmega 162 16AU.  

Eu nu reusesc sa citesc decat date false.

 

tel: 0747546789

Link spre comentariu
  • 1 an mai târziu...

mda..ok...exact ce banuiam...concluzia e ca nimeni nu poate garanta ca un soft scris pt un AT90 va functiona pe un AT. nu am citit sursa indicata, nu stiu daca m-as pricepe sa inteleg ce zice acolo...am incercat o data sa inteleg, am inteles cam care ar fi diferentele hardware, dar nu inteleg cum se porteaza un soft de pe unul pe altul. asa ca..pot lansa o intrebare la care sa mi se raspunda cu da sau nu? se poate sau nu porta softul scris pt un AT90 pe un ATtiny si sa si functioneze? ca sa stiu daca sa abandonez acel proiect cu AT90 sau nu. e vorba de proiectul de aici: http://www.serasidis.gr/circuits/RF_remote_control/RF_remote_control.htm

Link spre comentariu

ok..am mai citit asta pe undeva, ca tot secretul ar fi in fuse bits. dar la fel, prin alte parti, nu se garanteaza. e drept ca multi spun ca au reusit astfel...ok, deci sa zicem ca se poate. acum vine alta chestie: softul respectiv poate fi portat pentru atmega8? ca am cateva atmega8 si as vrea sa le folosesc pt asa ceva...la mine in oras nu prea aduc microcontrolere, probabil doar pe comanda...si decat sa fac comanda la magazinul local mai bine fac comanda pe net...si pentru 2-3 microcontrolere nu se merita...poate ca e mai mult transportul...de asta as vrea sa rezolv problema cu ce am deja..adica atmega8. cer cam multe, nu?

Link spre comentariu
  • 2 ani mai târziu...

Va salut.

Am un ATmega328 pe care vreau sa-l programez cu doua fisiere hex. Unul  se numeste program.hex si celalalt eeprom.hex.

Am incercat cu AVR Burn-O-Mat dar imi vede doar flash-ul, nu imi vede fisierul eeprom.hex desi cele doua fisiere sunt in acelasi folder.

I-am spus ce programator am, a detectat microcontroller-ul dar nu am mers mai departe din cauza descrisa mai sus.

Cu AVRDUDESS se intampla la fel.

O idee... sau doua? :scarpin

Multumesc.

Editat de zvonacfirst
Link spre comentariu

In primul rand, ce programator ai?

In al doilea rand, cred ca fisierul EEPROM ar trebui sa aiba extensia .eep si de aici confuzia.

L.E.: Acum m-am uitat sa vad ce stie sa faca softul cu pricina si se pare ca accepta si extensia .hex

Ai incercat sa apesi butonul "File" in zona EEPROM?

 

 

Editat de nico_2010
Link spre comentariu
Acum 4 ore, nico_2010 a spus:

In primul rand, ce programator ai?

USBASP

Nu programatorul este problema din moment de detecteaza tipul MCU-ului.

 

Acum 4 ore, nico_2010 a spus:

Ai incercat sa apesi butonul "File" in zona EEPROM?

Am scris ca nu il vede in folderul unde se afla. Adica am ajuns pana acolo aratandu-i calea.

 

Acum 4 ore, nico_2010 a spus:

fisierul EEPROM ar trebui sa aiba extensia .eep si de aici confuzia.

Am sa verific chestia asta diseara, adica ce extensii de fisiere accepta. Ar fi o explicatie desi este greu de crezut,

 

 

EDIT:

Dupa actualizarea AVRDUDESS imi vede si eeprom.hex.

 

Dar mai am o intrebare referitor la fusebits.

Am un fisier text in care scrie asa: Low: E2   High: D1   Extended: 05

Am scris aceste valori si primesc ok pentru Low si High dar failed pentru Extended.

Daca dau Read la fuses in AVRDUDESS imi citeste L: 0xE2   H: 0xD1   E: 0xFD

Care sa fie treaba?

 


_WRITINGINGFUSES
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
>>>: avrdude -u -c usbasp -p m328p -P usb -B 0.5 -U lfuse:w:0xE2:m -U hfuse:w:0xD1:m -U efuse:w:0x05:m 

avrdude.exe: set SCK frequency to 1500000 Hz
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude.exe: Device signature = 0x1e950f (probably m328p)
avrdude.exe: reading input file "0xE2"
avrdude.exe: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude.exe: 1 bytes of lfuse written
avrdude.exe: verifying lfuse memory against 0xE2:
avrdude.exe: load data lfuse data from input file 0xE2:
avrdude.exe: input file 0xE2 contains 1 bytes
avrdude.exe: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lfuse verified
avrdude.exe: reading input file "0xD1"
avrdude.exe: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.01s

avrdude.exe: 1 bytes of hfuse written
avrdude.exe: verifying hfuse memory against 0xD1:
avrdude.exe: load data hfuse data from input file 0xD1:
avrdude.exe: input file 0xD1 contains 1 bytes
avrdude.exe: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of hfuse verified
avrdude.exe: reading input file "0x05"
avrdude.exe: writing efuse (1 bytes):

Writing |  ***failed;  
################################################## | 100% 0.05s

avrdude.exe: 1 bytes of efuse written
avrdude.exe: verifying efuse memory against 0x05:
avrdude.exe: load data efuse data from input file 0x05:
avrdude.exe: input file 0x05 contains 1 bytes
avrdude.exe: reading on-chip efuse data:

Reading | ################################################## | 100% 0.01s

avrdude.exe: verifying ...
avrdude.exe: verification error, first mismatch at byte 0x0000
             0xfd != 0x05
avrdude.exe: verification error; content mismatch

avrdude.exe done.  Thank you.
Editat de zvonacfirst
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări