Elektronika.lt
 2025 m. gruodžio 14 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

Elektronika.lt portalo forumas

Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo. Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.

Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius, kurie nesilaiko forumo taisyklių. Pastebėjus nusižengimus, prašome pranešti.

Dabar yra 2025 12 14, 23:11. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » Signalo skaitymas su ATMega16
Jūs negalite rašyti naujų pranešimų į šį forumą
Jūs negalite atsakinėti į pranešimus šiame forume
Jūs negalite redaguoti savo pranešimų šiame forume
Jūs negalite ištrinti savo pranešimų šiame forume
Jūs negalite dalyvauti apklausose šiame forume
 
  
Puslapis 12
Pereiti prie 1, 2  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 04, 02:41 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Raudonukas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą MSN Messenger
Sveiki gyvi!
Iškilo šiokių tokių problemėlių.
Yra du uC (ATMega16). Taktinis dažnis- 16MHz. Vienas uC išsiunčia signalą (su IR diodu)- "ant" 40KHz nešančiosios bangos. Signalas susideda, tarkim, iš 8 bitų kurie neša informaciją ir iš dviejų pusbaičių (prieš ir po tų aštuonių "esminių" bitų), kurie pasako, kad duomenų porcija prasideda ir baigiasi.
Šitokio signalo imtuve tupi TSOP4840, kuris yra IR imtuvas ir demoduliatorius (40KHz), ir uC.
1-a problema. Kol kas dar tik moku programuoti ATmega16 su C kalba (jei konkrečiau su kuo: IAR Embedded Workbench IDE; PonyProg2000). Ir būtų įdomu sužinoti kiek taktų trunka kiekviena operacija apibrėžta C kalba. Nes programų su asm nesinori rašyti kažkaip... Žinant kiek kokia operacija trunka, jau galima generuoti tikslius 40KHz ir pan...
2-a problema Signalas gali būti išsiūstas bet kuriuo laiku, todėl reikia sugalvoti, kaip nepavėluoti nuskaityti "esminius" 8 bitus. Kadangi 16MHz/40KHz=400, tai galima tikrinti INPUT su ciklais ir gavus <1> į kojelę, vykdytų programos skiltį, kuri sulaukus 0>1 pradėtų tiksliai skaičiuot ir tam tikrais laikais surinkinėt reikšmes iš "esminių" bitų. Aišku, negavus uždarymo pusbaičio, fiksuojama perdavimo klaida ir pan.
Nuo tada, kai uC ir taip turi ką veikt apart INPUT tikrinimo, norėtųsi naudoti pertraukimą. Aišku, nežinau kaip jį naudoti šituo atveju.

Gal kas turit idėjų arba šiaip ką nors galit patarti? Ir išvis ar ATMega16 pajėgus viršuje išvardintiems darbams+ LCD valdymas ir dar keletas smulkių funkcijų, o gal net užtektų ir paprastesnio uC?
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 04, 13:58 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Visu pirma tokiem dazniu generavimams yra taimeriai. o jei generuosi programiskai tai siuntimo metu negalesi nieko primineti.

analogiskasi atmega turi ir periodo matavimo sistema. kuria verta pasinaudoti priimant.

C kalboje nera tiksiu komandu ivykdymo laiku, nes sukompiliuotas asambleris priklauso nuo situacijos, ta pati C komanda gali susikompiliuoti i skirtingas asamblerio komandas.
jei tau reikia tikslaus laiko tai naudok taimerius.
arba reikia eksperimentiniu budu nustatyti
lengviausia funkcijos vykdymo laika ismatuoti su taimeriu

ar atmega pajegus ar ne daryti tai ka tu nori priklauso nuo to ka tu nori daryti. tu siek tiek papasakojei norimas funkcijas, bet nieko pasakyti neimanoma nezinant koks ju panaudojimas.
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 04, 21:25 Pranešti apie taisyklių pažeidimą Atsakyti su citata
ReM
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Ir dar: nepamiršk, kad čia ne RS232, ir taip duomenų perdavinėti negalima. Veiks, bet labai nepatikimai. Paimk kokį nors distancinio valdymo pultą, ir pažiūrėk kokias komandas jis generuoja. Pasidarys aiškiau. Nors gal ir nepasidarys, priklauso nuo tavo žinių elektronikoje...
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 05, 08:54 Pranešti apie taisyklių pažeidimą Atsakyti su citata
centronic
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
pvz PORTA.1 generuoja 40khz signala, nereikia jokiu taimeriu
Kodas:

