|
|
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 2024 11 07, 18:45. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » programavimo niuansai
|
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 1 iš 2 Pereiti prie 1, 2 Toliau |
|
|
|
|
programavimo niuansai |
Parašytas: 2013 03 27, 22:07 |
|
|
|
Kad nekurt keliu temu ,tai keliu dalyku paklausiu cia. Pirmiausia toke situacija , atmega8 + lcd ekranelis , kelios knopkes "meniu" valdymui, eina laikrodis ir as noriu tarkim ,kad per para meniu nusatatyta kieki kartu , nustatytu laiku tarkim uzsidegtu ledas ant kazkurio pino kazkokiam laiko tarpui, galvoju iskirt pvz masyva A[16] kuriam butu saugomas laikas kada ijungt led , bet nesugalvoju kaip paprastai tam masyvui priskirt tuos laikus , tarkim viena diena ivedu, kad man ijungtu leda 3 kartus skirtingu laiku ,o kita kart pvz 6 kartus per para nustatytais laikais ijugtu.Esme panasi kaip android platformoi zadintuvo , galima iskart nustatyt ,kad kelis kart skirtingu laiku skambetu zadintuvas. Kitas klausimas kaip teisingai nustatyt fuse bitus atmega8 , kad veiktu su laikrodiniu 32.768 KHz kvarcu , noriu, kad laikrodis butu tikslus. Nustatyt fuse bitus noreciau per avr studio , nes per ja ir pati hex irasineju. |
|
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 03 27, 22:45 |
|
|
|
Pirma tai naudoji normalų 16Mhz kvarcą, nes su laikrodiniu poto gali neužtekti greičio. Naudoji pertraukimą, taimerį su preskaleriu, gauni pertraukimo suveikimą kas 1/x sekundės, tada jau programoje sumuoji iki gausi x ir tada laiką kituose kintamuosiuose skaičiuoji. O žadintuvo laikus eeprome saugok - ten koks 10 baitas bus žadintuvo laikų skaičius, nuo 11 eina diena, valanda, minutė, sekundė -tiek baitų kiek reikia. Antro žadintuvo laikų pradžios baitą jau pasiskaičiuosi priklausomai nuo to kiek vieno žadintuvo duomenų bus. Ir poto kas sekunde gali tikrinti esamą laiką ir žadintuvo laikus - sutapo, kažką darai. Bet šiaip reikia pradėti nuo algoritmo sudarymo. |
|
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 03 28, 02:57 |
|
|
|
manau siuo atveju patogiauisa bus laika saugoti tiesiog viename 32 bitu skaiciuje. o ant ekrano ji isvedineti atskira funkcija suskaidant i dienas valandas minutes ...
tada visas laiko skaiciavimas suives i viena ++ komanda kai tieigo pertraukimo metu padidini skaitliuka vienetu. ir cia pats atlieki patikrinima ar nera sutapimo su visais is nustatytu laiku.
konvertuoti is to 32bitu skaicisua i normalu laika galima analogiskai kaip ir konvertujant skaicius i desimtaine ar kokia kita sistema.
laiko reguliavimas - ir + mygtukais irgi labai nesudetingas |
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 03 28, 11:25 |
|
|
|
8 bitai, 32 bitai? gal galit papasakot ką nors apie tai? |
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 03 28, 12:10 |
|
|
|
11111111 - 8 bitai - 1 baitas
11111111 11111111 11111111 11111111 - 32 bitai - 4 baitai |
|
_________________ Bandau praplėst žinias |
|
|
|
|
programavimo niuansai |
Parašytas: 2013 03 28, 12:23 |
|
|
|
dabar gilinios kaip taimeri teisingai susikonfiguruot ,bet prie topacio paklausiu kaip kintamaji saugot eeprome ? pvz
Kodas: |
int a=5;
int b=3;
int c=0;
int main(void);
{
programa
}
|
kaip tuos a,b,c kintamuosius saugot eeprome ? beja atjungus ir vel ijungus maitinima mikrokontroleriui , reiksmes eeprome islieka ? |
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 03 28, 14:46 |
|
|
|
Ugniues rašo: |
8 bitai, 32 bitai? gal galit papasakot ką nors apie tai? |
8 bitai tai char
32 bitai long
visa kita padarays C kompiliatorius.
ir koki kompiliatoriu naudoji? jei tai codevision tai norint kintamuosius patalpinti i eeprom tiesiog rasom
eeprom long alarm[16]
o paskui naudijam kaip iprasta.
jei itas kopiliatoriuys tai turbut reikes kazkokios eeprom funkcijos.
sakykim deklaruojam globalu kintamaji
long time;
pertraukimas (){
time++;
if (time>XXXX) time=0;
}
} |
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 03 28, 15:02 |
|
|
|
O tu datašytą atmegos skaitei? Nes visi pavyzdžiai duoti kaip su eeprom elgtis. |
|
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 03 28, 23:15 |
|
|
|
Datasheete labai placiai ir sakyciau sudetingai aprasyta , nelabai pagaunu , cia eeprom write funkcion
Kodas: |
void
EEPROM_write(
unsigned int
uiAddress,
unsigned char
ucData)
{
/*
Wait for completion of previous write
*/
while(EECR & (1<<EEWE))
;
/* Set up address and data registers */
EEAR = uiAddress;
EEDR = ucData;
/*
Write logical one to EEMWE */
EECR |= (1<<EEMWE);
/* Start eeprom write by setting EEWE */
EECR |= (1<<EEWE);
} |
tai gana sudetingai atrodo , Digix sake codevision avr priskirimas
Kodas: |
eeprom long alarm[16] |
tai nelabai suprantu kam reikia tiek kodo, as naudoju microc pro ir avr studio , tai mikcroC helpe radau pavizdi
Kodas: |
EEPROM_Write(address, dData); |
tai data mano norima isaugot reiksme , o koki adresa nurodyt ? raso address of the EEPROM memory location to be written. Kaip teisingai pasirinkt ta adresa eepromo ? |
|
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 03 29, 02:17 |
|
|
|
ant tavo microc teks siek tiek daugisu pasidarbuoti kad pasiekti eeproma.
sakykim kad isaugoti 32 bitu kintamaji x masyve numeriu 1
EEPROM_Write(i*4+0, (x>>0)&0xff );
EEPROM_Write(i*4+1, (x >> 8 )&0xff );
EEPROM_Write(i*4+2, (x>>16)&0xff );
EEPROM_Write(i*4+3, (x>>24)&0xff );
nebent yra iskart 32 bitu irasymo skaitymo funkcija
skaitymas bus analogiskas kaip raysmas
kaip parinkti adresa nezinau, bet ko gero gali pradeti nuo nulinio |
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 03 29, 14:21 |
|
|
|
o jei vietoj unsigned short rasyt long , gal suveiktu ?
example
Kodas: |
unsigned address = 0x732;
unsigned short dData = 0x55;
...
EEPROM_Write(address, dData); |
|
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 04 13, 16:36 |
|
|
|
buvau isvykes tai teko atidet projekteli , dabar gristant pre taimerio.
Jei imu 16mhz kvarca ir prescaler 1024 , tai gaunas
16 000 000 / 1024 =15625 / per sekunde
O jei pvz imt 8mhz kvarca ir prescaler 256
8 000 000 / 256 = 31250 / per sekunde
tai irgi gaunas be kablelio ir sutaupom resursu kazkiek ir kiek supratau atmegai 16mhz ribinis rezimas , ar cia is tikro nieko nesusitaupo ir nieko tokio del 16 mhz ? Ir kaip su tikslumu ? kuriuo atveju laika skaiciuotu tiksliau , ar vienodai? Greicio manau uztektu pilnai ir 8mhz. |
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 04 13, 16:56 |
|
|
|
Tikslumas nuo daliklio niekaip nepriklauso - koks kvarco tikslumas, toks ir laiko tikslumas. Jei jau labai nori su laikrodiniu žaisti, tai imk tada atmega16, ji prie tosc leidžia laikrodinį kvarcą pajungti, bus tau nuosavas atmegos rtc, nuo darbinio kvarco nepriklausantis. |
|
|
|
|
|
programavimo niuansai |
Parašytas: 2013 04 13, 17:05 |
|
|
|
gal apsirobosiu paprastesniu varijnatu ir tada ta 16mhz kvarca det del greicio. Del laiko skaiciavimo manau patogiausia ,kad laika skaiciuotu 24val, tai butu 86400 sekundes, ir viska skaiciuot sekundem ,o poto laiko isvedima i ekrana galetu iskaiciuot is sekundziu. Bet kaip tai patogiai padaryt? Gal pertraukima kas 86400? |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
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 |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods |
|
|
|