 |

|
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 07 11, 09:58. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » atmega16 zaliam
|
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
|
|
|
 |
 |
atmega16 zaliam |
Parašytas: 2014 10 28, 11:08 |
|
|
|
Visa givenima dirbau su analogu ant senatves sugalvojau pazaist su mikrovaldikliais programu rasimas zalias miskas .pasigaminau programatoriu su atmega16 ant porta sulitavau 8 migtukus su bendra mase ant portd 8 ledus noriu pasidarit kaip miktuka 1 paspaudi uzsidega 1 ledas 2 migtuka 2 ledas ir taip toliau kartojant cikla uzgesta
cia radau tokia bet man nefiksuoja kai laikau tik dega
int main(void){
unsigned char i; // temporary variable
DDRA=0x00; // set PORTA for input
DDRD=0xFF; // set PORTB for output
PORTD=0x00; // turn ON all LEDs initially
PORTA=0XFF;
while(1){
// Read input from PORTA.
// This port will be connected to the 8 switches
switch(PINA)
{
case 0xFE:
printf("Button 0\n") ;
break;
default:
printf("nothing happening");
}
// Send output to PORTB.
// This port will be connected to the 8 LEDs
i = PINA;
PORTD=i;
}
return 1;
} |
|
|
|
|
 |
 |
atmega16 zaliam |
Parašytas: 2014 10 28, 11:27 |
|
|
|
Juk taip ir suprogramuota: pastoviai PORTA priskirti PORTD būseną. Todėl kai atleidi iškart ir užgęsta. O kada nori kad užgestų? Jei nori, kad neužgestų o užsidegtų vis daugiau diodų, naudok OR.
PORTD |= i; |
|
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 28, 11:35 |
|
|
|
As noriu kad kaip paspaudi 1 knopke uzsidega pirmas dijodas vel paspaudi 1 uzgesta dijodas noriu junginet per portd per tranzus 8 reles visas atskirai |
|
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 28, 11:53 |
|
|
|
Tada:
PORTD ^= i;
Nors jeigu pas tave mygtukai į žemę ir nuspaudus gausis 0, tai matyt reikia invertuoti:
PORTD ^= ~i; |
|
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 28, 16:25 |
|
|
|
PORTD ^= ~i; padejo bet reik labai pataikit ijunkt isjunkt per du ar tris kartus suveikia nera tokio minksto jungimo |
|
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 28, 17:35 |
|
|
|
vilinerka rašo: |
PORTD ^= ~i; padejo bet reik labai pataikit ijunkt isjunkt per du ar tris kartus suveikia nera tokio minksto jungimo |
paprasto mygtuko kontaktai itin netobuli, tad nuspaudimo/atleidimo metu ivyksta daugkartinis kontakto atsiradimas/praradimas ir jei programa nemoka to apdoroti, tai ir gaunasi nesamone.
cia sioks toks pavyzdukas:
Kodas: |
for(;;){
char key = ( ~PINx ) & MASK;
if ( key ){
delay( 100 );
PORTx ^= key;
if ( key & key_1_MASK ) { veiksmas_1 }
if ( key & key_2_MASK ) { veiksmas_2 }
if ( key & key_3_MASK ) { veiksmas_3 }
....
if ( key & key_n_MASK ) { veiksmas_n }
while ( ( ~PINx ) & MASK == key );
delay( 100 );
....
}
....
}
|
[/code] |
|
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 28, 17:37 |
|
|
|
Tai domėkis toliau, kas yra kontaktų drebėjimas ir kaip to išvengti programiniu būdu. |
|
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 28, 19:21 |
|
|
|
#define knopke 1
unsigned char a;
int main(void){
DDRA=0x00; // set PORTA for input
DDRD=0xFF; // set PORTB for output
PORTA=0XFF;
a=0;
while(1){
if(!(PINA&knopke))//jei paspausta A porto 1 koja
{while(!(PINA&knopke)){}
if(a==0){PORTD=0xFF; a=1;}
else{PORTD=0; a=0;}
}
}
}
Pabandyk  |
|
_________________ Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau  |
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 29, 17:06 |
|
|
|
o kaip ta programa atroditu visa? |
|
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 29, 17:08 |
|
|
|
#define knopke 1
unsigned char a;
int main(void){
DDRA=0x00; // set PORTA for input
DDRD=0xFF; // set PORTB for output
PORTA=0XFF;
a=0;
while(1){
if(!(PINA&knopke))//jei paspausta A porto 1 koja
{while(!(PINA&knopke)){}
if(a==0){PORTD=0xFF; a=1;}
else{PORTD=0; a=0;}
}
}
}
Pabandyk Smile
sita minkstai jungia bet iskart visus ledus ir tik su 1 knopke |
|
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 29, 19:20 |
|
|
|
Nu tai tokią ir parašiau kad būtų - visi ledai su pirma knopke Toliau matomai reikia aiškintis kaip padaryti, kad būtų vienas ledas. |
|
_________________ Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau  |
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 30, 10:11 |
|
|
|
nu aisku matau programavimas ne man desiu 8 ne555 mikres ir bus viskas ok |
|
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 30, 11:25 |
|
|
|
o nebūtų pigiau T tipo Flip-flop'as? en.wikipedia.org/wiki/Flip-flop_(electronics)#T_flip-flop |
|
Paskutinį kartą redagavo Zaria_klp, 2014 10 30, 15:18. Redaguota 3 kartus(ų) |
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 30, 15:16 |
|
|
|
Jeigu mano variantas su "PORTD ^= ~i;" junginejo gerai, tik nestabiliai, tai ten poros eiluciu betruksta. Negi mesi lauk gatava daikta?
Po tos eilutes idek:
while (~i) {}
_delay_ms(100);
Jei nekompiliuoja del delay, virsuje reikia #include <util/delay.h> |
|
|
|
|
 |
atmega16 zaliam |
Parašytas: 2014 10 31, 23:42 |
|
|
|
_delay_ms(1000); puikiai veikia aciu Dariau tu genijus .Uzsikreciau c++ pobiski pradedu suprast esme pradejau no youtube pamoku dabar bent kelios eilutes jau aiskios |
|
|
|
|
|
 |
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 |
 |
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 |
 |
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
 |
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
 |
Football Training Kit
Football Training Equipment,
Football Skills,
Football Training |
|

|
 |