|
|
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 01 07, 06:50. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » Pirma pamoka - LED blink
|
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
|
|
|
|
Pirma pamoka - LED blink |
Parašytas: 2015 10 02, 13:47 |
|
|
|
Sveiki, ilgą laiką praktikavausi su simuliatoriumi ir nebuvo jokių problemų. Dabar įsigijęs PIC programatorių susiduriu su problema jau pirmoje pamokoje .Gal užmestūmėt akį ką darau netaip?
Maitinimo šaltinis - YwRobot 5V/3,3V.
Čia mikroschema
O čia kodas (mikroC PRO compileris):
void main() {
TRISB = 0;
PORTB = 0;
while(1){
PORTB = 1;
Delay_ms(1000);
PORTB = 0;
Delay_ms(1000);
};
}
Ant breadboard'o atrodo taip
Išorinio OSC nenaudoju jokio, nes datasheet'e nurodyta kad yra vidinis. |
|
|
|
|
|
|
Re: Pirma pamoka - LED blink |
Parašytas: 2015 10 02, 14:27 |
|
|
|
Ernestasd rašo: |
Gal užmestūmėt akį ką darau netaip? |
Nežinau kaip PIC'uose, bet AVR'uose taip parašyta programa mirksintų tik PB0 (RB0) išėjimą, o ne PB5 (RB5)... Jei būtinai reikia RB5 - tada turėtų būti:
Kodas: |
void main() {
TRISB = 0;
PORTB = 0;
while(1){
// PORTB = 1; //RB0 išėjimas
PORTB = 20; //RB5 išėjimas
// arba galima kitaip:
// PORTB = 0b00000001; // RB0
// PORTB = 0b00000010; // RB1
// PORTB = 0b00000100; // RB2
// PORTB = 0b00001000; // RB3
// PORTB = 0b00010000; // RB4
// PORTB = 0b00100000; // RB5
// PORTB = 0b01000000; // RB6
// PORTB = 0b10000000; // RB7
// PORTB = 0b11111111; // visi išėjimai (arba PORTB = 255;)
Delay_ms(1000);
PORTB = 0; // užgesins visus išėjimus
Delay_ms(1000);
};
} |
|
|
|
|
|
|
|
Pirma pamoka - LED blink |
Parašytas: 2015 10 02, 16:04 |
|
|
|
Citata: |
PORTBbits.PB5 = 0 arba 1
arba
LATBbits.LATB5 = 0 arba 1 |
Šitą komandą kompileris nepraleidžia, išmeta errorus.
hencia, man regis AVR 0 reiškia input, o 1 output. Pickuose atvirkščiai O'utput , 1'nput. Ir dabar jau suveikė kodas, kai parašiau binary.
Kodas: |
void main() {
TRISB = 0;
PORTB = 0b00000000;
while(1){
RB5_bit = 1;
Delay_ms(1000);
RB5_bit = 0;
Delay_ms(1000);
};
} |
Ačiū Jums labai už pagalbą. |
|
|
|
|
|
Pirma pamoka - LED blink |
Parašytas: 2015 10 03, 10:25 |
|
|
|
Nekuriant naujos temos, turiu trumpą klausimą:
Bandau pasinaudoti LCD ekranėliu(Hitachi HD44780 controleris), ir reikia analog išjungti į digital, kode. Datasheet'e radau parašyta "CMCON = 111;" , o vienoje pamokoje aptikau tą patį tik "CMCON |= 7" Kaip reikėtų suprasti šį išsireiškimą " |= "? |
|
|
|
|
|
Pirma pamoka - LED blink |
Parašytas: 2015 10 03, 11:29 |
|
|
|
Dar autoriui nepamaisytu nurodyti ir koki kompiliatoriu naudoja, nes ju biblioteku sintakse gerokai skiriasi ir gali buti nesuderinama. |
|
|
|
|
|
Pirma pamoka - LED blink |
Parašytas: 2015 10 03, 11:47 |
|
|
|
Atsakau į savo pateiktą klausimą
0x07(hexdecimal) , 111(decimal) , |= 7 visų reikšmė ta pati.
|
|
|
|
|
|
Pirma pamoka - LED blink |
Parašytas: 2015 10 03, 12:01 |
|
|
|
Na bent jau AVR asembleryje tai dvejetainiai prasideda 0b, šešioliktainiai 0x, dešimtainiai be nieko. O naudojami jie pagal poreikį - jei kokiam registre reikia bitų reikšmes pakeisti tai su binarine išvaizda patogiau, jei matematiniai veiksmai tai dešimtainiai ir tt. Bet čia jau prieš pradedant programuoti reikia tokius dalykus mokytis pagal kompiliatorių ir tt. |
|
|
|
|
|
Pirma pamoka - LED blink |
Parašytas: 2015 10 03, 12:13 |
|
|
|
Pabandžiau : PORTA = 0b11111111 , ir PORTA = 0xFF ; Jokių errorų, reiškias kaip ir AVR galima. |
|
|
|
|
|
Pirma pamoka - LED blink |
Parašytas: 2015 10 03, 12:46 |
|
|
|
Ernestasd rašo: |
Pabandžiau : PORTA = 0b11111111 , ir PORTA = 0xFF ; Jokių errorų, reiškias kaip ir AVR galima. |
aisku, kad galima, bet ar teisinga?
pvz darai viso porto pakeitima ir tik pyst pertraukimas ir pakeicia kazka jame, o tu ant virsaus ikali tik tau "teisingas" atrodancias reiksmes...
juk ne siaip sau PIC turi bitines operacijas su registrais ir portais, kad nereiketu pries kiekviena manipuliacija daryti cli()/sei().
Beje, AVR irgi turi bitines operacijas, tik su mazesniu kiekiu registru tai veikia, todel be cli()/sei() cia gali neapseiti. |
|
|
|
|
|
|
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 |
|
ATS Trailers
American Truck Simulator Mods,
ATS Trucks,
ATS Maps |
|
|
|