|
|
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 12 16, 01:47. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » Skaitmeninis potenciometras ir mikrokontroleris
|
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
|
|
|
|
Skaitmeninis potenciometras ir mikrokontroleris |
Parašytas: 2006 11 25, 00:09 |
|
|
|
Sveiki. Turiu Atmega16 ir skaitmenini potenciometrą. Bendrą išvadą jungiau prie GND, o kripties prie PB0 ir PB1.
Ilgai galvojau kaip reikėtų nustatyti kryptį ir sugalvojau štai taip:
Kodas: |
char bukle=0;
while(1)
{
if (!(PINB&1) & (bukle=1)) {
lcdGotoXY(15,1);
rprintf("kaire");
bukle=0;
}
else{
bukle=1;
}
if (!(PINB&2) & (bukle=1)) {
lcdGotoXY(15,1);
rprintf("desine");
bukle=0;
}
else{
bukle=1;
}
} |
Kodas kažkiek veikia, bet negerai. Užfiksuojama neteisingas apsisukimų skaičius. Gal kas pasiūlis gudresnį būda nustatyti pasisukimus į vieną ar į kitą pusę? |
|
|
|
|
|
|
Skaitmeninis potenciometras ir mikrokontroleris |
Parašytas: 2006 11 25, 00:35 |
|
|
|
as tai naudojau pertraukimus, kitaip teks ant jo labai daug procesoriaus grecio paskirti.
vienas laidas eina i pertraukimu valdyma ir skaiciouja apsisukimus,
kitas naudojamas sukimo krypciai nustatyti
padaryta ant atmega16. naidojami D3 ir B2 laidai
as naudojau ne potenciometra o optini davikli nuo peles rutuliuko.
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
// #asm("sei")
if (PIND.3==0){
MCUCR=0b1100;
if (PINB.2==0){ ax++; } else {ax--;} }
else{ MCUCR=0b1000;
if (PINB.2==0){ ax--; } else {ax++;} }
} |
|
|
|
|
|
|
Skaitmeninis potenciometras ir mikrokontroleris |
Parašytas: 2006 11 25, 10:44 |
|
|
|
Digix rašo: |
as tai naudojau pertraukimus, kitaip teks ant jo labai daug procesoriaus grecio paskirti.
vienas laidas eina i pertraukimu valdyma ir skaiciouja apsisukimus,
kitas naudojamas sukimo krypciai nustatyti
padaryta ant atmega16. naidojami D3 ir B2 laidai
as naudojau ne potenciometra o optini davikli nuo peles rutuliuko.
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
// #asm("sei")
if (PIND.3==0){
MCUCR=0b1100;
if (PINB.2==0){ ax++; } else {ax--;} }
else{ MCUCR=0b1000;
if (PINB.2==0){ ax--; } else {ax++;} }
} |
Tikriausiai teks ir man paskirti vieną pertrauktį. Gal galėtum pakometuoti savo kodą? Ką reiškia MCUCR=0b1100;? Kaip spėju, rašei su IAR? |
|
|
|
|
|
|
Skaitmeninis potenciometras ir mikrokontroleris |
Parašytas: 2006 11 25, 15:16 |
|
|
|
probrama kompiliuota su codevision
ivykus pertraukimui priklausomai nuo to kas atsitiko, nustatome sekancio pertraukimo salygas sakykim jei tuo metu pertraukimo iejimas 1 tai nustatome laukti 0.
paskui jei tuo metu kita koja yra 1 tai sukimosi kryptis i viena puse, jei 0 tai i kita
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
if (PIND.3==0){
MCUCR=0b1100; // ijungti pertraukima ant 0->1
if (PINB.2==0){ ax++; } else {ax--;} } //krypties nustatymas
else{ MCUCR=0b1000; // ijungti pertraukima ant 1->0
if (PINB.2==0){ ax--; } else {ax++;} } //krypties nustatymas
} |
|
|
|
|
|
|
Skaitmeninis potenciometras ir mikrokontroleris |
Parašytas: 2006 12 18, 16:26 |
|
|
|
Digix rašo: |
probrama kompiliuota su codevision
ivykus pertraukimui priklausomai nuo to kas atsitiko, nustatome sekancio pertraukimo salygas sakykim jei tuo metu pertraukimo iejimas 1 tai nustatome laukti 0.
paskui jei tuo metu kita koja yra 1 tai sukimosi kryptis i viena puse, jei 0 tai i kita
// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
if (PIND.3==0){
MCUCR=0b1100; // ijungti pertraukima ant 0->1
if (PINB.2==0){ ax++; } else {ax--;} } //krypties nustatymas
else{ MCUCR=0b1000; // ijungti pertraukima ant 1->0
if (PINB.2==0){ ax--; } else {ax++;} } //krypties nustatymas
} |
Nelabai suprantu programos veikimą |
|
|
|
|
|
|
Skaitmeninis potenciometras ir mikrokontroleris |
Parašytas: 2006 12 18, 17:23 |
|
|
|
sunkiai suprantama bet uz tai kokia paprasta
principas nesudetingas.
tu gauni 2 signalus, vienas is ju skaiciuoja apsisukimus kitas nurodo krypti.
sakykim jei pirmas dabar perejo is 0 i 1 o antras tuo metu 0 tai sukimo kryptis "++" jei 1 tai "--"
jei pirmas signalas keiciasi is 1 i 0 tada viskas atbulai
pasikeitima uzfiksuoja pertraukimas belieka tik ivertinti sukimosi krypti. |
|
|
|
|
|
Skaitmeninis potenciometras ir mikrokontroleris |
Parašytas: 2006 12 18, 21:04 |
|
|
|
Čia pertraukimas įvyksta gavus signalą į viena iš kojų, prie kurių prijungtas potenciometras? Jei taip, tai kolkas nesugebu to padaryti, nebent naudodamas abi INT kojas |
|
|
|
|
|
Skaitmeninis potenciometras ir mikrokontroleris |
Parašytas: 2006 12 18, 23:22 |
|
|
|
pertraukimo uztenka vieno.
tiesiog po kievieno pertraukimo juos reikia perkonfiguruoti. sakykim jei dabar signalas perejo is 0->1 tai pakeiciam nustatymus kad atmega lauktu 1->0
tau jug neidomu kai nera jokiu pasiketimu todel ir naudojam toki pertaraukima |
|
|
|
|
|
Skaitmeninis potenciometras ir mikrokontroleris |
Parašytas: 2006 12 19, 14:04 |
|
|
|
skaityk datasheeta kaip interruptus ijungti
jei naudotum kojas tokias kaip as tai
ijungiama taip
(nezinau pats ka tai reiskia, cia codevision wizardas ta sugalvojo)
// External Interrupt(s) initialization
// INT0: Off
// INT1: On
// INT1 Mode: Any change
// INT2: Off
GICR|=0x80;
MCUCR=0b1100;
MCUCSR=0x00;
GIFR=0x80;
#asm("sei") //ijungti visus pertraukimus |
|
|
|
|
|
|
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,
FS25 Maps |
|
|
|