Sari la conținut

Postări Recomandate

Si F-urile cum se rescriu??? pur si simplu pui noul program peste cel vechi sau trabuie sa il stergi???

 

Si cam care este memoria media a PIC-urilor????

Link spre post
Distribuie pe alte site-uri
  • Răspunsuri 45
  • Created
  • Ultimul Răspuns

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Cu orice familie de uC lucrezi primul lucru este sa download-ezi datasheet-ul de pe site-ul producatorului. Acest datasheet face mai mult decat un manual sau carte legata de uC, acolo ai toate datele necesare, legate de memorii, mnemonici, interfatari, capabilitati, etc...

Inainte de a rescrie un uC trebuie strers, uita-te la optiunile programului care il folosesti.

Sfatul meu este urmatorul: inainte de programator fa-ti rost de datasheet si studiaza-l. Download-eaza AVR Studio 4 (AVR) sau Mplab (PIC) si incearca sa scrii niste programele ca sa te familiarizezi cu limbajul si cu componentele hardware ale uC, dupa care simuleaza-l cu acelasi program pana cand fuctioneaza. Abia dupa aceea construieste-ti programatorul. Daca sari peste etape poti bloca uC facandu-l inutilizabil. uC au niste "fuse bits" care daca nu stii sa le folosesti poti sa-l blochezi (protectie la citire/scriere). De asemenea de la acesti fuse bits setezi oscilatorul precum si alte componente...

Link spre post
Distribuie pe alte site-uri

Dar ce limbaj de programare foloseste Mplab-ul??? Adica daca este un limbaj de programare asemenator cu cele in care se fac programele de computer.

Eu stiu programare (nu foarte multa, dar decat de loc...) in BASIC, mai precis QuickBASIC. Stie cimava cu compliator pentru el? Daca nu, niste tutoriale pe net despre limbajul lui Mplab are cineva???

 

Ma-m uitat prin datasheet-uri si unele microcontrollere aveau un criteriu, tipul memoriei mai precis, flash. Ce represinta el???

Link spre post
Distribuie pe alte site-uri

Din pacate pt. mine tu studiezi PIC-urile. Mplab-ul foloseste in primul rand limbajul de asamblare, nu stiu daca are integrat altceva. Trebuie sa fie pt. PIC-uri si complilatoare de Basic dar nu stiu cum se numesc. Daca ii dai cautare "pic basic compiler" ai mai multe optiuni. Tutoriale de Mplab ti-a aratat Donpetru aici: http://www.tehnium-azi.ro/index.php?s=&am...post&p=6248 .

uC au in general 3 tipuri de memorii: flash, RAM, si EEPROM. Flash este memoria care se inscrie cu programatorul, memoria program. Deci, practic daca scrii un program pt. un uC acesta il programezi in memoria flash.

Link spre post
Distribuie pe alte site-uri

Dar spuneti-mi despre programarea Amtelurilor sau AVR-urilor. Sunt asemenatoare ca algoritmi si nu imi strica niciodata. Si in plus, am citit si despre Atmeluri si AVR-uri, asa ca ma descurc. Nu conteaza ca e PIC, Atmel sau AVR. Ma intereseaza sa le cunosc pentru niste plicatii cu microcontrollere. Am inceput cu PIC-urile pentru ca am avur ceva prin bibilioteca. Acum am mai gasit niste materiale si am incput sa le studiez si pe celelalte.

Asa ca imi puteti spune niste notiuni de programare.

Link spre post
Distribuie pe alte site-uri

La AVR te pot ajuta in limbaj de asamblare.

Faci o confuzie,

am citit si despre Atmeluri si AVR-uri

Atmel este firma producatoare, AVR-ul este doar una din multele categorii de componente fabricate, tot asa cum Microchip produce PIC-ul.

Link spre post
Distribuie pe alte site-uri

Imi cer scuze de confuzie.

