DIY Electronic projects
ATmega168 7-Segmentni Display - Printable Version

+- DIY Electronic projects (https://forum.yu3ma.net)
+-- Forum: Mikrokontroleri (https://forum.yu3ma.net/forumdisplay.php?fid=52)
+--- Forum: Atmel (https://forum.yu3ma.net/forumdisplay.php?fid=55)
+--- Thread: ATmega168 7-Segmentni Display (/showthread.php?tid=1847)

Pages: 1 2 3 4 5 6 7 8 9 10


RE: ATmega168 7-Segmentni Display - Macola - 04-02-2018

Evo na primer, naš Mikikg "izuva" sa brzinom na STM32 pomoću bare-metal.


RE: ATmega168 7-Segmentni Display - vojinilic - 04-02-2018

(04-02-2018, 11:25 PM)Macola Wrote: Moćna je stvar asm i takođe je sjajno što se može miksovati i sa C i sa basic, kao i sa gomilom drugih jezika.

Jako pomogne kada je neophodno vreme i prostor.

Seti se pokojnog čika Zokija (Mikijevog oca) i njegovog savršenog komentara o PIC16F84: " tu ti uvek zatreba jedan pin više i još dva bajta " :-)

Kad već evociramo uspomene...

P.S.

Pisala su se čuda u 2 kilobajta i sa 4Mhz.

On me je i naucio asm i nacin razmisljanja u asm. Imao je cika Zoki mnogo lepih prica oko programiranja i razumevanja nacina funkcionisanja razniraznih periferija koje je uvek povezivao sa zivotom coveka. Jedan je cika Zoki bio. Imao sam tu cast da uz njega provedem dugi niz godina i da pokradem sve tajne zanata. On je bio definicija ucitelja, po svim kriterijumima.


RE: ATmega168 7-Segmentni Display - Macola - 04-02-2018

(04-02-2018, 11:27 PM)ronovar Wrote: Dok se vi zezate ja malo radio..isao gledad brojaca za segment i nije dobro incrementirao pa je stalno vrtilo loop na sva tri segmenta...evo stavio sam fiksni broj 123 pa evo kako je ispalo kada se uspori frekvencija:



E sad to kad se ubrza na nekvih 100Hz mislim da ce da bude bas neprimetno...sad mi nije jasno nebi li trebalo da:

svi segmenti svijetle a gasi se samo trenutni upise se vrijednost i upali se trenutni i tako u loop? Pa kada se gleda usporeno samo jedan display se uvijek gasi upisuje vrijednost i pali.

To mi jos nije jasno....koji je princip za to pali gasi...dali treba da kako je u animaciji sam dobio sa kodom ili mora da svi svijetle a samo jedan se gasi pali?

Vidi Ronovar,

Obično se za 7 segment displeje koji rade sa multipleksiranjem cifara za data (ono što će biti na jednom segmentu) zauzima jedan 8 bit port, a neki drugi pinovi, iz drugog porta, drajvuju zajedničke katode ili anode pojedinačnih cifara.

Plasiraš željenu cifru za jedan segment, istovremeno uključiš pin koji drajvuje tu cifru i cifra na kratko zasvetli sa željenim brojem. Potom ukineš pin koji drajvuje tu cifru i promeniš stanje na data portu na novo za sledeću cifru.
Potom uključiš pin za sledeću cifru...

Dakle, samo jedna cifra svetli u jednom trenutku ako nemaš neki eksterni latch koji bi ti čuvao njeno stanje. U stvari data port ti treba za novo stanje sledeće cifre.

Intenzitet svetla ti zavisi od struje LED i broja cifara koje multipleksiraš.
ako na primer imaš recimo 4 cifre, onda se pinovi za multipleks vrte u jednoj petlji koja ih šiftuje za po jedno mesto te svetlo jedne cifre onda traje 1/4 ukupnog vremena osvežavanja.

Kada se LED napajaju tipičnom strujom za kontinualni rad onda je svetlo displeja vrlo bledo. Na sreću, srednja struja LED je u slučaju 4 cifre 1/4 nominalne struje za kontinualni rad te imaš pravo povećati struje LED na 4 x veću, pod uslovom da ne premašiš maksimalnu pik struju iz DS za date LEd segmente.
Onda svetlo bude isto kao kad bi ih napajao kontinualno.

Kada imaš neke eksterne IC koji su sposobni da prime data i potom lečuju stnanje za dati segment, onda sve cifre svetle kontinualno jer uzimanje data od strane eksternog latch traje bukvaln jednu ivicu kloka i prekid se ne vidi na displeju.
Onda je filozofija LED 7 segment displeja drugačija i struje LED se računaju za kontinualni rad LED.


RE: ATmega168 7-Segmentni Display - vojinilic - 04-02-2018

(04-02-2018, 11:27 PM)ronovar Wrote: Dok se vi zezate ja malo radio..isao gledad brojaca za segment i nije dobro incrementirao pa je stalno vrtilo loop na sva tri segmenta...evo stavio sam fiksni broj 123 pa evo kako je ispalo kada se uspori frekvencija:



E sad to kad se ubrza na nekvih 100Hz mislim da ce da bude bas neprimetno...sad mi nije jasno nebi li trebalo da:

svi segmenti svijetle a gasi se samo trenutni upise se vrijednost i upali se trenutni i tako u loop? Pa kada se gleda usporeno samo jedan display se uvijek gasi upisuje vrijednost i pali.

To mi jos nije jasno....koji je princip za to pali gasi...dali treba da kako je u animaciji sam dobio sa kodom ili mora da svi svijetle a samo jedan se gasi pali?

Ovde si postavio jedan video.
http://forum.yu3ma.net/showthread.php?tid=1847&pid=83396#pid83396

Video koji si postavio je klasican primer kako NE TREBA raditi i multipleksirati displej. Pogledan 16:46. Tu pauziraj video, Na dipleju treba biti ispisano 0123. To je i ispisano, ali segmenti koji treba da su ugaseni tinjaju. To je primer loseg multipleksiranja i nacina aktivacije cifara. Evo algoritma:
1, Ukljuci tekucu cifru
2. Kada istekne tmr iskljuci tekucu cifru
3. postavi podatak za sledecu cifru
4. aktiviraj tu cifru

Znaci logika je prvo iskljuci, predji na sledece i ukljuci!!!


RE: ATmega168 7-Segmentni Display - Macola - 04-02-2018

Baš tako sam i pokušao da mu opišem, samo sam dodao i bitnu stvar oko struje za LED.


RE: ATmega168 7-Segmentni Display - vojinilic - 04-02-2018

Pisali smo u isto vreme, samo razlicite stvari. Inace, ovo sto je Macola pisao za struju je izuzetno bitno. To definise kada se prelazi sa MCU na drajvere u koliko max cifara moze da se drajvuje u jednom skenu. Ako se nesto prekoraci, crkavaju stvari.


RE: ATmega168 7-Segmentni Display - Macola - 04-03-2018

Baš tako! Data port se prostire na sve upotrebljene segmente a pinovi koji drajvuju zajedničke katode(ili anode) aktiviraju samo jednu cifru istovremeno.

Maksimalna struja po pinu nekog MCU mora da se ispoštuje. Na primer ako maksimalna struja pina iznosi 25mA, a za pojedinačne LED u jednoj cifri nam treba 10mA, onda sledi da direktno iz MCU ne možemo vući više od dve cifre jer bi smo prekoračili struju pina. Osim toga, kada zasvetli cifra sa brojem 8 sa tačkom onda nam ceo port vuče 80mA i to se takođe približava maksimalnim strujama Vdd ili Vss od MCU (to obavezno proveriti u DS kod direktne pobude 7 segment).

U slučajevima gde treba više cifara ili veće struje, koriste se eksterni tranzistori i za drajvovanje segmenata i za data liniju, a MCU upravlja samo njihovim bazama...


RE: ATmega168 7-Segmentni Display - gorankg - 04-03-2018

(04-02-2018, 11:27 PM)ronovar Wrote: Dok se vi zezate ja malo radio..isao gledad brojaca za segment i nije dobro incrementirao pa je stalno vrtilo loop na sva tri segmenta...evo stavio sam fiksni broj 123 pa evo kako je ispalo kada se uspori frekvencija:
Dobro je to sad. Obrati pažnju na to da ti u ovoj simulaciji nemaš NPN tranzistore na zajedničkim katodama displeja. Kad ih budeš imao, cifru ćeš uključivati logičkom jedinicom na odgovarajućem portu MCU a ne kao sada logičkom nulom.


RE: ATmega168 7-Segmentni Display - Želja - 04-03-2018

Treba napomenuti i low current 7 segmentne displeje sa svega 2mA.
napr. https://www.vishay.com/docs/83123/tdsl51.pdf

Takva 3 displeja ja sam kačio direktno na pinove MCU bez dodatnih tranzistora.
Čak i sa strujom manjom od 2mA (limitiranom) i crvenom pleksi maskom to se jako lepo vidi !

Pozz


RE: ATmega168 7-Segmentni Display - gorankg - 04-03-2018

U Saudijskoj Arabiji je iračka raketa (sovjetski SKAD) proletela kroz protivraketnu odbranu i pobila 30-tak američkih vojnika. Američki sistem Patriot nije presreo raketu jer je imao grešku u softveru. Greška se manifestvovala tek nakon dugo vremena u stalnom pogonu. Razlog je bio to što je promenljiva koja je čuvala vreme bila celobrojna a za potrebe računanja lokacije mete morala se prebaciti u realan broj. Tako dobijena greška je bila prihvatljiva ali se vremenom uvećavala. Nakon određenog broja sati u radu meta koja dolazi nekom svojom brzinom nije više tamo gde po Patriotu treba da bude i eto ti KABOOOM. Softver je pisan u asembleru a greške se dešavaju i najboljima.


RE: ATmega168 7-Segmentni Display - 1van - 04-03-2018

^ izvor? Hvala Smile


RE: ATmega168 7-Segmentni Display - mikikg - 04-03-2018

(04-03-2018, 07:25 AM)Želja Wrote: Treba napomenuti i low current 7 segmentne displeje sa svega 2mA.
napr. https://www.vishay.com/docs/83123/tdsl51.pdf

Takva 3 displeja ja sam kačio direktno na pinove MCU bez dodatnih tranzistora.
Čak i sa strujom manjom od 2mA (limitiranom)  i crvenom pleksi maskom to se jako lepo vidi !

Pozz

Uprava tako, i ja pokrecem one moje plave 7Seg LED sa manje od 2mA, mislim da je negde oko 1mA tj ukupno 10mA za cifru sto je skroz OK struja za jedan select pin, to je dovoljna struja i za 5 cifara u multiplexu za taj display, takodje se jako lepo vidi.

PS: Samo da podsetim, razlicite boje displeja imaju razlicit zaporni napon, krece se od 1.4V do skoro 2V i shodno tome treba izabrati tacan otpornik prema naponu napajanja MCU.

PS2: Merenje struje kroz LED na niskim naponima napajanja je vrlo problematicno, ne moze direktno da se meri struja sa ovim nasim "obicnim" unimerima, mora posredno da se preracuna struja tako sto se meri pad napona na otporniku. Problem je vezan za burden-voltage nasih Ampermetra ...


RE: ATmega168 7-Segmentni Display - gorankg - 04-03-2018

(04-03-2018, 10:05 AM)1van Wrote: ^ izvor? Hvala Smile

Imao sam na računaru negde prezentaciju neke konsultantske kuće koja radi proveru softvera. Ako nađem postaviću to ovde. Vrlo je zanimljiv ceo tekst a ja se sećam samo detalja.
Bio je i primer loše urađenog softvera za neki skener kojim su pacijenti zračeni više od normale. Nažalost, bilo je i smrtnih slučajeva nakon zračenja.

Nije tekst koji sam ja imao ali ovde se čak i bolje opisuje greška kod Patriot-a:

https://www.viva64.com/en/b/0445/


RE: ATmega168 7-Segmentni Display - ronovar - 04-03-2018

Skinuo sam ImageCraft IDE For AVR v7.23 i citam tutorijale za c...zanimljiv koncept a vidim da je puunoo mocniiji od basica sto sam dosad vidio primjere koda...takoreci mozes svaki registar da podesis kako ti hoces a ne kako on hoce...trazio tutorial example za led blink i spomenuti je _delay_ms i _delay_us ko to danas koristi? Onda sam naisao na timer interupt na stranici:

https://imagecraft.com/help/ICCV8AVR/iccavr/6-programmingavr/interrupt_handling.htm

Pa cim proucim kod postvljam kod za led blink preko interrupta pa cemo onda dalje...i nema gotove funkcije kao basic to mi se isto svidja...napisem svoje koje optimiziram a opet znam ona kako i koji dio peripetije unutar avra radi i jos nesto sto mi se jakooo svidja vidite ovo?






Odaberes MCU odaberes kristal odaberes koji timer zelis i onda ubacis vrijeme delaya i odmah ti itzracuna vrijeme interrupta i greska interrupta i jos ti postavi hex vrijednosti zastavice timera...sto je fantasticno.

TCNT1High Byte i TCNT1Low Byte
0x48
0xE5

i jos kliknes dodaj konfig u kod i odmah ti napise kod u c-u za tu konfiguraciju.-..briljantno...eto samo da pitam koji c compiler mi preporucate? Ovaj ICCAVR mi je super....


RE: ATmega168 7-Segmentni Display - mikikg - 04-03-2018

@ronovar
Pogledaj ovo:

[Image: attachment.php?aid=26370]

To je deo ekrana iz Keil Debugera za STM32, tu imas sve moguce opcije i flagove za jedan modul, mogu da se menjaju i citaju u realnom-vremenu!
Keil je do 32KB programa BESPLATAN i bez ikakvih limita.
Ja na jednom racunarau vozim besplatnu verziju samo da vidim dokle moze da se tera i koji je praktican limit : )
Trenutno nisam presao 10-ak KB optimizovanog (-O3) code-a!

Sto se tice optimizacije, to je vec receno, sve zavisi kako se napise program, recimo ja pisem program tako da MORA da radi ISTO kada je iskljucena optimizacija (-O0) i kada je ukljucena (-O3), sav bitan tajmin mora da se odrzi tacnim a to je jedino preko HW tajmera i ispravnom implementacijom u programu. Kada ukljucim optimizaciju to mi je samo bonus na moj program jer mi samo onda krace traju neke logicke stvari u programu i potencialno imam jos vise mesta za dodatnu logiku.


RE: ATmega168 7-Segmentni Display - vojinilic - 04-03-2018

Ovo uzmi da koristis. Ovo je najmocniji alat za AVR mikrokontrolere:

https://www.microchip.com/avr-support/atmel-studio-7


RE: ATmega168 7-Segmentni Display - mikikg - 04-03-2018

To su sve odlicni alati ali ozbiljna prica dolazi tek sa GCC, tj odavno je ona tu samo je trebalo vremena da slegne i da dodje na potreban nivo stabilnosti i robustnosti. Rekoh vec vise od 50% software na planeti se vrti na C/C++, svi ovi alati koje spominjemo upravo rade GNU GCC prevodiocima, i Arduino, i Keil, i mučeni Mikrochip sada to koristi i "Atmela" ce da teraju na GCC, i Texas Instruments, i XMOS .... SVI to koriste!
Prakticno znaci, sve sto se pise bi valjalo i trebalo da bude GCC kompatibilno jer program mozes da prevedes gde hoces i zasta god hoces! Da ne pricam o tek advanced opcijama sa custom pre/pos-procesorskim direktivama, manipulacijom linking procesa, mnoooo toga je na raspolaganju ...
Za 5, 10, 15 godina moguce je da se tera isti ovaj sada napisan code u nekim buducim Mikrokontrolerima sa virtualnim masinama u sebi poput LLVM i tome slicno, radiće na "usisivaču i frižideru" bez problema : )


