Sari la conținut
ELFORUM - Forumul electronistilor

Probleme de incepatori


Postări Recomandate

Da, exact asa.

 

Bitii 11..8 ii "separi" cu operatii pe bit:

dim val12bit as word 'valoare de incarcat in dacdim comanda as byte 'comanda (4 biti)dim array8bit(2) as byte 'variabilele de trimisdim temp1, temp2 as byte 'ajuta la calculecomanda = &b1100 'nu stiu daca exista, e pe post de exemplu val12bit = &b1000_00000000temp1 = SHIFT val12bit, right, 8 'muti val16bit la dreapta cu 8 biti => temp1=&b1000temp2 = SHIFT comanda, left, 4 'temp2=&b11000000array8bit(0) = temp2  + (temp1 AND &HF) '=> &b11001000

Sper ca n-am scris prea multe prostii, sintaxa de Bascom nu mi-e prea cunoscuta.

Link spre comentariu

Multumesc Liviu M.

 

Am tot recitit de `nspe ori ce mi-ai scris, am rascolit prin helpul de bascom, si am scris un cod functional, face exact ce imi doream eu. Pana una alta am si priceput in totalitate cum functioneaza, si cred ca asta e cel mai mare castig al meu :)

 

Imi cer scuze pentru ordonarea haotica din cod, insa la ora asta nu mai am rabdare sa il cosmetizez:

dim val12bit as word                                         'valoare de incarcat in dacdim comanda as byte                                          'comanda (4 biti)dim array8bit(2) as byte                                     'variabilele de trimisDim Temp1 As Byte                                            'ajuta la calculeDim Temp2 As ByteDim Array(2) As ByteDim Val13bit As Word                                         'acelasi lucru cu val12bitComanda = &B01000000                                        'setez normal mode pt DACVal12bit = &B011100010010Val13bit = Val12bitDoComanda = Comanda And &HF0                                  'extrag doar bitii 7-4,  3-0 nu conteazaLocate 1 , 1Lcd Bin(comanda)Wait 2Shift Val12bit , Right , 8                                  'bitii 11-8 ii mut la dreapta cu 8 si devin bitii 3-0.Temp2 = Val12bitLocate 2 , 1Lcd Bin(temp2)Wait 2Array(2) = Comanda + Temp2                                  'pun bitii 7-4 de la comanda si bitii 3-0 de la val12bit shiftataLocate 3 , 1Lcd Bin(array(2))                                           ' afisez noua combinatie 7-0Wait 2Val13bit = Val13bit And &HFF                                'extrag bitii 7-0 din variabila de 16 biti, bitii 15-8 devin 0Array(1) = Val13bitLocate 3 , 10Lcd Bin(array(1))Spiout Array(2) , 2                                         'trimit la DAC ceea ce-si doreste: o combinatie valida :)Do                                                          'aici se opreste secventa (intra in bucla infinita)LoopLoop

Maine am sa cosmetizez secventa, scot ce nu am nevoie (afisarile pe lcd) si o adaug la proiectul pe care il visez. :)

 

Mersi inca o data de ajutor.

Link spre comentariu

Salut,

 

Da, am testat pe DAC si Chip Selectul sta in 0 pana se transmit cei doi bytes.

 

Mi-am facut sa reglez Vout la DAC dintr-un encoder, iar mai jos in poze se vede cum ma plimb de la 0 la 5V si invers.....

 

post-224932-0-44284300-1432976091_thumb.png

 

post-224932-0-94213200-1432976102_thumb.png

 

Apropo, Vout il citesc si cu ADC-ul pe 10biti din uC, si tot la al 4-lea bit incrementat pe DAC, se incrementeaza cu 1 si pe ADC....exact cum ar trebui. :)

Editat de mariuss_suciu
Link spre comentariu
  • 2 săptămâni mai târziu...

Recunosc ca pentru mine engleza are inca multe taine, ca atare si intelesul datasheetului uneori e greoi.

 

Am tot intrat prin DS lui Atmega 162.

 

Ma intereseaza daca vreo setare de lockbit previne scrierea de catre bootloader sau de flash in eeprom. Asta fara a afecta rescrierea ISP ulterioara.

 

Ce am observat, ca updateurile de flash sint impiedicate de o setare C8h (11001000), adica doar BLB02 neprogramat.

Probabil ar fi acelasi lucru cu 08h, 00001000, pt ca primele doua pozitii nu sint folosite la Atmega162.

Link spre comentariu
  • 3 luni mai târziu...
Vizitator Tarola Alexandru

Va salut!

Se da urmatorul integrat, ce contine controlerul  atmega48pa, doua motoare servo si firele aferente (alimentare, alimentare motor si antena) recuperat de la un planor.

 

http://imgur.com/a/kGIxf

 

Citesc de vreo 2 zile si am ramas la aceste 3 pagini cu documentia aferenta:

http://www.atmel.com/Images/8161s.pdf

http://www.recursion.jp/prose/avrcdc/cdc-232.html#schematic

http://tinkerlog.com/2009/06/18/microcontroller-cheat-sheet/

 

Doresc sa-l programez si eventual daca se poate sa-l controlez manual din pc.

Problema este ca, nu stiu unde sa ma "leg", pentru comunicatia dintre el si com-ul pc-ului.

Se poate sau trec la altceva?

Multumesc anticipat.

Editat de Tarola Alexandru
Link spre comentariu

Nu vei putea programa microcontroller-ul doar conectandu-l prin pinii Rx-Tx la COM-ul PC-ului (conexiunea este valabila numai pentru comunicatie seriala sau, daca chipul are bootloader, si pentru incarcarea unui firmware). Daca doresti sa inscrii un nou firmware in microcontroller vei avea nevoie de un programator (gasesti pe forum sau iti construiesti).

Link spre comentariu

Salutare,

 

Am inceput sa lucrez la o sursa la care voi folosi doua DAC-uri pentru control U si I, dar am ajuns intr-un punct in care m-am "blocat".

Pentru reglajul tensiunii si curentului, voi folosi un Encoder, insa ca sa nu "bobinez" de la 0 la 4096 din degete, m-am folosit de butonul de pe Encoder pentru a "activa" reglajul de tip fine = 1x si coarse = 25x. Aceasta parte de cod functioneaza minunat (posturile #784, #782, etc), insa am ramas fara pini liberi la uC si mai am nevoie de un buton din care sa trec de pe reglajul tensiunii pe reglajul curentului, iar acum ma gandeam ce solutie ar fi ca in momentul in care apas scurt pe butonul de pe Encoder sa mi se activeze reglajul fine/coarse, iar daca tin apasat sa zic 2 secunde, sa treaca din reglaj tensiune in reglaj curent si invers. Pentru aceasta trecere voi folosi o variabila ce poate lua doua valori: 0 = reglaj tensiune, 1 = reglaj curent.

 

Dati-mi va rog un punct de plecare pentru aceasta problema.

 

Multumesc,

Marius.

 

 

edit: Am uitat poza. Butonul de pe Encoder este conectat la INT0 pe Atmega8

post-224932-0-60076800-1444332626_thumb.png

Editat de mariuss_suciu
Link spre comentariu

Am vrut sa programez un mega328 cu usbasp si softul AVRDUDDES si imi da urmatoarea eroare :

 

avrdude.exe: set SCK frequency to 1500000 Hzavrdude.exe: error: programm enable: target doesn't answer. 1avrdude.exe: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check.avrdude.exe done.  Thank you.

 

am instalat driverul corect pentru usbasp (windows-ul il vede)

am cautat pe net si am gasit sute de asfel de erori

care este cel mai prietenos soft care lucreaza mai bine cu programatorul usbasp

am incercat mai multe programe si la toate da aceeasi eroare

nu am mai programat pina acum mc. atmega

multumiri cu anticipatie

Link spre comentariu

Alătură-te conversației

Poți posta acum și să te înregistrezi mai târziu. Dacă ai un cont, autentifică-te acum pentru a posta cu contul tău.
Notă: Postarea ta va necesita aprobare moderator înainte de a fi vizibilă.

Vizitator
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Răspunde la acest subiect...

×   Alipit ca text avansat.   Restituie formatare

  Doar 75 emoji sunt permise.

×   Linkul tău a fost încorporat automat.   Afișează ca link în schimb

×   Conținutul tău precedent a fost resetat.   Curăță editor

×   Nu poți lipi imagini direct. Încarcă sau inserează imagini din URL.

×
×
  • 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