Ma puteti ajuta spunandu-mi in primul rand ce limbaj folositi pentru compliator.

La programare ma mai descurc, stiu un limbaj, iar la celelalte trabuie sa schimb doar instructiunile si expresiile, nu e mare lucru.

Asa ca va rog sa luati cateva instructiuni, nu pe toate odata, ca sunt zeci, cateva la care sa imi dati un format general, si sa imi spuneti ce stiu sa faca.

 

P.S. Poate faceti un articol in revista despre limbajul de programare folosit de dv. la microcontrollere.

Link spre post
Distribuie pe alte site-uri
Imi cer scuze de confuzie.

Ma puteti ajuta spunandu-mi in primul rand ce limbaj folositi pentru compliator.

La programare ma mai descurc, stiu un limbaj, iar la celelalte trabuie sa schimb doar instructiunile si expresiile, nu e mare lucru.

Asa ca va rog sa luati cateva instructiuni, nu pe toate odata, ca sunt zeci, cateva la care sa imi dati un format general, si sa imi spuneti ce stiu sa faca.

 

Dl.adry, vedeti PDF-urile atasate mai jos, in special avr instruction set:

avr_instructionset.pdf

cvavrman1.pdf

cvavrman2.pdf

P.S. Pentru programarea propiu-zisa a AVR-urilor utilizati spre exemplu programul AVRStudio si o placa pt programare (dezvoltare).

Link spre post
Distribuie pe alte site-uri

Multumesc, ma ajuta, dar totusi, nu e ceea ce caut.

Imi trebuie (dar aici cel mai bine e sa-mi spuna o persoana, nu un PDF) un format general al unei instructiuni, si o definitie a ei, ca de-aici ma descurc eu mai departe.

Link spre post
Distribuie pe alte site-uri
Multumesc, ma ajuta, dar totusi, nu e ceea ce caut.

Imi trebuie (dar aici cel mai bine e sa-mi spuna o persoana, nu un PDF) un format general al unei instructiuni, si o definitie a ei, ca de-aici ma descurc eu mai departe.

 

La primul link, "avr instructionset" exact asta ai. Toate instructiunile si modul in care sunt folosite. Maine am sa-ti dau exemplu un program explicat precum si algoritmul folosit, program care este parte componenta a tutorialului la care lucrez.

Link spre post
Distribuie pe alte site-uri

Am sa-ti dau un exemplu foarte simplu de programare. Sa zicem ca ai uC ATmega8535 si vrei sa setezi portul B ca si iesire, pt. comanda unor LED-uri. Pt. aceasta trebuie sa setezi "1" logic in toti bitii registrului DDRB (daca pui "0" atunci sunt intrare). Registrul DDRB are 8 biti, adica:

 

DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0

 

11111111 binar este FF hexa. Nu poti direct sa folosesti instructiuni ca sa introduci FFh in DDRB, dar se rezolva din doua comenzi:

 

ldi R16,$FF ;folosesti registrul R16, care acum are valoarea FFh adica 11111111b, instructiunea "ldi" inseamna "load imediatly"

out DDRB,R16 ;copiezi FFh din R16 in DDRB, acum portul B este setat ca si iesire.

 

Hexa inseamna sistemul hexazecimal, o conversie usoara binar-hexazecimal poti face dupa tabelul de mai jos:

 

0000 - 0

0001 - 1

0010 - 2

0011 - 3

0100 - 4

0101 - 5

0110 - 6

0111 - 7

1000 - 8

1001 - 9

1010 - A

1011 - B

1100 - C

1101 - D

1110 - E

1111 - F

 

Tabelul nu trebuie sa-l inveti pe de rost, poti sa-l scrii cand vrei, daca te uiti prima coloana incepe cu 8 de 0 dupa care sunt 8 de 1.

col. 2: 4 de 0 si 4 de 1

col. 3: 2 de 0 si 2 de 1

col. 4: 1 de 0 si 1 de 1

 

