Nagradna Igra - 2012

Riješavanje raznoraznih problema čisto iz zabave. Nagrada nije novčana nego u vidu elektronskih komponenti.

Moderators: stojke369, pedja089, [eDo], trax

Da li ste zainteresirani za nagradnu igru?

1. DA
35
85%
2. NE
6
15%
 
Total votes : 41

Re: Nagradna Igra

Postby _heX » 11-01-2012, 23:12

@InTheStillOfTheNight
Ne. Jer onda si ostavio pinove koji idu na tastere u zraku, pa ti statika moze buditi PIC iz sleep-a.
_heX
 
Posts: 118
Joined: 29-10-2009, 20:09
Location: Republika Zagorje

Re: Re: Nagradna Igra


Re: Nagradna Igra

Postby _heX » 12-01-2012, 00:08

Nano kaze (na PM) da nema vremena/volje da osmislja zadatak, pa "Nocni" ozezi. U starom olimpijskom duhu: Neka masakr... Boze, igra otpocne.
_heX
 
Posts: 118
Joined: 29-10-2009, 20:09
Location: Republika Zagorje

Re: Nagradna Igra - 2012

Postby trax » 12-01-2012, 09:05

Uvazio sam Fekin prijedlog i otvorio 2 pod-foruma ovdje:
viewforum.php?f=4

Eto, nastavite ovdje sa ovom nagradnom igrom, a one igre za koje se nudi novcana nagrada neka idu tamo u pod-forum za "novcane" igre :D

Takodje sam procistio ovu temu i izbrisao zadnje postove koje nemaju veze sa nagradnom igrom.
User avatar
trax
 
Posts: 2849
Joined: 08-01-2005, 18:04
Location: 75k, BA

Re: Nagradna Igra - 2012

Postby InTheStillOfTheNight » 14-01-2012, 00:12

Eh @hex nece biti jednostavno, pogotovo jer nije PIC... :)
Ono što treba napraviti je: Pronaći, ispraviti i objasniti BUG u programu tartufa.

Program je koncipiran jednostavno:
TIMER0 broji do OCROA registra, i diže prekidnu rutinu svakih 1mS.
U samoj prekidnoj rutini odrađeno je blinkanje LED-om koja se nalazi na PC0 portu... LED se treba paliti i gasiti svake 1 sekunde.

U glavnom loopu program mijenja stanje PC5 izlaza maksimalnom brzinom, i taj port koristi se da se može snimiti osciloskopom koliko je MCU "brz".

Ovaj program ne blinka LED-om svake sekunde i ne radi kako treba, pa sve što treba napraviti je pronaći razlog zašto program ne radi, popraviti BUG i objasniti zašto prvobitni program ne radi kako treba...

Nagrada:
ISP programator za AVR mikrokontrolere

@trax, @pedja, @buco i @kizo zbog vašeg iskustva u startu vas moram diskvalificirati :D

Program je pisan u C-u AVR Studio4 za ATMEGA88 MCU.
Attachments
Tartufi_1.rar
(10.59 KiB) Downloaded 18 times
InTheStillOfTheNight
User avatar
InTheStillOfTheNight
 
Posts: 825
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: Nagradna Igra - 2012

Postby Cipi-Cips » 14-01-2012, 04:33

@InTheStillOfTheNight

zar taj bug nisi sam rjesio u tutorialu tartufi :)
Cipi-Cips
 
Posts: 353
Joined: 28-09-2006, 20:11
Location: Split- Croatia

Re: Nagradna Igra - 2012

Postby InTheStillOfTheNight » 14-01-2012, 08:59

Bio sam napisao dio, no problem nisam rjesio, a sada sam izbrisao zadnji post tako da nema ni taj dio koji je bio... Jbg tko je uhvatio i procitao ima dobar smijer...
InTheStillOfTheNight
User avatar
InTheStillOfTheNight
 
Posts: 825
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: Nagradna Igra - 2012

Postby _heX » 14-01-2012, 09:32

Osjecan se nekako... prozvan

Ne poznajem AVR, ali mozda sam uocio problem. Mozda, jer stvarno neznam jel AVR to tak "hendla"

PORTC = PORTC ^ 0x20;

1) Ucitaj PORTC u radni registar
2) Izvrsi XOR radnog registra i 0x20
3) Spremi natrag u PORTC

Kod prekida program skace u isr funkciju, ali prije samog ulaska sprema radne i ostale "CPU" registre na stog.

Ako se prekid dogodi nakon 1 ili 2 faze gore, po izlasku iz isr() kontroler ce napraviti "restore" radnih registara, a time i stare vrijednosti PORTC-a i prebrist ce promjene nastale u isr (reda us prije)

U biti dioda ce zasvjetliti/ugasiti na tren, ali zbog tromosti oka to se nece primjetiti.
_heX
 