PORTA.1 = 1;
delay_us(12);
PORTA.1 = 0;
delay_us(13);

geriausia naudot RC5 duomenym perduot
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 05, 12:18 Pranešti apie taisyklių pažeidimą Atsakyti su citata
ReM
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
Generuot tai generuoja, bet kas iš to? Visas jo darbas, daugiu nieko nepadarys.
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 05, 12:41 Pranešti apie taisyklių pažeidimą Atsakyti su citata
centronic
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
ReM rašo:
Generuot tai generuoja, bet kas iš to? Visas jo darbas, daugiu nieko nepadarys.

rc5 loginis 1 ir 0
Kodas:

void log_1(){
   PORTA.1 = 0
   delay_us(880);
   for(i=0; i<35; i++){
      PORTA.1 = 1;
      delay_us(12);
      PORTA.1 = 0;
      delay_us(12);
   }
}
//----------------------------
void log_0(){
   for(i=0; i<35; i++){
      PORTA.1 = 1;
      delay_us(12);
      PORTA.1 = 0;
      delay_us(12);
   }
   delay_us(880);
}
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 05, 14:29 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Raudonukas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą MSN Messenger
Jei konkrečiai, tai aš noriu naudoti ATMega16 kaip "Laser Tag" komplekto širdį. Duomenų perdavimas ten toks, kad uC yra užprogramuotas pasiųsti du užprogramuotus ir pastovius baitus. Aš nenoriu uC naudoti kaip moduliatoriaus realiame laike. Tai tokie reikalavimai siuntimui. O priėmimui jie daug didesni. Manau, kad reiktu daryt pertraukimą, kad gavus kažkokį signalą, įsijungtų paprogramė, kuri sugebėtų užsirašyt tuos 2 baitus.

O funkcija delay_us(); - ar čia reikia papildomų reikalavimų dėl generatorių nustatymo fuse bituose. Pagal ką ji orientuojasi, kad mikrosekundė yra reali mikrosekundė?
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 05, 14:54 Pranešti apie taisyklių pažeidimą Atsakyti su citata
centronic
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
pirma geriau ismok is distancinio pulto priimti signala, poto issiust, o jau tada ir lasertag pasidarysi Wink
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 09, 00:27 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Raudonukas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą MSN Messenger
Na, man atrodo, kad distancinio valdymo pulte ten truputį kitaip, nors, aišku, principas tas pats.
Beje, kaip ir kur yra aprašyta funkcija <<dalay_us()>>?
Ir visgi, jaučiu, reiks programuot asm'u, nes su aukšto lygio kalbom neišeis suskaičiuot tiksliai.
Bandysiu daryt taip: Norint išsiusti, bus paprogramė, į kurią įeinama nuspaudus mygtuką. Ji sugeneruoja 40KHz, atitinkamai moduliuotą (kaip, skaityti TSOP4840 datasheet) informacija (<16bit>=const) . Priėmimo metu, gavus pirmą bitą, bus galima vykdyti pertraukimą, kuris nukreips į paprogramę, kuri nuskaitinės išorinį signalą. Kadangi programuojant su asm galima tiksliai suskaičiuot kiek ten viskas užtruks (nes kiekviena komanda turi tikslų atlikimo taktų skaičių*), tai galima kiekvieno bito siuntimo ir priėmimo laikus susinchronizuot. Va.
Pataisykit, jei supratot mintį ir radot klaidų.
Dabar prasidės didieji bandymai ir didžiosios klaidos. Puiku.
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 09, 00:46 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
viskas grazu kalbose, bet pamatysi kad asambleris tau nepades nes suomaisysi beskaiciuodamas. lengvisu tiesiog eksperimentiskai viska padaryti

dealy tai tiesiog kazkoks ciklas ir tiek, jei naudoji codevision tai gali pasiziureti lib kataloge kaip visos funkcijos atrodo.

pagrindine paroblema tau turbut bus tai kad procesriaus greicio ko gero neusteks tam kad galetum keleta darbu vienu metu daryti.
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 12, 14:14 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Raudonukas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą MSN Messenger
Digix rašo:
viskas grazu kalbose, bet pamatysi kad asambleris tau nepades nes su[si]maisysi beskaiciuodamas. lengvisu tiesiog eksperimentiskai viska padaryti

dealy tai tiesiog kazkoks ciklas ir tiek, jei naudoji codevision tai gali pasiziureti lib kataloge kaip visos funkcijos atrodo.

pagrindine paroblema tau turbut bus tai kad procesriaus greicio ko gero neusteks tam kad galetum keleta darbu vienu metu daryti.


