vijelie02 Postat Iunie 28, 2020 Partajează Postat Iunie 28, 2020 Si cum sunt setati fuse bitii in ambele cazuri 8Mhz si 1Mhz? Link spre comentariu
zvonacfirst Postat Iunie 28, 2020 Partajează Postat Iunie 28, 2020 - Am softul in format ino - il deschid cu Arduino IDE si setez urmatoarele: - apoi uploadez softul folosind programatorul USB-ASP Cand setez 8MHz in IDE nu se seteaza automat si fusebits? Link spre comentariu
cimitavita Postat Iunie 28, 2020 Partajează Postat Iunie 28, 2020 am patit si eu asa cu atmega32. Problema era de la fuse. Seteaza fuse pe oscilator extern peste 8MHz si o sa fuga mai repede. Link spre comentariu
zvonacfirst Postat Iunie 28, 2020 Partajează Postat Iunie 28, 2020 Am deja cablajul si nu a fost prevazut oscilator extern. Eu sunr nedumerit ca merge mai rapid cu oscilator intern de 1MHz fata de oscilator intern de 8MHz. Link spre comentariu
cimitavita Postat Iunie 28, 2020 Partajează Postat Iunie 28, 2020 vezi in datasheet la paginile 43 (bitii CKSEL si CKDIV8 de pe la fuse) si pe la pagina 45 vezi System Clock Prescaler - CLKPR din registri. Atmega328 are un ceas mai aiurea decat Atmega32. Link spre comentariu
zvonacfirst Postat Iunie 28, 2020 Partajează Postat Iunie 28, 2020 Multumesc dar nu ma bag sa modific manual atat timp cat nu am inteles cum functioneaza fusebits. Mi-e teama ca blochez uC-ul. Singura modificare as fi facut-o la CKDIV8 debifand optiunea dar nu am inteles ce rol are Divide clock by 8. Adica daca il bifez imparte frecventa la 8 si lucreaza la 1MHz, iar daca il debifez lucreaza la 8MHz? Link spre comentariu
cimitavita Postat Iunie 28, 2020 Partajează Postat Iunie 28, 2020 (editat) initial el vine cu CLKPS3:CLKPS0 = 0000. Adica divizeaza clk de la oscilator cu 1. Dar poti diviza clk cu 2 pana la 256 (pagina 47 in datasheet). The CKDIV8 Fuse determines the initial value of the CLKPS bits. If CKDIV8 is unprogrammed, the CLKPS bits will be reset to “0000”. If CKDIV8 is programmed, CLKPS bits are reset to “0011”, giving a division factor of 8 at start up. This feature should be used if the selected clock source has a higher frequency than the maximum frequency of the device at the present operating conditions. Note that any value can be written to the CLKPS bits regardless of the CKDIV8 Fuse setting. The Application software must ensure that a sufficient division factor is chosen if the selected clock source has a higher frequency than the maximum frequency of the device at the present operating conditions. The device is shipped with the CKDIV8 Fuse programmed. Deci se pare ca pana la urma tot la fuse ajungi. CKSEL3...0 trebuie sa fie 0010 pentru oscilator intern 8MHz (pagina 43 in datasheet). Depinde si de CKDIV8 Fuse. CKDIV8 e in low fuse, bitul 7 si ar trebui sa fie 0. Tot in low fuse mai gasesti CKSEL3...0 (bitii 3...0) si trebuie sa fie 0010. Nu e neaparat nevoie sa te apuci sa scrii fuse. Se pot doar citi si vezi din datasheet ce si cum e cu ele. datasheetul il gasesti la https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061A.pdf Editat Iunie 28, 2020 de cimitavita Link spre comentariu
spinach Postat Noiembrie 21, 2023 Partajează Postat Noiembrie 21, 2023 Despre scriere ciclica a unui bit in port : cum credeti ca este mai bine ? -var1 : sa il supascriem permanent -var2: sa controlam starea bitului si sa il scriem daca este cazul Link spre comentariu
cimitavita Postat Noiembrie 21, 2023 Partajează Postat Noiembrie 21, 2023 Verificarea octeților înainte de a fi înscriși se poate face pentru EEPROM care are un număr limitat de înscrieri. Dacă octetul ce urmează a fi scris este același cu octetul din EEPROM, este bine să sari peste operația de înscriere EEPROM. În schimb, biții corespunzători porturilor (ieșire, intrare și DIR) se găsesc în SRAM, așa că numărul înscrierilor în aceste locații este nelimitat. Și e o diferență între locația unde înscrii bitul de ieșire și starea pinului de ieșire. Starea pinilor de ieșire se sincronizează cu locațiile lor corespunzătoare din SRAM pe durata unui ciclu CLK. Ca să citești starea unui pin, indiferent dacă acesta este setat pe intrare sau ieșire, o poți face prin locațiile PINx dar numai după ce în prealabil le înscrii cu 0xFF. Dacă un bit din PINx este 0, pinul corespunzător lui, nu va fi citit. Link spre comentariu
va_cristi Postat Noiembrie 21, 2023 Partajează Postat Noiembrie 21, 2023 (editat) Cel mai bine este sa folosesti functia " update() ". Editat Noiembrie 21, 2023 de va_cristi Link spre comentariu
spinach Postat Noiembrie 21, 2023 Partajează Postat Noiembrie 21, 2023 (editat) Cred ca nu am fost inteles ; Editat Noiembrie 21, 2023 de spinach Link spre comentariu
spinach Postat Decembrie 9, 2023 Partajează Postat Decembrie 9, 2023 Detaliez: var 1.putem scrie pentru un pin in un port valoarea necesara ; la fiecare ciclu de program va fi rescris acel pin var 2.la fiecare ciclu de program , controlam starea pinului in port si daca nu este la valoarea dorita , scriem valoarea dorita in port. Cum ar fi mai bine ? Link spre comentariu
nico_2010 Postat Decembrie 9, 2023 Partajează Postat Decembrie 9, 2023 Citeste asta mai intai: https://microchipdeveloper.com/xwiki/bin/view/products/mcu-mpu/8-bit-avr/structure/ioports/ Link spre comentariu
spinach Postat Decembrie 9, 2023 Partajează Postat Decembrie 9, 2023 (editat) da, am citit. Parerea mea : -daca ne rezumam la prima varianta , se consuma putine cicluri clk ; la fiecare ciclu de program , se va suprascrie valoarea respectiva ; intrebare : cit timp rezista locatia unde se va scrie permanent ? se poate deteriora ? nu am gasit in documentatie referire de cit putem suprascrie -daca mergem pe a doua varianta , controlam starea prin citire si apoi se da verdictul ; chiar daca nu se scrie nimic operatia de contol si constatare consuma mai multe cicluri clk ; deci programul pe ansamblu devine mai lent . Editat Decembrie 9, 2023 de spinach Link spre comentariu
Bandi Szasz Postat Decembrie 9, 2023 Partajează Postat Decembrie 9, 2023 In afara de memoria flash in care se stocheaza softul si memoria EEPROM nu exista limita, cum a zis si colegul antemir spatiul de memorie al porturilor este una de tip RAM deci nu are nici o limita de scriere poti sa scrii cat vrei, cate cicluri de scriere si citire crezi ca se face in memoria de RAM la un PC si merge zeci de ani... 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