12-13-2016, 10:45 AM
Kasno se uključujem, evo i mog iskustva... Koristim više godina SHT11, SHT21 senzore (I2C) i komuniciram softverskim (polling) I2C rutinama sa njima.
Na jednom od uređaja imam 4 kanala za ove senzore, koristim interapte, GSM modul, LCD modul, tastatura, LAN komunikacija itd... sve ovo radi odlično. Još jedno odstupanje od "propisa" je da su mi senzori na kablovima i po 20-30m što nije baš tipično za I2C komunikaciju, ali ukoliko je dovoljno spora (oko 10-20kHz CLK) a perifrerija (u mom slučaju senzor) to dozvoljava, onda je izvodljivo
Ukoliko se dobro koncepira kod, nije problem da se realizuje dosta toga u softveru. Ko je radio sa PIC16F84, PIC12F508 ili sa još starijim mikrokontrolerima kao što je AT89C2051 zna o čemu pričam.
Kolege su već savetovale, interapt rutine MORAJU biti optimizovane da rade samo neophodne stvari. Kompleksne matematike i slično zaboraviti u interaptu, ako se želi protočni i optimalan kod. Ovde dolazimo do još jedne potrebe, biblioteke/rutine poželjno je da pišemo sami jer jedino na taj način imamo odličan uvid u kod i po potrebi da ga optimizujemo.
U svakom slučaju savetujem da se koriste HW periferije, ali i od njih ne treba očekivati kompletno otklanjanje problema, jer kod slabijih mikrokontrolera postoje hardverski bufferi ali svega 1By tako da opet dolazimo do potrebe da se kod piše optimalno i protočno...
P.S. Ja sam imao jedan obrnut problem, kada sam sa softverskih rutina prešao na HW periferiju za I2C, javio mi se čudan problem sa spajkovima na linijama, ali o tome nekom drugom prilikom...
Na jednom od uređaja imam 4 kanala za ove senzore, koristim interapte, GSM modul, LCD modul, tastatura, LAN komunikacija itd... sve ovo radi odlično. Još jedno odstupanje od "propisa" je da su mi senzori na kablovima i po 20-30m što nije baš tipično za I2C komunikaciju, ali ukoliko je dovoljno spora (oko 10-20kHz CLK) a perifrerija (u mom slučaju senzor) to dozvoljava, onda je izvodljivo
Ukoliko se dobro koncepira kod, nije problem da se realizuje dosta toga u softveru. Ko je radio sa PIC16F84, PIC12F508 ili sa još starijim mikrokontrolerima kao što je AT89C2051 zna o čemu pričam.
Kolege su već savetovale, interapt rutine MORAJU biti optimizovane da rade samo neophodne stvari. Kompleksne matematike i slično zaboraviti u interaptu, ako se želi protočni i optimalan kod. Ovde dolazimo do još jedne potrebe, biblioteke/rutine poželjno je da pišemo sami jer jedino na taj način imamo odličan uvid u kod i po potrebi da ga optimizujemo.
U svakom slučaju savetujem da se koriste HW periferije, ali i od njih ne treba očekivati kompletno otklanjanje problema, jer kod slabijih mikrokontrolera postoje hardverski bufferi ali svega 1By tako da opet dolazimo do potrebe da se kod piše optimalno i protočno...
P.S. Ja sam imao jedan obrnut problem, kada sam sa softverskih rutina prešao na HW periferiju za I2C, javio mi se čudan problem sa spajkovima na linijama, ali o tome nekom drugom prilikom...