Posts: 118
Joined: 29-10-2009, 20:09
Location: Republika Zagorje

Re: Nagradna Igra - 2012

Postby _heX » 14-01-2012, 09:41

evo prvo rjesenje koje mi pada na pamet je da u main stavim:

disable_isr(); // onemoguci prekid, globalno ili samo timer0
PORTC = PORTC ^ 0x20;
enable_isr(); // omoguci prekid, globalno ili samo timer0
_heX
 
Posts: 118
Joined: 29-10-2009, 20:09
Location: Republika Zagorje

Re: Nagradna Igra - 2012

Postby bob4 » 14-01-2012, 17:40

Imam ja spremljenu cijeli knjigu Tartufa u word-u od 59 stranica fonta 12; ako kome treba....
User avatar
bob4
 
Posts: 1312
Joined: 31-01-2010, 16:12
Location: Kutina

Re: Nagradna Igra - 2012

Postby Cipi-Cips » 14-01-2012, 19:16

@bob4

mozes mi poslat tu knjigu u wordu, zanima me malo i AVR
Cipi-Cips
 
Posts: 353
Joined: 28-09-2006, 20:11
Location: Split- Croatia

Re: Re: Nagradna Igra - 2012


Re: Nagradna Igra - 2012

Postby InTheStillOfTheNight » 14-01-2012, 21:43

Eh @hex, trebao sam i tebe diskvalificirati :)... Predpostavio sam da bi ti to trebao naći vrlo brzo :)

E sad da ne objašnjavam BUG evo Kizin PM koji mi je poslao sinoć:

Samo da vidim kako stojim.

U disasembleru vidim ovo:

