 |

|
|
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 23, 22:43. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » elementarus kodas
|
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 2 iš 2 Pereiti prie Atgal 1, 2 |
|
 |
elementarus kodas |
Parašytas: 2010 10 28, 18:53 |
|
|
|
|
Yra ivairiu budu, gali naudot flagus, arba perrasyt interupa. Na gerai sitam daiktui kuris neturi jokios paskirties nera skirtumo tie delay. Bet bent man tai baisu ziuret kai interupte delay privaryta  |
|
|
|
|
|
 |
elementarus kodas |
Parašytas: 2010 10 29, 08:34 |
|
|
|
|
| sneikaz rašo: |
Yra ivairiu budu, gali naudot flagus, arba perrasyt interupa. Na gerai sitam daiktui kuris neturi jokios paskirties nera skirtumo tie delay. Bet bent man tai baisu ziuret kai interupte delay privaryta  |
O negalėtum parašyt kodo, kaip tuos flagus naudot?  |
|
|
|
|
|
 |
 |
elementarus kodas |
Parašytas: 2010 10 29, 11:10 |
|
|
|
|
Vienos knopkes tikrinimas be kokiu delay, jei kodas labai letai veikia galima buttoncounteri pakeist i char tipa, arba nuresetint ne i 0, o kokia tarpine reiksme.
| Kodas: |
#include <avr/io.h>
#include <avr/interrupt.h>
unsigned char volatile Status = ButtonPressed;
#define Done 0x01
#define ButtonPressed 0x02
#define Button (!(PINA & (1<<PA0)))
int main(void)
{
unsigned int ButtonCounter = 0;
sei();
for(;;){//Main event loop//
if (Button & !(Status & ButtonPressed)){
Status |= ButtonPressed;
ButtonCounter = 0;
DO SOMETHING();
}
ButtonCounter++;
if ((ButtonCounter == 0) & !Button)
Status &= ~ButtonPressed;
if (Status & Done){
DO SOMETHING();
Status &= ~Done;
}
}
}
ISR(xxxxxx){
Status |= Done;
} |
|
|
|
|
|
|
 |
 |
elementarus kodas |
Parašytas: 2010 10 29, 15:20 |
|
|
|
|
Kaip vienai knopkei gan sudėtinga, jei pas mane sakai daug delay tai cia daug if. Neaišku kiek tas debounce užtrunka laiko, parašius daugiau kodo, ar pakeitus uC clk dažnį kaskart perskaičiuot reikia ButtonCounter. Jei parašytum, kad led sumirksėtu tai dar kruvos kintamųjų ir if sąlygų reikėtu, o pas mane uztenka tik vienos delay funkcijos, o rezultatas tas pats.
Kaip sakant - genialu tai kas paprasta.
Jei labai baisus tas pertraukimas galima ir be jo
| Kodas: |
void main(void)
{
unsigned char i;
DDR = (1 << LED | 0 << BT);
PORT = (0 << LED | 1 << BT);
TCCR1A = 0x00;
TCCR1B = (1<<CS12 | 0<<CS11 | 1<<CS10); // presc 1024
OCR1A = 19531; // 1024 * 19531 * (1/4MHz) = 5s
while(1)
{
if(!bitas(PIN,BT))
{
delay_ms(10);
count++;
while(!bitas(PIN,BT));
TCNT1 = 0;
delay_ms(10);
sbi(TIFR,OCF1A);
}
if(bitas(TIFR, OCF1A))
{
for(i=0; i<count; i++)
{
sbi(PORT,LED);
delay_ms(250);
cbi(PORT,LED);
delay_ms(250);
}
count = 0;
}
}
} |
|
|
|
|
|
|
 |
 |
elementarus kodas |
Parašytas: 2010 10 29, 16:47 |
|
|
|
|
Nu jo pora ifu skaitos daug Siaip kol vien pas tave debounce padarys, tuos kelis ifus spes tukstancius kartu patikrint... Del daznio jokiu problemu, galima padaryt automatini perskaiciavima. Dabar isivaizduok kaip reiketu naudotis kokiu kompu kur paspaudi knopke ir visos programos sustoje kol neatleidi... |
|
|
|
|
|
 |
