 |

|
|
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 24, 06:11. Visos datos yra GMT + 2 valandos.
|
|
|
 |
Forumas » Mikrovaldikliai » Reikalinga pagalba
|
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 |
|
 |
Reikalinga pagalba |
Parašytas: 2011 10 15, 08:09 |
|
|
|
|
Įdomumo dėlei pabandžiau su 3 jungtukais ir 4 led, bet kažkur padariau klaidą.
#include <avr/io.h>
int main(void)
{
while(1)
{
DDRD=240; //Nustatome PD4,PD5,PD6,PD7 kaip isejima
while(1){
if ((PINB & 224) != 224){ // Tikriname ar nera paspausti mygtukai
if (PINB & 32) PORTD=(PORTD & 15) | 160; // uzdegam LED2;LED4, gesinam LED1;LED3
if (PINB & 64) PORTD=(PORTD & 15) | 80; // uzdegam LED1;LED3, gesinam LED2;LED4
if (PINB & 128) PORTD=(PORTD & 15) | 96; // uzdegam LED2;LED3, gesinam LED1;LED4
}
}}} |
|
|
|
|
|
 |
Reikalinga pagalba |
Parašytas: 2011 10 15, 09:55 |
|
|
|
|
lyg ir teisinga, tik nepatogi 10-aine sistema, naodok 2-aine 0bxxxxxxxx arba 16-aine 0xHH, jos patogesnes bitus atvaizduoti.
klaida gal mcu "uzsiuvime", fuse bituose ir t.t. |
|
|
|
|
|
 |
Reikalinga pagalba |
Parašytas: 2011 10 15, 19:45 |
|
|
|
|
| korne1 rašo: |
Įdomumo dėlei pabandžiau su 3 jungtukais ir 4 led, bet kažkur padariau klaidą.
#include <avr/io.h>
int main(void)
{
while(1)
{
DDRD=240; //Nustatome PD4,PD5,PD6,PD7 kaip isejima
while(1){
if ((PINB & 224) != 224){ // Tikriname ar nera paspausti mygtukai
if (PINB & 32) PORTD=(PORTD & 15) | 160; // uzdegam LED2;LED4, gesinam LED1;LED3
if (PINB & 64) PORTD=(PORTD & 15) | 80; // uzdegam LED1;LED3, gesinam LED2;LED4
if (PINB & 128) PORTD=(PORTD & 15) | 96; // uzdegam LED2;LED3, gesinam LED1;LED4
}
}}} |
O kur DDRB? |
|
|
|
|
|
 |
Reikalinga pagalba |
Parašytas: 2011 10 15, 20:08 |
|
|
|
|
| po reseto visi isvadai veikia kaip iejimai, tad DDRB nustatymas nebutinas. |
|
|
|
|
|
 |
Reikalinga pagalba |
Parašytas: 2011 10 16, 00:19 |
|
|
|
|
| Kodas: |
while(1) {
while(1) {
while(1) {
while(1) {
while(damn(one(!ok))) {
printf("LEARN TO USE IDENTIATION!\n");
}
}
}
}
}
|
 |
|
|
|
|
|
 |
Reikalinga pagalba |
Parašytas: 2011 10 16, 08:58 |
|
|
|
|
| AlgisL rašo: |
| po reseto visi isvadai veikia kaip iejimai, tad DDRB nustatymas nebutinas. |
nenaudojamus mikrovaldiklio isejimus palikti kaip iejimus yra blogis.
while(1) ciklas main programos kode turi buti tik vienas, nereikalinga pastoviai nustatineti DDR registrus.
Mygtuko paspaudimas reiskia kad i mikrovaldiklio iejimo pin'a paduodamas nulinis lygis,taciau sioje salygoje: if (PINB & 32) {} tikrinamas aukstas lygis.
if ((PINB & 224) != 224){ //tikrini ar visi trys mygtukai, o jeigu bus nuspausti tik du mygtukai?
| Kodas: |
#include <avr/io.h>
int main(void) {
DDRD=0b11111111;
DDRB=0b00011111;
DDRC=0b11111111;
while(1){
//kodas
} //end while
} //end main
|
[/code] |
|
|
|
|
|
 |
 |
Reikalinga pagalba |
Parašytas: 2011 10 16, 10:29 |
|
|
|
|
isvadu palikimas isejimais irgi pavojinga jei uztrumpinsi i VCC ar net GND
palikt iejimais pavojinga jei ilgi takeliai ir nera pull-up/down, o vartotojas megsta schema bandyti prijungdamas tesla coil ar kazka panasaus
du kar while(1) idejo autorius
mygtukai tikrinami jei nors vienas nuspaustas, kitaip nieko nedaroma
klaida yra is tikro mygtuku apdorojime, praleistas ! operatorius, bet ji vistiek turi nors kazkiek veikti, jei paspaudziami ne visi mygtukai.
| Kodas: |
#include <avr/io.h>
int main(void){
DDRD=0x60;
while(1){
if ((PINB & 0x60) != 0x60)
{ // Tikriname ar nera paspausti abu mygtukai
if (!(PINB & 0x20)) PORTD=(PORTD & 0x9F) | 0x20; // uzdegam LED1, gesinam LED2
if (!(PINB & 0x40)) PORTD=(PORTD & 0x9F) | 0x40; // uzdegam LED2, gesinam LED1
}//if
}//while
}//main
|
|
|
|
|
|
|
|
 |
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 |
|

|
 |