De exemplu, daca vrei ca la portul B sa fie iesiri doar pinii 7 si 0 atunci in DDRB trebuie sa inscrii 10000001, care daca-l imparti in doua ai 1000(8) 0001(1), deci dupa tabel 81h.

 

ldi R16,$81

out DDRB,R16

Link spre post
Distribuie pe alte site-uri

Am cateva intrebari.

1. orice pin al microcontrollerului poate fi setat ca intrare/iesire???

2. porturile sunt pinii

3. ce sunt registrii

 

Ca sa va usurez munca, nu-mi mai spuneti de conversii ca ma descurc, spuneti doar ca x in binar face y in hexazecimal

Link spre post
Distribuie pe alte site-uri

1 - Doar pinii porturilor, sunt notati in datasheet PA0 - PA7 sau PB0 - PB7, etc... Porturile au si functii auxiliare, de exemplu pe portul B se gasesc MOSI, MISO, SCK care se folosesc pt. ISP (In System Programming). Pinii de alimentare, cristal de cuart, reset, etc... (ma refer la ATmega8535) sunt dedicate acestor scopuri si nu au alte functii.

 

2 - Poti sa spui si asa.

 

3 - Registrii sunt locatii din memoria RAM a uC, pot fi de uz general (de la R0 la R31), dupa care urmeaza registrii cu functii speciale (SFR). Cu acestea o sa lucrezi mult (cam 90-95% din program) deci SFR trebuie sa-i cunosti bine.

 

Prima imagine atasata este cu harta memoriei la uC ATmega8535 si a doua cu SFR. La SFR observi la adresa 17h registrul DDRB, cel prezentat in exemplul din postul anterior.

 

os969v.jpg

j79l7c.jpg

Link spre post
Distribuie pe alte site-uri

Pinul Reset ce face, reproneste programul???

de ce ati scris FFh, cand numarul pe care trebuiea sa il introduceti era 111111111 si care era FF in hexazecimal?

 

Acum sa vad daca am inteles bine. Pentru ca portul x al microcontrollerului AtMEGA8535 sa fie port de iesire, trebuie sa am 1 in toti registrii sai. El are 8 registrii, dar ne trebuie in hexazecimal, 11111111 fiind FF.Incarcam in memorie cu instructiunea ldi, care are formatul general LDI registru, $var, unde registru este registrul de memorie unde incarcam var.

out il folosim pentru a "elimina" curentul prin port, cu formatul general out port, registru, unde port este numele portului, iar registru este registru de memorie de unde ia datele.

 

DDRB inseamna portul B cu memorie DDR???

Si fiecare port corespunde unui pin, sau asta o setez eu???

 

Am vazut pe net un articol despre un sistem de porogramare a unui traseu pentru un robot. Daca as vrea sa il realizez, probabil ca imi va trebui mai multa memorie FLASH decar are un uC. Exista vreo cale s-o obtin???

Link spre post
Distribuie pe alte site-uri

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
  • Navigare recentă   0 membri

    Nici un utilizator înregistrat nu vede această pagină.




×
×
  • Creează nouă...

Informații Importante

Folosim cookie-uri și tehnologii asemănătoare pentru a-ți îmbunătăți experiența pe acest website, pentru a-ți oferi conținut și reclame personalizate și pentru a analiza traficul și audiența website-ului. Înainte de a continua navigarea pe www.tehnium-azi.ro te rugăm să fii de acord cu: Termeni de Utilizare.

ATENTIE !!! Functionarea Tehnium Azi depinde de afisarea de reclame.

Pentru a putea accesa in continuoare site-ul web www.tehnium-azi.ro, va rugam sa dezactivati extensia ad block din browser-ul web al vostru. Dupa ce ati dezactivat extensia ad block din browser dati clic pe butonul de mai jos.

Multumim.

Apasa acest buton dupa dezactivarea extensiei Adblock