Elektronika.lt
 2019 m. spalio 20 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

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 2019 10 20, 19:48. Visos datos yra GMT + 2 valandos.
 Forumas » Programavimas » Programa mikro kontroleriui ATTINY2313
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 11
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 Programa mikro kontroleriui ATTINY2313
PranešimasParašytas: 2019 09 20, 19:55 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Vytkaaa
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Sveiki.
Kreipiuosi į Jus pagalbos, nes iš manęs programuotojas nekoks.
Tarkim situacija tokia, yra mikrokontroleris Attiny2313 du gerkonai ir trys relės. Gal kas galėtų patarti ar parašyti programa, kad:
1) Suveikus pirmam gerkonui - suveikia relė Nr.1.
2) Suveikus antram gerkonui - suveikia relė Nr.2.
3) Suveikus pirmam ir antram gerkonams - suveikia relė Nr.3.

Aš su CodeVisionAVR Evaluation pirma ir antra punktus man gaunas kažkas panašaus, bet trečio punkto niekaip neišmastau koki cikla panaudoti ar dar ką?. Vienu žodžiu bėda tokia
 Programa mikro kontroleriui ATTINY2313
PranešimasParašytas: 2019 09 20, 20:26 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
pasikoreguoji bitus ir teisingai nusistatai portus
Kodas:

  uint8_t state = 0;
  // pasiziurime kokie sudirbo gerkonai (aktyvus 0, t.y. trumpinimas i GND)
  if (!(PINB & (1 << PB1))) { state |= 1; }
  if (!(PINB & (1 << PB2))) { state |= 2; }

  // isejimu logika
  switch (state) {
     case 1: // suveikes tik 1 gerkonas
        PORTB &= ~((1 << PB4) | (1 << PB5)); // isjungiame 2, 3
        PORTB |= (1 << PB3);                           // ijungiame 1 rele
        break;
    case 2: // suveikes tik 2 gerkonas
        PORTB &= ~((1 << PB3) | (1 << PB5)); // isjungiame 1, 3
        PORTB |= (1 << PB4);                           // ijungiame 2 rele
        break;
    case 3: // suveike abu gerkonai
        PORTB &= ~((1 << PB3) | (1 << PB4)); // isjungiame 1, 2
        PORTB |= (1 << PB5);                           // ijungiame 3 rele
        break;
     default: // isjungiame visas
        PORTB &= ~((1 << PB3) | (1 << PB4) | (1 << PB5));
        break;
  }

P.S. gali buti smulkiu sintakses klaidu, nes netikrinau
 Programa mikro kontroleriui ATTINY2313
PranešimasParašytas: 2019 09 23, 12:11 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
zemiau pataisyta


Paskutinį kartą redagavo AlgisL, 2019 09 23, 13:49. Redaguota 2 kartus(ų)
 Programa mikro kontroleriui ATTINY2313
PranešimasParašytas: 2019 09 23, 13:28 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Vytkaaa
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Algi viskas gerai, aš pagal pirma tavo varijanta dariau viskas veikai kaip priklauso. Aš pats su bitais prigrybavau, nuo žioplumo vaistų nėra, tai pradžiai ir nesigavo.

Ačiū Algi už pagalbą.
 Programa mikro kontroleriui ATTINY2313
PranešimasParašytas: 2019 09 23, 13:48 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
AlgisL rašo:
Kaip jau minejau, as GCC gerbejas, tad IAR gali prie ko nors prisiknisti
pvz, truks interrupts includo...
GCC turi patogu ATOMIC_BLOCK, o kaip ten IAR, reikia googlinti.
Kodas:

#include <tiny2313.h>
#include <delay.h>

#define IN_PINS PIND
#define PIN1 ( 1 << 0 )
#define PIN2 ( 1 << 1 )
#define OUT_PORT PORTB
#define RELE1 0bxxxxxxxx // susidek bitus
#define RELE2 0bxxxxxxxx // bet tik ten kur
#define RELE3 0bxxxxxxxx // reliu / LED valdymas
#define R_OFF ~( RELE1 | RELE2 | RELE3 )

void main( void ) {

#pragma optsize-
  CLKPR=(1<<CLKPCE);
  CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0); // == 0
#ifdef _OPTIMIZE_SIZE_
  #pragma optsize+
#endif
// Input/Output Ports initialization
// Port A initialization
//DDRA=(0<<DDA2) | (0<<DDA1) | (0<<DDA0);                  == 0
//PORTA=(0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);           == 0
  DDRA  = 0b00000000;
  PORTA = 0b11111111; // nepatariu palikti ore pakabintu bitu