CODE: SELECT ALL
while(1){ /* main loop */
PORTC ^= (1<<PC5); /* Toggle my debug line */
be: 90 e2 ldi r25, 0x20 ; 32
c0: 88 b1 in r24, 0x08 ; 8
c2: 89 27 eor r24, r25
c4: 88 b9 out 0x08, r24 ; 8
c6: fc cf rjmp .-8 ; 0xc0 <main+0x22>

Bug će se javit ako interrupt okine točno u trenutku kad se izvrši EOR, a prije nego se vrijednost zapiše u PortC (out 0x08, r24).
E šta se događa.. Interupt rutina sve fino okrene PC0, al samo na koju mikrosekundu, jer čim se vratimo iz nje, stara vrijednost portaC se već nalazi u r24 i OUT mijenja PortC, ali nije uzeto u obzir novo stanje PortC iz interrupt rutine.
Ustvari kad sad bolje pogledam, osuđeni smo na propast već prije EOR, kod IN r24, 0x08 jer će ovaj fino pospremiti stanje porta i kad se vratimo iz ISR-a opet baratamo sa starim sranjem, ne novim.

E to je već ozbiljna stvar jer pošto vrtimo 5 ASM naredbi imat ćemo bug u 40% slučajeva.

Zato treba takve pizdarije micat iz ISR-a, ostaviti samo najosnovnije, jedino ako je bitno da se u baš tom i tom trenutku npr. uključi tiristor nakon zero-crossing, no opet za takve stvari postoji hardware (compare/match registri), al to je već malo dublja priča.

Eh da, rješenje.
Npr.

ATOMIC_BLOCK(ATOMIC_FORCEON) PORTC ^= (1<<PC5);

Jako fino ubaci CLI prije IN i SEI poslije OUT.
Da, treba i
#include <util/atomic.h>


Za ovaj problem najtočnije i najbrže rješenje je ne koristiti XOR, a kada smo u while(1) petlji i samo to radimo onda vrlo lako možemo napraviti i ovo:

Code: Select all
PORTC |=  (1<<PC5);
PORTC &=~(1<<PC5);


U assembleru imate znatan broj ušteđenih instrukcija pošto bi takav program trebao izgledati ovako, a BUG se u ovom programu ne može dogoditi jer optimizator za ove 2 instrukcije nikada ne vuče PORTC u radni registar nego mu direktno pristupa sa CBI i SBI instrukcijama:
Code: Select all
sbi 0x08, 5 ; Set PC5
cbi 0x08, 5 ; Clear PC5


Isto tako treba napomenuti da se BUG događa samo ako istom portu pristupamo iz prekidne rutine i iz glavnog programa... Specifičan je po tome što u puno programa učestalost pojavljivanja BUG-a smanjuje i dosta ga je teško tražiti.

@Hex pošalji mi u PM adresu da ti posaljem nagradu.
InTheStillOfTheNight
User avatar
InTheStillOfTheNight
 
Posts: 825
Joined: 01-06-2006, 17:54
Location: Zagreb

Re: Nagradna Igra - 2012

Postby elektor » 01-04-2012, 14:34

Gdje je zapelo :roll:
Noćni jesi poslao djelove Hex-u? Ako jesi ajmo Hex, čeka se pitanje :wink: ...
Ako nisi pucaj sljedeće pitanje :lol:
User avatar
elektor
 
Posts: 1326
Joined: 14-10-2008, 20:40
Location: Hrvatska, Rijeka

Re: Nagradna Igra - 2012

Postby _heX » 18-04-2012, 20:30

Rezultat nekog mjerenja je u rasponu 0-100, kontroler treba pretvoriti taj rezultat u raspon 0-250.
Kontroler nema hardver za mnozenja. Na pameti mi je midrange pic, ali moze bilo koji kontroler, princip je isti. Mala greska je dozvoljena, dati najbrze rjesenje.

Kako se prijasnji dobitnik nije javio za nagradu dajem dalje 2 x MAX232, PIC16F877 (DIP40), PIC18LF4680
(DIP40)
_heX
 
Posts: 118
Joined: 29-10-2009, 20:09
Location: Republika Zagorje

Re: Nagradna Igra - 2012

Postby Kukinjos » 18-04-2012, 21:08

Y= vrijednost shift desno ; Y je vrijednost/2
vrijednost =vrijednost shift lijevo ; vrijednost je vrijednost * 2
vrijednost = vrijednost + y ; zbrojimo i gotovo

Valjda će ovo neko razumjet :wink:
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
User avatar
Kukinjos
 
Posts: 1150
Joined: 28-03-2012, 18:01
Location: Split

Re: Nagradna Igra - 2012

Postby _heX » 19-04-2012, 15:30

@Kukinjos
Yep, to je to. Evo kak to odprilike izgleda za midrange pic:

; registar _BROJ sadrzi rezultat mjerenja
rlf _BROJ,W ; rotiraj lijevo i spremi u radni. U radnom se sada nalazi BROJ*2
rrf _BROJ,F ; rotiraj desno i spremi natrag u BROJ. U registru BROJ se sada nalazi BROJ/2
addwf _BROJ,F ; BROJ = BROJ * 2.5

Posalji svoju adresu na PM i pucaj sljedece pitanjce.
_heX
 
Posts: 118
Joined: 29-10-2009, 20:09
Location: Republika Zagorje

Re: Nagradna Igra - 2012

Postby Kukinjos » 19-04-2012, 17:07

Evo novi zadatak:
zamislite kocku kojoj su bridovi otpornici od jednog oma. Treba izračunati otpor ove mreže mjereći između bilo koja dva dijagonalna vrha kocke. Prihvaćam samo najjednostavnija (intuitivna) rješenja, bez puno matematike, teorema i raščlambi do besvjesti.
Image

Od djelova na programu su 2x ATTINY2313-20PU novi iz Farnell-a:
http://www.atmel.com/Images/doc2543.pdf
i dva Finder releja Type 40.525., špula 110 V=, kontakti 2 x preklopni 8A, skinuti s potpuno novog i ispravnog uređaja:
http://gfinder.findernet.com//assets/Series/5/S40EN.pdf
Prva strana kataloga zadnja (desna) kolona.
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
User avatar
Kukinjos
 
Posts: 1150
Joined: 28-03-2012, 18:01
Location: Split

Re: Nagradna Igra - 2012

Postby bob4 » 20-04-2012, 07:29

User avatar
bob4
 
Posts: 1312
Joined: 31-01-2010, 16:12
Location: Kutina

Re: Nagradna Igra - 2012

Postby Kukinjos » 20-04-2012, 09:00

Hmmm... ovi mladi se stvarno ne trude, @bob4 nešto mi rezultat ne štima, imaš li kakvo objašnenje, ovo u multisim-u si dobro razložio. Mala pomoć, stvar je logike, ne trebaju superračunla i programi, može se i napamet, cijela kocka je simetrična! :wink:
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
User avatar
Kukinjos
 
Posts: 1150
Joined: 28-03-2012, 18:01
Location: Split

Re: Nagradna Igra - 2012

Postby alexa_pg » 20-04-2012, 13:24

Svi otpori su vezani simetricno.
Sve sto se veze izmedju tacaka a i b ukljucujuci i kratak spoj ne utice na stuju kroz otpornike.
Ukupan otpor je 1om
Attachments
R.JPG
R.JPG (5.68 KiB) Viewed 257 times
alexa_pg
 
Posts: 1060
Joined: 11-03-2005, 22:21
Location: Podgorica

Re: Nagradna Igra - 2012

Postby Kukinjos » 20-04-2012, 13:29

Odlično si krenuo :idea: , ali si ga previše pojednostavnio :( .
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
User avatar
Kukinjos
 
Posts: 1150
Joined: 28-03-2012, 18:01
Location: Split

PreviousNext

Return to Nagradne Igre - dijelovi

Who is online

Users browsing this forum: No registered users and 0 guests

GOOGLE