Elektronika.lt
 2025 m. gruodžio 25 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 2025 12 25, 00:54. Visos datos yra GMT + 2 valandos.
 Forumas » Mikrovaldikliai » Atmega16 ir DS18B20
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 66
Pereiti prie Atgal  1, 2, 3, 4, 5, 6
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 Atmega16 ir DS18B20
PranešimasParašytas: 2012 07 25, 07:04 Pranešti apie taisyklių pažeidimą Atsakyti su citata
JOnis
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
zmogui taip - man ne. As saugau visus 64 davikliu parodymus ir po to juos naudoju

Atmega savu laiku turejo resursu pakankamai, dabar ir stm32vet projektui jau resursai arteja prie ribos. Atmintim svaistytis galima tik kai procas nieko neveikia
 Atmega16 ir DS18B20
PranešimasParašytas: 2012 07 25, 07:45 Pranešti apie taisyklių pažeidimą Atsakyti su citata
AlgisL
Senbuvis
Senbuvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
kazka cia joni skiedi, katilui valdyti, net jei ir rysys su internetu idiegtas, uztenka vos ne atmega168/328, atatinkamai atmega16/162/32.
turbut neefektyviai operatyvke svaistai constantoms, ypac stringams saugoti.
duomenis saugoti visada galima maziau vietos uzimanciame formate, o isvedineti tokiame, kokio reika. pvz, jei reikia daug perskaiciuoti, bet nereikia daug zenklu, galima laikyti BCD byte ar word fiksuoto kablelio formate, visiskai nebutina float.
jei reikia sulyginti su ADC reiksmemis, apatine ir virsutine riba galima saugoti trijuose baituose, o sulyginimo procedura nepatampa labai reikli CPU laiko.
daugeli konstantu galima laikyti eeprom, nes nuskaitymas is jo nera ilgai trunkantis, ilgai tik irasinejama.
 Atmega16 ir DS18B20
PranešimasParašytas: 2012 07 25, 09:20 Pranešti apie taisyklių pažeidimą Atsakyti su citata
JOnis
VIP narys
VIP narys
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Apsilankyti vartotojo tinklapyje
tai as ir laikau ne floate. Laikau shorte. Arme nera vidinio eepromo, viskas sedi fliashe, isorini nera noro kabint. Ir nera poreikio.
Atmega savu laiku gerai buvo, bet siais laikais uz tokius resursus ir tokia kaina ji praradus patrakluma. Be to ne vien katilines valdyt prireikia. Pirkt kazkokia super duper mega naujiems projektams tik su dviem usartais uz labai brangiai - kokia prasme? Yra siuolaikiskesniu procesoriu. O ka i rama ir fliasha kraut - ir be stringu zinau Smile Jei taip samprotaut, kam PC jums su 4Gb, buvo ir su 4Mb kompai kazkada, ne taip senai 512Mb buvo prabanga, uzteko viskam. Deja, poreikiai keiciasi. O atminti svaistyt vien del to kad jos "dar pakanka" - nekorektiska
Aplamai prasidejo fleimas. Siulau palikt sita diskusija ramybej, nes ji neatitinka temos
P.S. Usartu reikia kaip tik i tema - per juos labai graziai DMA pagalba galima pasidaryt 1w aparatini draiveri, nereikia niekada draust interaptu kad laikus skaiciuot (pabandyk ta ant megos padaryt, kur ne tik usartu mazai, bet ir taimeriu tik keletas)
 Atmega16 ir DS18B20
PranešimasParašytas: 2012 07 29, 11:18 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Signal
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Ačiū visiems, pavyko pasiekti ko norėjau Smile

Dabar susidūriau su kita bėda - 1-Wire search algoritmu. Bandau suprasti kaip ten viskas vyksta ir pačiam bandyti jį įgyvendinti. Bet visų pirma, noris turėti kažkokį veikiantį pavyzdį pradžioj...

Taigi, situacija tokia: Proteuse yra LCD, Atmega16 ir 3 DS18B20 jutikliai pakabinti ant vieno laido.

Pradinis tikslas: Nuskaityti 1 (bet kurio) iš trijų daviklių ROM adresą ir vėliau kreipiantis į jį su MATCH ROM, gauti iš jo temperatūrą ir išvesti į LCD.