RE: ATmega168 7-Segmentni Display - vojinilic - 04-03-2018

(04-03-2018, 12:02 PM)mikikg Wrote: To su sve odlicni alati ali ozbiljna prica dolazi tek sa GCC, tj odavno je ona tu samo je trebalo vremena da slegne i da dodje na potreban nivo stabilnosti i robustnosti. Rekoh vec vise od 50% software na planeti se vrti na C/C++, svi ovi alati koje spominjemo upravo rade GNU GCC prevodiocima, i Arduino, i Keil, i mučeni Mikrochip sada to koristi i "Atmela" ce da teraju na GCC, i Texas Instruments, i XMOS .... SVI to koriste!

Miki,

Atmel studio odavno koristi GCC.


RE: ATmega168 7-Segmentni Display - ronovar - 04-03-2018

Evo instalia se Atmel Studio 7 pa cemo da vidimo sto sve nudi i sto sve moze...cim napisem LED blink preko interrupta u tome programu postavljam kod pa cemo da vidimo ako sam dobro sve odradio...


RE: ATmega168 7-Segmentni Display - mikikg - 04-03-2018

Imam jedan interesantan primer i vise kao "chalenge" da se uradi, nesto je u stilu Voje Antonic kao sa zadnjeg Hack-a-day, da se napravi "micro-dot" rutina koja radi preko 7 Seg displeja (kao sve normalno izgleda) i kojoj moze da se "pristupi" bilo foto-diodom/tranzistorom ili CCD kamericom!!! Ha! Hajde hakeri ... : )