Na, manau, jei kruopščiai skaičiuosiu, tai nesusimaišysiu. Aišku, tikrai prireiks ir eksperimentų.

Deja, codevision nenaudoju.

Na, 16MHz. Kiek aš įsivaizduoju, tai užtekt, nes nelabai reiks daryti keletos darbų vienu metu (kai priiminės signalo duomenis, tai nesiuntinės).
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 12, 14:54 Pranešti apie taisyklių pažeidimą Atsakyti su citata
JAULER
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką MSN Messenger
o kodėl taip nenori naudoti timer`ių?
juk nereiks beveik nieko skaičiuot, yra procas, tai tegu jis ir skaičiuoja viską.

_________________
nepamirškit, klysti žmogiška Wink
privatas - privatiems klausimams
arch linux Wink Smile
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 13, 00:38 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Digix
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
matau mokytis jis nenori,
sako geriau sugaišiu 2 dienas derindamas ciklu skaičiu, nei 3 dienas mokysiuosi kaip tuos taimerius panaudoti.
 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 13, 08:14 Pranešti apie taisyklių pažeidimą Atsakyti su citata
centronic
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
cia yra lasertag protokolas http://www.lasertagparts.com/ltto.htm

o cia kaip issauti duomenis Razz

 Signalo skaitymas su ATMega16
PranešimasParašytas: 2008 10 16, 19:28 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Raudonukas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą MSN Messenger
JAULER rašo:
o kodėl taip nenori naudoti timer`ių?
juk nereiks beveik nieko skaičiuot, yra procas, tai tegu jis ir skaičiuoja viską.


Nelabai suprantu, ką turi omenyje?
Aš mikroprocesoriais labai neseniai pradejau domėtis, tai aš žalias kaip reikiant čia.
Nu, aš pasiskaitysiu, kontrolerio datasheet'e, kur rašo "taimeriai".

Ačiū, centronic, iššovimo kodas buvo tikrai naudingas:)

Bet dabar susidūriau su kita problema- interrupt'ai.
Bandžiau parašyti kodą, kad paspaudus 3ą mygtuką A porte (INT2) (žiūrėti bandymų plokštę schemų archyve), užsižiebtų B porto LED'ai:

Kodas:



#include <iom16.h>

  ORG $0
  RJMP Start
  ORG $24
  RJMP IService
 
Start:
  LDI r16, HIGH (RAMEND)
  OUT SPH, r16
  LDI r16, LOW (RAMEND)
  OUT SPL, r16
  LDI r18, 0
  OUT DDRA, r18
  LDI r18, 255
  OUT PORTA, r18
  LDI r18, 00100000b
  OUT GICR, r18
  SEI
 
Start01:
  LDI r17, 255
  OUT DDRD, r17
  OUT PORTD, r17
  RJMP Start01
 
IService:
  PUSH R16 ; save a register to stack
  IN R16,SREG ; read status register
  PUSH R16 ; and put on stack
 
  LDI r16, 255
  OUT DDRB, r16
  OUT PORTB, r16
 
  POP R16 ; get previous flag register from stack
  OUT SREG,R16 ; restore old status
  POP R16 ; get previous content of R16 from the stack
  RETI ; and return from int
 
  END
 


Bet, aišku, B portas nė krust (portas D žiba).
Kame reikalas?
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie 1, 2  Toliau
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

„Mokslo sriuba“

www.matuok.lt - Interneto spartos matavimo sistema

Programuotojas Tautvydas – interneto svetainių-sistemų kūrimas

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

FS25 Tractors
Farming Simulator 25 Mods, FS25 Maps, FS25 Trucks
ETS2 Mods
ETS2 Trucks, ETS2 Bus, Euro Truck Simulator 2 Mods
FS22 Tractors
Farming Simulator 22 Mods, FS22 Maps, FS25 Mods
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
FS25 Mods
FS25 Maps, FS25 Cheats, FS25 Install Mods
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps
ATS Trailers
American Truck Simulator Mods, ATS Trucks, ATS Maps
Must have farming mods
Farming simulator modhub, Best farming simulator mods
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Ets2 mods, Ats mods, Beamng drive mods
allmods.net
„MokslasPlius“ – mokslui skirtų svetainių portalas
www.mokslasplius.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – lietuviškų tinklalapių vitrina
www.ltv.lt/technologijos/
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
Mokslo festivalis „Erdvėlaivis žemė“
www.mokslofestivalis.eu
Reklama


Reklama