Turimas kodas (kompiliuoja, bet niekas neveikia Proteus'e):

Kodas:

#define               SEARCH_FIRST        0xFF
#define               PRESENCE_ERR        0xFF
#define               DATA_ERR            0xFE
#define               LAST_DEVICE         0x00

sbit LCD_RS at PORTC2_bit;
sbit LCD_EN at PORTC3_bit;
sbit LCD_D4 at PORTC4_bit;
sbit LCD_D5 at PORTC5_bit;
sbit LCD_D6 at PORTC6_bit;
sbit LCD_D7 at PORTC7_bit;
sbit LCD_RS_Direction at DDC2_bit;
sbit LCD_EN_Direction at DDC3_bit;
sbit LCD_D4_Direction at DDC4_bit;
sbit LCD_D5_Direction at DDC5_bit;
sbit LCD_D6_Direction at DDC6_bit;
sbit LCD_D7_Direction at DDC7_bit;

unsigned int short n=0;
unsigned int Bufflcd [9];
int Temp_bytes [9];
unsigned short Temp_sign;
unsigned int Temp_value;
unsigned int Temp_fract;
unsigned char id[8],diff,i;

//******************************** SEARCH_ROM***********************************
  unsigned char One_Wire_Search( unsigned char diff, unsigned char *id )
{
  unsigned char i, j, next_diff;
  char b;

Ow_Reset(&PORTA, 0);       // resetas
Ow_Write(&PORTA, 0, 0xF0); // Issue command SEARCH_ROM
                     
  next_diff = LAST_DEVICE;                        // unchanged on last device
  i = 8 * 8;                                        // 8 bytes
  do{
    j = 8;                                        // 8 bits
    do{
      b = Ow_Read(&PORTA, 0);                        // read bit
      if( Ow_Read(&PORTA, 0) ){                        // read complement bit
        if( b )                                        // 11
          return DATA_ERR;                        // data error
      }
      else{
        if( !b ){                                // 00 = 2 devices
          if( diff > i ||
            ((*id & 1) && diff != i) ){
            b = 1;                                // now 1
            next_diff = i;                        // next pass 0
          }
        }
      }
       Ow_Write(&PORTA, 0, b);            // write bit
                                   
      *id >>= 1;
      if( b )                                        // store bit
        *id |= 0x80;
      i--;
    }while( --j );
    id++;                                        // next byte
  }while( i );
  return next_diff;                                // to continue search
}
//****************************Display temperature*******************************
void Execution ()
{

Temp_sign = Temp_bytes [1];
Temp_sign = Temp_sign >> 3;
if (Temp_sign == 31)
{
LCD_Out (1, 1, "-");
}
else
{
LCD_Out (1, 1, "+");
Temp_value = Temp_bytes [0] >> 4;
Temp_value = Temp_value | (Temp_bytes [1] << 4);
ByteToStr(Temp_value, Bufflcd);
LCD_Out (1,2, Ltrim(Bufflcd));
LCD_Chr_CP ('.');
Temp_fract = Temp_bytes [0] << 4;
Temp_fract = Temp_fract >> 4;
Temp_fract = (Temp_fract &= 0xF)*625;
Temp_fract = Temp_fract/100;
ByteToStr(Temp_fract, Bufflcd);
LCD_Out_CP (Ltrim(Bufflcd));
}
}
//************************************ MAIN ************************************
int main ( void )
{
Lcd_Init();                        // Initialize LCD
Lcd_Cmd(_LCD_CLEAR);               // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF);
One_Wire_Search(diff , id);         //kvieciam SEARCH_ROM

for (;;) // Loop forever
{
        Ow_Reset(&PORTA, 0);       // Onewire reset signal
        Ow_Write(&PORTA, 0, 0xCC); // Issue command SKIP_ROM
        Ow_Write(&PORTA, 0, 0x44); // Issue command CONVERT_T
        Delay_ms(800);

        Ow_Reset(&PORTA, 0);
        Ow_Write(&PORTA, 0, 0x55); // Issue command MATCH_ROM

        for (n=0; n<8; n++)
        {
        Ow_Write(&PORTA, 0, id[n]);
        }

        Ow_Write(&PORTA, 0, 0xBE); // Issue command READ_SCRATCHPAD
        for (i=0; i<9; i++)
        {
        Temp_bytes [i] = Ow_Read(&PORTA, 0);
        }
        Execution ();
      }
}


SEARCH_ROM dalis paimta iš interneto. Nesu stiprus programavime, tai sudėtinga man čia... Rolling Eyes Taigi, kas galėtų būti blogai čia? Gal išvis viską ne taip darau?
 Atmega16 ir DS18B20
PranešimasParašytas: 2012 07 31, 17:33 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Signal
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
??
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie Atgal  1, 2, 3, 4, 5, 6
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

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

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

„Mokslo sriuba“

www.matuok.lt - Interneto spartos matavimo sistema

Programuotojas Tautvydas – interneto svetainių-sistemų kūrimas

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

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
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Ets2 mods, Ats mods, Beamng drive mods
allmods.net
„MokslasPlius“ – mokslui skirtų svetainių portalas
www.mokslasplius.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – lietuviškų tinklalapių vitrina
www.ltv.lt/technologijos/
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
Mokslo festivalis „Erdvėlaivis žemė“
www.mokslofestivalis.eu
Reklama


Reklama