elementarus kodas |
Parašytas: 2010 10 29, 17:42 |
|
|
|
|
delay_ms(int debounce)
{
for(int i=0; i<debounce; i++)
{
//funkcijos kurias nori tikrinti debounce metu
}
}
be jokių if tas pats š...
Beje parašyk prog. kompe su kokiu c++ builder, kad ciklas uztruktu iki kelių sek. kai paspaudi knopkę ir pamatysi kaip nebeveikia kitos knopkės ir lango nebegali pajudint kol nesibaigia ciklas Aišku galima padaryt, kad veiktu normaliai, bet čia jau kita tema. |
|
|
|
|
|
 |
elementarus kodas |
Parašytas: 2010 10 29, 18:08 |
|
|
|
|
| Ne taps s... Dabar nuspaudus knopke tu vykdai tik tam tikras funkcijas, o mano atveju vykdomos visos funkcijos is eiles kol apsuka rata. Su Kompu tai davei atvirscia pavyzdi. Nesuprantu ko tu bijai tu ifu? |
|
|
|
|
|
 |
elementarus kodas |
Parašytas: 2010 10 30, 11:23 |
|
|
|
|
| sneikaz rašo: |
| Su Kompu tai davei atvirscia pavyzdi |
Pvz su kompu. Pajudink langą kol ciklas sukasi. Šiaip nereikia pradėt lygint kompo su kontroleriu.
Nieks tu if nebijo. Viskas priklauso nuo užduoties. Šitoj užduoty, kad pamirksint led viso to nereikia. Tai kam apsunkint sau gyvenimą.
Tavo pertraukimas kode netenka prasmės, nes įvykus pertraukimui pasikeis tik status reikšmė ir reiks laukt kol programa daeis iki if sąlygos kur patikrins status reikšmę ir tik tada įvykdys kodą kuris turėjo būti pertraukimo funkcijoj. |
|
|
|
|
|
 |
 |
elementarus kodas |
Parašytas: 2010 10 30, 11:46 |
|
|
|
|
As su kompu daviau tik kaip pvz., pagal kuri veikia tavo programa. Paspaudi knope ir viskas sustoja, o ne paleidi su real time pririotetu ir viskas sustoja. Taip kol priais iki to status flago uztruks kelias ar keliaskedimt mikrosekundziu... Cia buvo tik pavyzdys, galima tam ISR ir kitus butinus veiksmus atlikt. Zinok pries 2-3 metus ir man tiko tie delay, dabar jau nebe...
Kazkaip nematau kurioj cia vietoj gyvenimas apsunkinamas. Del manes tai kas kaip norit taip darykit, tik nepatiko man tas apibudinimas "grazus kodas". |
|
|
|
|
|
 |
elementarus kodas |
Parašytas: 2010 10 30, 18:57 |
|
|
|
|
Teskite mielieji, teskite...mes is to mokomes...  |
|
|
|
|
|
 |
elementarus kodas |
Parašytas: 2010 10 31, 21:19 |
|
|
|
|
na ka gi vienaip kitaip bandau ant attiny2313 neveikia (simuliuoju ant proteus isis) viskas gerai gaunas su atmega 16 atmega 8 atmega 32... o su attiny2313 kodel ? galit paaiskint ant attinio pakeiciau stai kaip:
| Kodas: |
#define PORT PORTB
#define PIN PINB
#define DDR DDRB
#define BT 0
#define LED 4 |
|
|
|
|
|
|
 |
elementarus kodas |
Parašytas: 2010 11 01, 00:25 |
|
|
|
|
| o gal dar zinot kur rast pamokas o gal net visa koda attiny2313 mikrovaldikliui, su kurio galima butu i 16x1 lcd atvaizduot koki nors teksta? |
|
|
|
|
|
|
 |
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 |
 |
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 |
|

|
 |