expert Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 Eu le-am descarcat pe ambele si merg, am si Addblok, mai greu insa trebuie dat de 3-4 ori pe descarca nelogat adica free..... imi poti trimite fisierul daca iti dau un email? am incercat asa cum ai zis tu si nu vrea sa descarce nimic! multumesc a mers descarcat din alta locatie! Link spre comentariu
PKP98 Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 Salutare! Vreau sa-i multumesc colegului nostru @ratza care ma ajuta sa inteleg despre ce este vorba,respect. Am vazut greseala cu timpul ,trebuia sa scriu _delay_ms(250); ca sa am in total 500ms,dar nu-i problema. Alta este si anume PORTB |=0b0000001; bara aceea este "sau",nu? Si ineamna ca doar pinul 0 din port B este high ,restul cum sunt ,cum adica sunt neafectati? PORTB &= ~0b00000001; Si aici la fel,cum e? &=Si ,iar ~=NOT ,cum fac sa imi dau seama ce fac acesti & | ~ ,de la informatica stiu ca 01010&01110=01010 01010|01110=01110. Am citit intr-o carte ceva de genu DDRB=32 sau 7 ,adica un numar natural, ce inseamna? In carte nu explica. Link spre comentariu
ratza Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 (editat) AND, OR, XOR şi NOT sînt operaţii logice, exact cele folosite la porţile logice. Pe pagina anterioară ai semnificaţia lor, o mai trec o dată aici ca să nu mai dai pagina înapoi (ştiu din experienţe recente cum e să uiţi unde ai rămas). AND & -> 0&0=0; 0&1=0; 1&0=0; 1&1=1 (rezultatul e 1 doar dacă ambii termeni sînt 1)OR | -> 0|0=0; 0|1=1; 1|0=1; 1|1=1 (rezultatul e 0 doar dacă ambii termeni sînt 0)XOR ^ -> 0^0=0; 0^1=1; 1^0=1; 1^1=0 (rezultatul e 1 doar dacă termenii sînt diferiţi)NOT ~ -> ~0=1; ~1=0 (rezultatul e opusul) Să presupunem că port B are valoarea iniţială 0b11110000, adică: PB7 = 1 PB6 = 1 PB5 = 1 PB4 = 1 PB3 = 0 PB2 = 0 PB1 = 0 PB0 = 0 <-- aici e ledu' nostru, numai cu el avem treabă. Să zicem că vrei să aprinzi ledul: PORTB |= 0b00000001 => PORTB = PORTB | 0b00000001 => PORTB = 0b11110000 | 0b00000001 => PORTB = 0b11110001 După care vrei să-l stingi (PORTB are valoarea de sus): PORTB &= ~0b00000001 => PORTB = PORTB & 0b11111110 => PORTB = 0b11110001 & 0b11111110=> PORTB = 0b11110000 Ledul reprezină bitul colorat cu roşu, cei coloraţi cu albastru au alte functionalităţi de care nu ne pasă. După cum vezi, toţi ceilalţi biţi şi-au păstrat valoarea, nefiind afectaţi absolut deloc, însă ledul se aprinde şi se stinge fără probleme. Referitor la DDRB = 32, e preferabil să foloseşti valori în hexa, care sînt extrem de uşor de transpus în binar. 32 devine 0x20 sau 0b00100000. 7 devine 0x07 sau 0b00000111. 133 devine 0x85 sau 0b10000101. EDIT: Mi-am corectat cretinismele scrise. Editat Ianuarie 27, 2016 de ratza Link spre comentariu
PKP98 Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 Multumesc mult ,cred ca am inteles AND & -> 0&0=0; 0&1=0; 1&0=0; 1&1=0 1&1=nu este 1. PORTB &= ~0b00000001 => PORTB = PORTB | 0b11111110 => PORTB = 0b11110001 | 0b11111110=> PORTB = 0b11110000 pot sa o scriu si asa PORTB &= ~0b00000001 =>PORTB=PORTB & 0b11111110=> PORTB =0b11110000 adica sa nu mai folosesc de 2 ori OR Multumesc ca va bateti capul cu mine. Link spre comentariu
ratza Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 Pff, vezi ce înseamnă să iau cu copy-paste o linie fără să verific? Eşti mai atent decît mine. Link spre comentariu
PKP98 Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 Am inteles smecheria ,nu e greu . Multumesc mult mult! Link spre comentariu
PKP98 Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 (editat) Vreau sa fac ceva de genu https://www.youtube.com/watch?v=-LaSOtzyrP8 ,acolo e cu cd4017 eu vreau sa-l fac cu un atmega.Vreau ca primul LED sa se aprinda tot asa pana la ultimul ,apoi sa o ia de la capat. Codul: #include<avr/io.h> #include<util/delay.h> int main(void) { DDRB=0b11111111; PORTB=0b00000000; while(1) { PORTB=0b00000001; _delay_ms(100); PORTB=0b00000010; _delay_ms(100); PORTB=0b00000100; _delay_ms(100); PORTB=0b00001000; _delay_ms(100); PORTB=0b00010000; _delay_ms(100); PORTB=0b00100000; _delay_ms(100); PORTB=0b01000000; _delay_ms(100); PORTB=0b10000000; _delay_ms(100); } } E bun codul? Editat Ianuarie 27, 2016 de PKP98 Link spre comentariu
djvas Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 (editat) Mult mai simplu si elegant se scrie asha : #include<avr/io.h>#include<util/delay.h> char i;int main(void){DDRB=0b11111111;PORTB=0b00000000; while(1) { for (i=0; i<8;i++) { PORTB=1 <<i; delay_ms(100); } }} Editat Ianuarie 27, 2016 de djvas Link spre comentariu
mars01 Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 Eu as face ceva de genul: while (1) { for (int i = 0; i<8; i++){ PORTB = PORTB << i; _delay_ms(100); }} Pare OK si varianta ta daca vrei sa mearga numai intr-o directie, dar de ce nu il testezi in Proteus? Daca vrei Knight Rider, adica de la bit0 la bit7 si de la bit7 la bit0 atunci ar fi asa: while (1) { for (int i = 1; i<8; i++){ PORTB = PORTB << i; _delay_ms(100); } for (int i = 6; i>=0; i--){ PORTB = PORTB << i; _delay_ms(100); }} Adaugi restul de program cum le-ai scris si tu. Link spre comentariu
MifTy Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 nu ai un mega8, un usbasp, şi un breadboard, să încerci? later: da rapizi aţi mai fost! )))))) Link spre comentariu
PKP98 Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 (editat) Nu am usbasp ,am vorbit cu un coleg de pe forum si a zis ca aduce peste o saptamana si nu am nici atmega8. EDIT:Da mult mai simplu cum ati spus mai sus,dar sunt la inceput . Editat Ianuarie 27, 2016 de PKP98 Link spre comentariu
MifTy Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 mda, până atunci nu-ţi rămâne decât simularea! cunosc sentimentul! Link spre comentariu
PKP98 Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 cunosc sentimentul! Cred ca pana vine usbasp-ul fac spume la gura si sa zic ca imi vine si usbasp-al ,dar nu am atmega Link spre comentariu
mars01 Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 (editat) Nu am verificat dar se pare ca poti folosi un Arduino ca si programator ISP de controlere AVR. http://www.instructables.com/id/Turn-Your-Arduino-Into-an-ISP/ Iar Arduino le gasesti peste tot (poti folosi si un Arduino Mini sau Micro = ieftine). Editat Ianuarie 27, 2016 de mars01 Link spre comentariu
PKP98 Postat Ianuarie 27, 2016 Partajează Postat Ianuarie 27, 2016 (editat) Cred ca merge,dar nu am nici Arduino . Abia am inceput ,acum 4-5 zile am inceput sa citesc cate ceva ,sa ma mai uit la un videoclip,o sa imi iau si un Arduino cand o sa mai strang niste bani. Editat Ianuarie 27, 2016 de PKP98 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