Arduino - Remote control (RF-TX) - Printable Version +- DIY Electronic projects (https://forum.yu3ma.net) +-- Forum: Mikrokontroleri (https://forum.yu3ma.net/forumdisplay.php?fid=52) +--- Forum: Razvojni sistemi i moduli (https://forum.yu3ma.net/forumdisplay.php?fid=56) +--- Thread: Arduino - Remote control (RF-TX) (/showthread.php?tid=1353) |
RE: Arduino - Remote control (RF-TX) - Makso - 01-23-2018 Opet sam malo čačkao oko harvderskog UART-a, nisam se mogao smiriti, dodam ostatak komponenti diodu, kondenzator i otpornike, opet testiram na softverski UART radi fino, napravim kombinaciju softverski i hardverski UART radi opet sa malim kašnjenjem, prebacim oba Arduina na hardverski UART i opet neće. Dok sam onako dirao po breadboard-u odjednom se pojavi prijem pa izgubi i skontam da me je malo bredboard zezao (bili slabi kontakti), riješim to, ali opet nije kako treba i kada sam na prijemnoj strani, moram izbaciti otpornik između TX (HC) -- RX (Arduino) da bih primao poruke preko otpornika neće. Kada sam izbacio otpornik dobio sam prijem ali opet sa zakašnjenjem, onda sam dodao delay(20) na Arduino koji šalje podatke i kašnjenje je nestalo. Tako sam skontao da je hardver ispravan i da cijelo vrijeme imam problem u kodu, možda mi i ovo pravi problem što neće preko otpornika pa sumnjam da su poruke preduge ili prekratke ili neispravno napisane.? Probao sam i ona dva stara Arduina i oni su ispravni. Sada sam razgraničio do čega je problem, trebam kod da sređujem, a Vama se od srca zahvaljujem na neiscrpnoj pomoći. RE: Arduino - Remote control (RF-TX) - me[R]a - 01-23-2018 Sad daj ceo kod da vidimo. Koliko si vreme osvezavanja stavio za interapt? Jesi li dodao one ispravke oko stopiranja interapta dok se ne izvrsi postojeci... kasnije moras da prepravis taj interapt jer sve si nagurao u njega a to nije potrebno i verovatno vreme izvrsavanja koda premasuje vreme do ponovnog interapta i tu ti verovatno lezi najveci deo problema... RE: Arduino - Remote control (RF-TX) - Makso - 01-23-2018 Nisam sad koristio interrupt. Code: int LED = 12; Prijem. Code: int ledPin = 13; EDIT Kada sam dodao interrupt sa onim dodacima stopiranja interrupt-a onda opet dobijam ono kašnjenje, tako da nisam dobro interrupt odradio. RE: Arduino - Remote control (RF-TX) - vojinilic - 01-23-2018 (01-23-2018, 03:18 PM)YuMERA Wrote: Sad daj ceo kod da vidimo. Stopiranje izvrsavanja interapta ne treba nikada raditi. Kao prvo on ima samo jedan izvor interapta, a kao drugo atmega ima vektorske interapte, tako da je prioritet definisan fizicki najnizim adresom. Davno je bilo, pa se ne secam da li bese postoji priority registar gde se definisu. Za zmega znam tacno. Ako zabranis int u toku izvrsenja int-a, onda gubis informaciju o interaptu nizeg prioriteta koji se desio za vreme izvrsavanja interapta viseg prioriteta. Nema fizickog smisla nikakvog. RE: Arduino - Remote control (RF-TX) - me[R]a - 01-23-2018 (01-23-2018, 05:10 PM)vojinilic Wrote: Stopiranje izvrsavanja interapta ne treba nikada raditi. Kao prvo on ima samo jedan izvor interapta, a kao drugo atmega ima vektorske interapte, tako da je prioritet definisan fizicki najnizim adresom. Davno je bilo, pa se ne secam da li bese postoji priority registar gde se definisu. Za zmega znam tacno. Ako zabranis int u toku izvrsenja int-a, onda gubis informaciju o interaptu nizeg prioriteta koji se desio za vreme izvrsavanja interapta viseg prioriteta. Nema fizickog smisla nikakvog. Znam ja za to Vojine ali onaj jedan interapt koji je on dao u kome izmedju ostalog salje podatke serijskim putem pomislio sam da vremensko trajanej samog koda u interaptu prevazilazi vreme posle kojeg nastupa novi interapt pa da zbog toga ima preklapanje na ne izvrsenim komandama...Hteo sam time samo da otklonimo i otkrijemo problem oko "kasnjenja" koje spominje. Ali tvoj info svakako je dobar... RE: Arduino - Remote control (RF-TX) - gorankg - 01-23-2018 (01-23-2018, 05:10 PM)vojinilic Wrote: Ako zabranis int u toku izvrsenja int-a, onda gubis informaciju o interaptu nizeg prioriteta koji se desio za vreme izvrsavanja interapta viseg prioriteta. Nema fizickog smisla nikakvog. Ne bi trebalo da je ovako. Fleg za prekid koji je postavljen nekim događajem ostaje podignut, samo je unutrašnjom logikom onemogućen prekid. Kad ponovo u kodu omogućiš, taj prekid će se i dogoditi. Zato se kod inicijalizacije prekida obično prvo obriše odgovarajući fleg pa se potom omogući i sam prekid da ne bi došlo do lažnog prekida. E sad ja sam Atmele koristio davno, još AVR seriju, pa nisam siguran. Možeš li Vojine ovo da proveriš nekako? A istina je da nema nekog smisla onemogućavati prekide ako se koriste. Znam samo da Microchip ima preporuku da se prilikom upisa u interni EEPROM onemoguće svi prekidi brisanjem globalnog interrupt flega ali to je već druga priča. RE: Arduino - Remote control (RF-TX) - vojinilic - 01-23-2018 Gorane, u pravu si. Interapt flag ostaje setovan sve dok se ne izvrsi odgovarajuci interapt, ili se rucno ne ocisti. Kod AVR-ova se cisti upisom logicke jedinice na taj flag. Microchip-ova preporuka za EEPROM je da ne bi doslo do prekida tokom upisa podatka u EEPROM. Mislim da su i ostali proizvodjaci MCU-ova krenuli da preporucuju istu proceduru. RE: Arduino - Remote control (RF-TX) - vojinilic - 01-23-2018 (01-23-2018, 07:20 PM)YuMERA Wrote: za to Vojine ali onaj jedan interapt koji je on dao u kome izmedju ostalog salje podatke serijskim putem pomislio sam da vremensko trajanej samog koda u interaptu prevazilazi vreme posle kojeg nastupa novi interapt pa da zbog toga ima preklapanje na ne izvrsenim komandama...Hteo sam time samo da otklonimo i otkrijemo problem oko "kasnjenja" koje spominje. @Makso, ovo sto je YuMERA napisao treba da ti bude vodic za pisanje programa upotrebom interapta. Moras da definises neki flag koji je inicijalno ociscen. Kada se taster pritisne i izvrsi debounce, onda setujes ovaj flag. U main-u testiras flag i ako je setovan, onda prvo ocistis flag i posaljes podatak . RE: Arduino - Remote control (RF-TX) - Makso - 01-23-2018 @vojinilic Ovako nešto (ovo pišem brzinski, čisto informativno): ISR { if(taster == HIGH){ flag = 1; } else{ flag = 0; } } void loop{ if(flag = 1){ Serial.println("poruka/komanda"); } if(flag = 0){ Serial.println("poruka/komanda"); } }. RE: Arduino - Remote control (RF-TX) - vojinilic - 01-23-2018 Makso, nije ti to bas dobro. flag ce ti uvek biti false i ti ces stalno da saljes komandu. Ovako: ISR {TMR_Reload; if(Taster) { if((DebounceCounter++) > 10) {Flag = TRUE;} } else {DebounceCounter = 0;} } void main(void) { while(1) {if(Flag) { Flag = FALSE; Serial.println("Poruka"); } } } Mozda je neka zagrada preskocena. Ovo je samo pokazno. RE: Arduino - Remote control (RF-TX) - Makso - 01-23-2018 To bi trebalo biti ovako: Code: int LED = 12; RE: Arduino - Remote control (RF-TX) - vojinilic - 01-24-2018 Nisi nigde pozvao setup() funkciju gde inicijalizujes tmr. RE: Arduino - Remote control (RF-TX) - Makso - 01-24-2018 Stalno gledam u kod i tražim grešku, ali ništa (sad sam ispao glup), timer se inicijalzuje u setup() ako si na to mislio, a po ovome sada on meni samo prihvati da je taster aktivan i ništa se više ne dešava, tu se upali ledica i više se ne gasi? RE: Arduino - Remote control (RF-TX) - vojinilic - 01-24-2018 A da te pitam, gde si u kodu stavio da se gasi!?! Probaj da je zamolis da se ugasi :-) RE: Arduino - Remote control (RF-TX) - vojinilic - 01-24-2018 Ako zelis neku promenu na led pri svakom pritisku, onda nipisi led^=1; RE: Arduino - Remote control (RF-TX) - Makso - 01-24-2018 Evo ovako: else{ taster1test = 0; digitalWrite(LED, LOW); }. Meni ne radi TX, tj, uopšte ne radi Serial koji se nalazu u "if" petlji koja je u "while" petlji, tamo gdje se testira stanje flag1-a? RE: Arduino - Remote control (RF-TX) - vojinilic - 01-24-2018 Da li se setup funkcija setup nekada pozove? Ne znam kako radi arduino kod. U svim normalnim jezicima moras da pozoves funkciju inicijalizacije. U c-u je to npr. void main(void) {setup(); while(1) { ... } } RE: Arduino - Remote control (RF-TX) - Makso - 01-24-2018 Kod Arduina setup() se čita na početku programa i onda prelazi na loop(), bar ja nikad nisam imao potrebe da upisujem setup() u loop(). Kada izbacim while petlju a ostavim samo if petlju onda je radilo? RE: Arduino - Remote control (RF-TX) - vojinilic - 01-24-2018 Ja stvarno ne znam arduino nacin izvrsavanja programa. Ono sto sam ja pisao je c sintaksa. Moras da budes nacisto sa nacinom izvrsavanja programa na toj platformi. RE: Arduino - Remote control (RF-TX) - Makso - 01-24-2018 Proradilo je. Umjesto while(1) napišem while(flag1) i radi kako je napisano. Probaću sa i drugim tasterom. Da li bi trebao prepraviti nešto na prijemnoj strani ili dodati uz ovu while(flag1) petlju dodati još jednu while() petlju da šalje poruku kada taster nije aktivan, jer iako mi prvi Arduino prestane slati poruku na drugom Arduinu se ledica ugasi nakon 2-3s, ali kada treba aktivirati ledicu nema kašnjenja, radi momentalno? |