PKP98 Postat Februarie 26, 2016 Partajează Postat Februarie 26, 2016 Pai si daca am hex-ul de la un proiect gasit pe net,un hex anume nu conteaza,cum programez uc ? De exemplu am gasit un proiect pe net un voltampermetru cu atmega 8 si imi da hex-ul ,ce fac cu el? Multumesc. Link spre comentariu
Liviu M Postat Februarie 26, 2016 Partajează Postat Februarie 26, 2016 Pai nu ii dai "make all" (ca asta inseamna ca vrei sa compilezi si are nevoie de surse), ci ii dai "make program". Daca makefile e bine scris (controllerul care trebuie, programatorul care trebuie...), comanda asta "arde" hexul in controller. Citeste comentariile din makefile, ajuta. Uite ce scrie despre programare: # make program = Download the hex file to the device, using avrdude.# Please customize the avrdude settings below first! Link spre comentariu
PKP98 Postat Februarie 26, 2016 Partajează Postat Februarie 26, 2016 Am incercat doar cu "program" si tot nu merge din prima ,imi mai cere "main.eep" este un cod de genu ":00000001FF" ,l-am copiat si pe asta si dupa a mers ,am vazut ca acest fisier este la fel ,indiferent de proiect tot ":00000001FF" . E normal sa-mi ceara si acest fisier? Link spre comentariu
Liviu M Postat Februarie 26, 2016 Partajează Postat Februarie 26, 2016 Din cate zice gogu, .eep e "hex-ul" pentru eeprom. Asa ca depinde de proiect. Daca ai si fisier .eep (pentru eeprom) il treci in makefile, daca nu, nu. # Program the device - cu eeprom (.eep)program: $(TARGET).hex $(TARGET).eep $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)# Program the device - fara eepromprogram: $(TARGET).hex $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) Link spre comentariu
PKP98 Postat Februarie 27, 2016 Partajează Postat Februarie 27, 2016 Am inteles ,de aici era problema ,acum am sters acel rand "target.eep" din makefile si merge doar cu hex-ul . Multumesc mult @Liviu_M ,numai bine. Link spre comentariu
ionpat Postat Martie 27, 2016 Partajează Postat Martie 27, 2016 (editat) am si eu o intrebare: cu acest programator se poate programa atmega ? Editat Martie 27, 2016 de ionpat Link spre comentariu
nico_2010 Postat Martie 28, 2016 Partajează Postat Martie 28, 2016 Pare a fi o clona PICKit2. Este posibil cu unele artificii. Mai bine fa-ti un programator simplu, sau cumpara de la rubrica "Vanzari". Link spre comentariu
MifTy Postat Martie 29, 2016 Partajează Postat Martie 29, 2016 sau îl reprogramezi ca să-l transformi în OpenProg, şi aşa ai un programator bun şi de picuri, şi de avr-uri, şi pentru memorii seriale tip 24xxXX... e un topic de OpenProg pe aici, şi un proiect complet în secţiunea dedicată... Link spre comentariu
PKP98 Postat Martie 29, 2016 Partajează Postat Martie 29, 2016 Salutare! Vreau sa fac un program care sa contina un led si doua butoane.Led-ul clipeste la un interval de timp t,iar atunci cand apas un buton vreau ca t sa creasca cu 10 adica t+=10; ,iar cand apas al doilea buton t-=10; Asta este codul: #include <avr/io.h>#include <avr/interrupt.h>#include <util/delay.h>int t=50;ISR(INT0_vect){t+=10;}ISR(INT1_vect){t-=10;}int main(void){ DDRB=0xFF; //PortB ca iesire MCUCR|=(1<<ISC01)|(1<<ISC11); //declanseaza INT0 si INT1 pe tranzitie H-L GIMSK|=(1<<INT0)|(1<<INT1); //activeaza intreruperile pe INT0 si INT1 sei(); while(1) { PORTB=0b00000001; _delay_ms(t); PORTB=0; _delay_ms(t); } } Problema este ca atunci cand apas orice buton nu se intampla nimic ,led-ul continua sa licare normal. Ce problema are? Multumesc! Link spre comentariu
mars01 Postat Martie 29, 2016 Partajează Postat Martie 29, 2016 (editat) Declarati variabila t ca volatile. Este mai sigur asa, pentru ca variabila t este actualizata din rutinele de intreruperi. Declarati variabila t ca unsigned. Sau introduceti o protectie cat sa nu scada sub 0. Nu stiu acum daca functia _delay_ms protesteaza la valori negative dar un delay cu valoare negativa nu are nici-un sens, nu? Asigurati-va ca faceti debounce pentru switch-uri. Daca le-ati conectat pur si simplu pe pinii de intreruperi externe atunci vor fi probleme. Eu as fi folosit pini normali pentru switch-uri si un timer cu o intrerupere setata pe la 1ms unde sa faceti debouncing-ul pentru ambii pini setati ca intrari digitale. Daca totusi doriti sa folositi intreruperile externe atunci puneti cel putin un filtru pe fiecare pin cu switch, format dintr-un condensator de cca 10nF catre GND si un rezistor de cca 22K ... 47K catre VCC. Pinii cu intreruperi ar trebui sa aiba triggere schmidt pe intrari si impreuna s-ar putea sa creeze functionalitatea dorita. Verificati prin registri daca ati efectuat corect setarile. LE: O crestere/scadere de 10ms nu o sa o sesizati cu ochiul liber. De fapt doar un debounce dureaza cam 10ms. Modificati la 100 sau 250ms si apoi veti vedea daca sunt probleme de debounce, data de o functionare relativ arbitrara (debounce-ul este destul de random). Dupa ce vedeti ca totul este OK atunci scadeti la rezolutia la 10ms, daca aceasta este necesara in aplicatia dvs. Editat Martie 29, 2016 de mars01 Link spre comentariu
PKP98 Postat Martie 29, 2016 Partajează Postat Martie 29, 2016 Am reusit sa-l fac sa mearga ,am declarat variabila t (unsigned volatile t=200;) si am mai pus o conditie astfel incat t sa nu fie mai mic ca 50 si merge. Multumesc mult pentru ajutor. Link spre comentariu
cipry Postat Mai 19, 2016 Partajează Postat Mai 19, 2016 (editat) Salutare,sper ca postez unde trebuie.Am o oarecare problema cu programarea unui atmega8 ,am schema,procesorul si softul care este cu terminatia BIN.E prima oara cand vreau sa programez un atmel,am un programator usbasp ,ca si softuri Bascom si atmel studio,acestea nu accepta extensia BIN. Ma poate indruma cineva ,eventual daca trebuiesc setati fusebiti Editat Mai 19, 2016 de cipry Link spre comentariu
nico_2010 Postat Mai 20, 2016 Partajează Postat Mai 20, 2016 Din cate stiu, softul de programare al BASCOM accepta si fisiere .bin. Atmel Studio nu accepta astfel de fisiere dupa stiinta mea. Pentru a face conversia citeste te rog aici: http://atmel.force.com/support/articles/en_US/FAQ/Creating-bin-hex-file-from-elf-file-for-AVR-devices. Succes Link spre comentariu
PKP98 Postat Iulie 27, 2016 Partajează Postat Iulie 27, 2016 Salut! Am o intrebare.De exemplu declar o variabila unsigned int a; a poate sa ia valori de la 0 - 65535,adica 16 biti maxim. Initial a=0b1000000000000001; un numar pe 16biti in zecimal este 32769.Daca fac aceasta operatie a=a<<1; a o sa fie egal cu a=0b0000000000000010; sau a=0;? Multumesc! Link spre comentariu
mars01 Postat Iulie 27, 2016 Partajează Postat Iulie 27, 2016 (editat) Acesta este asa zisul fenomen de "roll over". Corect este prima varianta: a=0b0000000000000010; Shiftarea la stanga o pozitie este echivalent cu multiplicarea cu 2 a valorii intiale. Dar cum se trece peste valoarea maxima care poate fi stocata in acel tip de variabila (unsigned int), ramane doar rezultatul ce trece peste valoarea maxima 65535. 32769 * 2 = 65538. 65538 - 65536 = 2 adica scris in binar pe 16biti: 0b0000000000000010 Am scazut 65536 pentru ca sunt 65536 valori stocate pe 16biti (de la 0 la 65535). Editat Iulie 27, 2016 de mars01 Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum