Ova shema sa pocetka teme:
http://forum.yu3ma.net/attachment.php?aid=26311
moze da radi dobro bez problema stim sto ima jedna "koska" koja ce vas naterati da drugacije napisete program koji pak ne moze na drugim mestima/MCU da se iskoristi tek tako.
Problem je u portu, u shemi je iskoriscen tacno/kompletno jedan 8bit PORT-D koji vozi segmente, to je sve u redu i slaze se posto u programu mozemo da upisemo jedan 8bit podatak kad god hocemo i da ta operacija ne pravi nikakvih problema. Tako se onda uradi program i sve ok ...
Medjutim, ako se bilo kojim slucajem segmenti ne nalaze kompletno na jednom celom portu sto moze u vecini slucajeva da se dogodi nego na primer pola na PORTA, pola na PORTB, selekti mesani sa B i C, ili recimo port nije vise samo 8bit velicine (shirine) nego 16 ili 32bit kao na drugim kontrolerima, ovaj predhodno spomenuti program vise ne moze nikako da radi i moze da napravi ozbiljne probleme koje pocetnici jako tesko mogu da odklone ako se neke stvari ne postave na svoje mesto a to je da u interaptu NEMA read-modify-write operacija nad portovima jer moze prouzrokovati raise-condition i napravi kompletan zaglup, umesto toga se koristi samo operacije u jednom smeru, samo se pise na PORTx i to bit-po-bit (nozica po nozica). Tu se iskoriste low-level operacije za pisanje i to je efektan nacin da se taj konkretan programski zadatak odradi. Zato treba tablica, zato switch/case, makro ...
PS: Ne radim aktivno sa ATMega, ne znam da li moze da se upise jedan bit na port bez read-modify-write? Ako to ne moze, ovo moje pisanije onda ne vazi za njega, to je za ARM ...
http://forum.yu3ma.net/attachment.php?aid=26311
moze da radi dobro bez problema stim sto ima jedna "koska" koja ce vas naterati da drugacije napisete program koji pak ne moze na drugim mestima/MCU da se iskoristi tek tako.
Problem je u portu, u shemi je iskoriscen tacno/kompletno jedan 8bit PORT-D koji vozi segmente, to je sve u redu i slaze se posto u programu mozemo da upisemo jedan 8bit podatak kad god hocemo i da ta operacija ne pravi nikakvih problema. Tako se onda uradi program i sve ok ...
Medjutim, ako se bilo kojim slucajem segmenti ne nalaze kompletno na jednom celom portu sto moze u vecini slucajeva da se dogodi nego na primer pola na PORTA, pola na PORTB, selekti mesani sa B i C, ili recimo port nije vise samo 8bit velicine (shirine) nego 16 ili 32bit kao na drugim kontrolerima, ovaj predhodno spomenuti program vise ne moze nikako da radi i moze da napravi ozbiljne probleme koje pocetnici jako tesko mogu da odklone ako se neke stvari ne postave na svoje mesto a to je da u interaptu NEMA read-modify-write operacija nad portovima jer moze prouzrokovati raise-condition i napravi kompletan zaglup, umesto toga se koristi samo operacije u jednom smeru, samo se pise na PORTx i to bit-po-bit (nozica po nozica). Tu se iskoriste low-level operacije za pisanje i to je efektan nacin da se taj konkretan programski zadatak odradi. Zato treba tablica, zato switch/case, makro ...
PS: Ne radim aktivno sa ATMega, ne znam da li moze da se upise jedan bit na port bez read-modify-write? Ako to ne moze, ovo moje pisanije onda ne vazi za njega, to je za ARM ...