// Port B initialization
  DDRB  = 0b01111111;
  PORTB = 0b10000000; // nepatariu palikti ore pakabintu bitu
// Port D initialization
  DDRD  = 0b00000000;
  PORTD = 0b11111111; // nepatariu palikti ore pakabintu bitu

  while ( 1 ) {
    uint8_t n = 0, state = 0, tmp = 0;

    // iejimuose 100 us turi issilaikyti stabilus "0"
    while ( ++n != 100 ) { delay_us( 1 ); tmp |= IN_PINS; }

    // sukombinuojame iejimo bitus i [0..3] indeksa
    // tavo atveju nebutina, nes pasirinkti 1-as ir 0-is bitai, bet nemaiso...
    if ( !( tmp & PIN1 ) ) { state |= 1; }
    if ( !( tmp & PIN2 ) ) { state |= 2; }

    // pats reliu i(s)junginejimas
    switch (state) {
      case 1: {
        __disable_interrupts(); // geriau, kai isvedimas buna atomarine procedura
        OUT_PORT = ( OUT_PORT & R_OFF ) | RELE1;
        __enable_interrupts();
        delay_ms( 500 );
      } break;
      case 2: {
        __disable_interrupts(); // geriau, kai isvedimas buna atomarine procedura
        OUT_PORT = ( OUT_PORT & R_OFF ) | RELE2;
        __enable_interrupts();
        delay_ms( 250 );
      } break;
      case 3: {
        __disable_interrupts(); // geriau, kai isvedimas buna atomarine procedura
        OUT_PORT = ( OUT_PORT & R_OFF ) | RELE3;
        __enable_interrupts();
        delay_ms( 250 );
      } break;
      default: {
        __disable_interrupts(); // geriau, kai isvedimas buna atomarine procedura
        OUT_PORT &= R_OFF;
        __enable_interrupts();
      } break;
    } // switch
  } // while
} // main


as ir prigrybavau su portais Wink
 Programa mikro kontroleriui ATTINY2313
PranešimasParašytas: 2019 09 23, 18:46 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Vytkaaa
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Kas nieko nedaro, tas niekada ir nesulysta Smile .
Pradėti naują temą  Atsakyti į pranešimą
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

TMS ELECTRONICS
TMS ELECTRONICS

www.rslietuva.com – nemokamas elektronikos komponentų pristatymas

www.matuok.lt - Interneto spartos matavimo sistema

Lietuvos mokinių neformaliojo švietimo centras

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Technologijos.lt

Mokslo festivalis „Erdvėlaivis Žemė

www.esaugumas.lt – apsaugok savo kompiuterį!

LTV.LT - lietuviškų tinklalapių vitrina

www.rrt.lt – Lietuvos Respublikos ryšių reguliavimo tarnyba

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

MRO Supply

FS 19 Tractor mods
Farming Simulator 19 Mods, FS 19 Maps, How to install
ATS mods
ATS trailer mods, ATS truck mods, ATS map mods
FS 19 Tractors
Farming Simulator 19 Mods, FS 19 Maps, FS 19 Trucks
FS19 Maps, FS19 Trucks
Farming Simulator 2019 Mods, FS19 Tractors
Install MC Mods
Minecraft Dungeons Mods, Minecraft Dungeons Skins, Minecraft Dungeons Maps
FS19 Combines
Farming Simulator 19 Mods, FS19 Trucks, FS 19 Mods
How to Install Mods
Minecraft Dungeons Mod, Minecraft Dungeons Maps, Minecraft Dungeons Skins
Mobilieji telefonai
Mobilieji telefonai internetu, telefonų dėklai, telefonų priedai
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Farming Simulator 2017 Mods, FS 17 Mods
ls2017.com
„TV programa“ – tiksli
televizijos programa

www.tvprograma.lt
Lietuvos mokinių neformaliojo švietimo centras
www.lmnsc.lt
Buhalterijos kursai, apskaitos kursai, vadovų apskaitos kursai
www.apskaitakiekvienam.lt
Svarstyklės – čia, matuokliai, laboratorinė įranga
www.moris.lt
Lyderystės mokymai, mokymai vadovams, vadovų mokymai
www.tripleo.lt
Mokslo ir technologijų pasaulis – naujienos ir straipsniai
www.technologijos.lt
Farming Simulator 2019 Mods, FS19 Tractors, FS19 Maps
farmingsimulator19mods.fr
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – geriausių lietuviškų tinklalapių katalogas
www.ltv.lt/technologijos/
FS 2019 Mods, FS 2017 Mods, FS 2015 Mods
www.farming2015mods.com
Mokslo populiarinimo projektas „Mokslas verslui ir visuomenei“
www.mokslasplius.lt
Reklama


Reklama