Elektroda.pl
Elektroda.pl
X
Relpol przekaźniki
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[C] Inne podejście do wyświetlacza HD44780

19 Lis 2010 20:43 8252 68
  • Poziom 35  
    Zakładam taki temat aby zaprezentować ciekawe rozwiązanie:

    Code:

    #define WYXY(x,y) ((x)+((y)*40))
    #define WYSWIETLAJEK_FIFO 128
    #define WYSWIETLAJEK_CZEKAJ1 80
    #define WYSWIETLAJEK_CZEKAJ2 120
    struct _wyswietlajek
       {
       unsigned char fifo[WYSWIETLAJEK_FIFO];
       unsigned char r,w;
       volatile unsigned char c;
       unsigned char khrok;
       } wyswietlajek;   

    void _ISRFAST __attribute__((no_auto_psv)) _T2Interrupt(void) //timerwyswietlacz
    {
    IFS0bits.T2IF=0; T2CONbits.TON=0;
    if (wyswietlajek.c)
       {
       if(!wyswietlajek.khrok) //ustaw piny wyswietlacza, E=1 i czekaj
          {
          unsigned int znaq=wyswietlajek.fifo[wyswietlajek.r%WYSWIETLAJEK_FIFO];
          _LATA10=1; if (znaq>0x7F) { _LATA10=0; };   
          _LATA7=1;
          LATC&=~0x3C0; LATC|=((znaq&0xF)<<6);
          LATB&=~0x3C00; LATB|=((znaq&0xF0)<<6);
          wyswietlajek.khrok=1;   
          PR2=WYSWIETLAJEK_CZEKAJ1;
          }
          else //E=0, wyzeruj khrok i czekaj
          {
          _LATA7=0;   wyswietlajek.khrok=0; wyswietlajek.r++; wyswietlajek.c--;   
          PR2=WYSWIETLAJEK_CZEKAJ2;    
          };   
       TMR2=0; T2CONbits.TON=1;
       } else { PR2=0xFFFF; }; //obudz przerwanie za kiedys i wyzeruj krok
    }


    Do kolejki znaki wkladamy tak:
    Code:

    wyswietlajek.fifo[wyswietlajek.w%WYSWIETLAJEK_FIFO]=[b]znak[/b]; wyswietlajek.w++;
    //tu wylacz przerwanie
    wyswietlajek.c++;
    //tu wlacz przerwanie


    Nie ma oddzielnej funkcji fizycznego dostepu na wyswietlacz :]
    Ale jest to w tym miejscu:
    Code:

    _LATA10=1; if (znaq>0x7F) { _LATA10=0; };   
    _LATA7=1;
    LATC&=~0x3C0; LATC|=((znaq&0xF)<<6);
    LATB&=~0x3C00; LATB|=((znaq&0xF0)<<6);

    ...i trzeba to sobie zmienic w zaleznosci od sprzetu.
    Dana na wyswietlacz podana jest z kolejki FIFO znaków, po wyjeciu z tej kolejki
    w przerwaniu wystepuje w zmiennej znaq.
    Dodatkowy ficzer jest, ze gdy w kolejce znajdzie się bajt z ustawionym MSb...
    Code:

    _LATA10=1; if (znaq>0x7F) { _LATA10=0; };

    (_LATA10 jest pinem RS wyswietlacza)
    ... to automatycznie jest to traktowane jak rozkaz, i to jeszcze SET DDRAM ADDRESS (czyli pozycjonowanie).

    Przerwanie jest od jakiegoś timera (w tym przypadku dsPICowego), w PR ustawia się "ilość cyknięć do przerwania". TMR jest bierzącą wartością licznika.
    W moim przypadku timer cyka co 200ns z hakiem, a #definy znaczą mniej więcej to, co widać :]

    To jest jednak nadal wersja beta. Finał ma być taki, żeby w tym przerwaniu pracował malutki parserek, ktory po jakims znaku kontrolnym (np. 0x1) z argumentem potraktuje to jak rozkaz do lcd, co umozliwi wrzucanie do kolejki np. danych CGRAM...

    PS.
    Dla zaawansowanych :]
    W pewnym stadium rozwoju jest podobny kod, ale bardziej rozbudowany - logika 1wire, zadnych delay-ów w pętli głównej ani funkcjach!! (100% przerwanie). Ale o tym później...
  • Relpol przekaźniki
  • Użytkownik usunął konto  
  • Poziom 35  
    FIFO ma w pewnych okolicznościach sens. Właśnie w momencie, gdy zaimplementuję interpreter tokenow, ktore np. ustawia adres CGRAM.
    A to już prawie gotowe....
    Swoją drogą, takie rozwiązanie pozwala na potraktowanie wyświetlacza jako mapy pixli [zdefiniuj-wyswietl-poczekaj-wymaż-zdefiniuj-wyswietl-poczekaj-wymaż-....] i mamy graficzny wyświetlacz 80x16 :]

    Ale do prostych implementacji faktycznie wystarczy shadow..nie pomyślałem o tym :P
  • Użytkownik usunął konto  
  • Poziom 38  
    Hmm a jak jest z "obrazkami" już wstawionymi na ekran i zapisem do cgram po inicjalizacji? Bo na ekranie mógłby zostać stary obrazek a do cgramu dopisany nowy
  • Relpol przekaźniki
  • Użytkownik usunął konto  
  • Poziom 42  
    nsvinc napisał:
    Swoją drogą, takie rozwiązanie pozwala na potraktowanie wyświetlacza jako mapy pixli [zdefiniuj-wyswietl-poczekaj-wymaż-zdefiniuj-wyswietl-poczekaj-wymaż-....] i mamy graficzny wyświetlacz 80x16 :]


    Do mnie jakoś nie przemawia ten sposób obsługi ale nie będę krytykował, bo być może po prostu nie mam aż takich potrzeb jak ty i może czegoś jeszcze nie wiem.

    Jednak potraktowanie wyświetlacza alfanumerycznego jako graficznego moim zdaniem na 100% ci się nie uda o ile zrozumiałem twoją ideę. Wg której chciałbyś "w locie definiować" znaki i wyświetlać je na LCD ;)

    Jednocześnie może być wyświetlonych TYLKO i wyłącznie 8 SZT ! Jeśli zechcesz na następnej pozycji wyświetlić nowy zdefiniowany znak - to wpisując jego definicję do CGRAM zmieni się na LCD jednocześnie jeden z tych 8 wcześniej już wyświetlonych i nie ma zmiłuj się.

    Owszem można się bawić w bardzo szybkie wyświetlanie całymi ramkami ale do tego wiadomo że po pierwsze potrzebna jest właśnie obsługa pinu RW oraz BusyFlag ale także jakieś bardzo szybkie wersje takich wyświetlaczy z małą bezwładnością. Najlepiej to wychodzi na wyświetlaczach PLED. VFD już całkowicie odpadają bo luminofor nadal świeci i bardzo brzydko to wygląda.

    Ja uzyskałem na PLED takim typowym 2x16 możliwość jednoczesnego takiego pseudo wyświetlania większej ilości własnych zdefiniowanych znaków ale .....

    ..... kosztem dużej zabawy z dobraniem odświeżania żeby było jak najmniejsze migotanie a to już zależy wręcz od egzemplarza wyświetlacza i co najgorsze migotania nigdy nie da rady do końca wyeliminować moim zdaniem

    A próba zrobienia tego na zwykłych LCD'kach to porażka ;) takie szybkie podmiany znaków z wykorzystaniem odświeżania dadzą ci tylko jednostają równą i ładną choć niedzo szarą sieczkę w miejscach znaków gdzie podmieniasz zawartość CGRAM.

    Zdecydowanie lepiej sięgnąć po prawdziwy wyświetlacz graficzny jeśli o to chodzi.
  • Poziom 35  
    To, czy wspomniane rozwiązanie jest skuteczne, okaże się. Na razie "silniczek" jest w trakcie pisania (jest beta, ale nie działa :P ).

    Ja sądzę, że skoro korzystając tylko z:

    WRITE CGRAM (37us)
    WRITE DDRAM (37us)
    ZAPISBAJTU (37us)

    da się osiągnąć w miarę dobre rezultaty gdy zrobimy:

    1) zdefiniuj 8 znakow w CGRAM
    2) wyswietl te znaki
    3) delay
    4) wymaz znaki
    5) goto 1
    (za kazdym razem bierzemy blok z pixelmapy, przetwarzamy na 8 znakow, i gonimy na lcd)

    Koledzy albertb i gaskoin:
    Nie da się zdefiniować i na raz wyświetlić więcej niż 8 znaków własnych, fakt.
    Ale zauważcie, że po każdym wyświetleniu bloku 8 znaków (i delayu) jest wymazanie starych znaków, definicja nowych i wyswietlenie...

    Ale wszystko się okaże...

    PS
    Jest ktoś zainteresowany rozwiązaniem ekwiwalentnym (na przerwaniu), dla 1wire? :]

    Dodano po 49 [minuty]:

    Wiadomość z ostatniej chwili :]
    Rozwiązanie działa, mogę zapalać pojedyncze pixle w dowolnym miejscu wyswietlacza. Nawet demo-krecha 0,0,79,15 ladnie sie wyswietla...

    ...tylko troszeczke obraz migocze :P
  • Użytkownik usunął konto  
  • Poziom 38  
    mirekk36 napisał:

    Zdecydowanie lepiej sięgnąć po prawdziwy wyświetlacz graficzny jeśli o to chodzi.


    zgadza się, ale ten sam wyświetlacz (bo sterownik ten sam, jedynie tylko umożliwia zapalanie pojedynczych pikseli) kosztuje już kilkadziesiąt zł więcej
  • Specjalista - Mikrokontrolery
    nsvinc napisał:
    Jest ktoś zainteresowany rozwiązaniem ekwiwalentnym (na przerwaniu), dla 1wire? :]

    Biorąc pod uwagę fakt, że jeden bit w 1-wire trwa kilkadziesiąt - kilkaset mikrosekund, oraz to, że można go zrealizować w pełni sprzętowo korzystając z UARTu, taka zabawa IMHO nie ma sensu. Przerwanie z jakąś logiką odpalane co kilkaset cykli nie jest specjalnie kuszące, zwłaszcza jeśli zamiast marnować timer można zmarnować UART. Zwykle jest więcej zastosowań dla kilku timerów niż kilku UARTów...

    Takie jest moje zdanie - myślałem, żeby coś takiego zrobić, ale to nie ta klasa szybkości układu - jakby między przerwaniami było kilka-kilkanaście tysięcy cykli zegara, to może, ale tak...

    4\/3!!
  • Poziom 35  
    Freddie Chopin napisał:
    Biorąc pod uwagę fakt, że jeden bit w 1-wire trwa kilkadziesiąt - kilkaset mikrosekund, oraz to, że można go zrealizować w pełni sprzętowo korzystając z UARTu, taka zabawa IMHO nie ma sensu.

    No racja :] Ale są przypadki gdzie moje rozwiązanie jest najoptymalniejsze.
    Ja mam do obsługi 8 czujników, każdy na osobnym osobnym pinie...Osiem UARTow?..:]

    BTW, np. 480us (reset 1wire) to mało?...gdy obsługuje to delay, to właśnie szlag trafił 24000 (!!) cykli 40MIPS-owego dsPICa. <-- tu masz te dziesiąt tysięcy cykli...:]
    ... x 8 (czyujnikow) x 2 (dwa resety na caly dostep)
    = 384k cykli idzie sie co sekunde czesać na delay w standardowej funkcji owreset(), nie mowiac juz o 1wwrite i 1wread...
    Przy moim rozwiązaniu - już nie.

    BTW, jak się realizuje delaye korzystając z UARTa? Czyżby funkcją DELAY()?...
  • Specjalista - Mikrokontrolery
    nsvinc napisał:
    No racja :] Ale są przypadki gdzie moje rozwiązanie jest najoptymalniejsze.

    Są też przypadki odwrotne.

    Cytat:
    Ja mam do obsługi 8 czujników, każdy na osobnym osobnym pinie...Osiem UARTow?..:]

    To po co masz je na 8 osobnych liniach, skoro 1-wire jest wręcz stworzone dla wielu układów na magistrali?

    Cytat:
    BTW, np. 480us (reset 1wire) to mało?...gdy obsługuje to delay, to właśnie szlag trafił 24000 (!!) cykli 40MIPS-owego dsPICa. <-- tu masz te dziesiąt tysięcy cykli...:]
    ... x 8 (czyujnikow) x 2 (dwa resety na caly dostep)
    = 384k cykli idzie sie co sekunde czesać na delay w standardowej funkcji owreset(), nie mowiac juz o 1wwrite i 1wread...

    Po co masz 8x resetować każdy czujnik osobno, skoro można zresetować wszystkie 8 za jednym razem? Podobnie zapis komendy pomiaru temperatury można zrealizować do wszystkich czujników na raz.

    Cytat:
    BTW, jak się realizuje delaye korzystając z UARTa? Czyżby funkcją DELAY()?...

    Delaye są zbędne.
    http://www.google.pl/search?client=opera&...&sourceid=opera&ie=utf-8&oe=utf-8

    4\/3!!
  • Poziom 42  
    nsvinc napisał:
    ...tylko troszeczke obraz migocze :P


    ;) ... o tym właśnie mówiłem, jak dla mnie takie migotanie na jakimkolwiek LCD to jednak już nieporozumienie .... no ale może ty się jakoś przyzwyczaisz.
  • Poziom 35  
    Freddie Chopin napisał:
    To po co masz je na 8 osobnych liniach, skoro 1-wire jest wręcz stworzone dla wielu układów na magistrali?

    mhm...
    A uzytkownik podłączy sobie 8 czujników na jedna linie, a potem co? Będzie biegał z zamrażaczem, żeby zidentyfikować ROM z logicznym numerkiem na wyświetlaczu?...
    Osobne linie mają swój sens - przypadek urządzenia, gdzie każdy podlaczony czujnik musi być rozpoznawalny po "kolorze kabelka", a nie wylaserowanym w krzem ROMie; gwarantuje odporność na wymianę wielu czujników jednocześnie, brak dodatkowej procedury kojarzenia czujników. Upraszcza to obsługę, utrzymanie, i instrukcję obsługi; lepiej się sprzeda...
  • Specjalista - Mikrokontrolery
    nsvinc napisał:
    Freddie Chopin napisał:
    To po co masz je na 8 osobnych liniach, skoro 1-wire jest wręcz stworzone dla wielu układów na magistrali?

    mhm...
    A uzytkownik podłączy sobie 8 czujników na jedna linie, a potem co? Będzie biegał z zamrażaczem, żeby zidentyfikować ROM z logicznym numerkiem na wyświetlaczu?...
    Osobne linie mają swój sens - przypadek urządzenia, gdzie każdy podlaczony czujnik musi być rozpoznawalny po "kolorze kabelka", a nie wylaserowanym w krzem ROMie; gwarantuje odporność na wymianę wielu czujników jednocześnie, brak dodatkowej procedury kojarzenia czujników. Upraszcza to obsługę, utrzymanie, i instrukcję obsługi; lepiej się sprzeda...


    Zawsze możesz mutipleksować x lini co czyni jeszcze prostszym rozwiązaniem, a majac FIFO na lub DMA na całą obsługę potrzeba tylko kilka przerwań bez ani jednego cyklu poświęconego na delaye.
  • Poziom 35  
    Multipleksery....

    ...no niby tak można, może nawet trzeba...ale standardowy multiplekser np DG408 wprowadza paręset ohmów rezystancji w szereg. Są oczywiście lepsze, takie do kilku ohmów, ale są drogie, ciężko je dostać i nie są to multipleksery, tylko przekaźniki półprzewodnikowe, najczęsciej podwójne i poczwórne (link)
    Kilkaset ohmów w linii przez klasycznego DG408 przy 100m kablu i zasilaniu 3v3 ma już znaczenie....
  • Specjalista - Mikrokontrolery
    Idea prostego identyfikowania wielu czujników na jednej magistrali 1-wire: każdy czujnik ma swoją sterowaną linię zasilania (8 tranzystorów albo choćby ULN2803), podczas inicjalizacji całości układ po kolei włącza zasilania i odczytuje numery ID. Powinno działać [;

    4\/3!!
  • Poziom 43  
    Ale to wymusza stosowanie 1Wire 3-przewodowego. Przynajmniej w moich zastosowaniach to odpada.
  • Specjalista - Mikrokontrolery
    Nie można mieć wszystkiego [;

    EDIT: Kolejna idea - podobnie jak w I2C robi się konwersję poziomów napięć (jeden mosfet) tak samo można zrobić sterowane "gniazda" dla kilku czujników 1-wire. Inicjalizacja po kolei (aby odczytać numerki), a potem już wszystko na raz włączone i po ID.

    4\/3!!
  • Poziom 43  
    Ale to uniemożliwia zmianę czujnika w trakcie pracy. Wiem, tak się nie robi: ale powiedz to użytkownikom.
  • Specjalista - Mikrokontrolery
    No to niech będą sterowane cały czas - żadna różnica. Po prostu w danym momencie aktywne jest tylko jedno gniazdo, choć oczywiście można ich aktywować więcej (np przy wysyłaniu komunikatu o rozpoczęciu pomiaru do wszystkich).

    Albo skoro odwołujesz się do czujnika po ID, to chyba jak go ktoś odpiął i wpiął inny to wykryjesz błąd (w sensie, że nie odpowie) i wtedy można procedurę odczytu ID wykonać ponownie.

    Albo... Jest naprawdę sporo sposobów [;

    4\/3!!
  • Specjalista - Mikrokontrolery
    nsvinc napisał:
    Multipleksery....

    ...no niby tak można, może nawet trzeba...ale standardowy multiplekser np DG408 wprowadza paręset ohmów rezystancji w szereg. Są oczywiście lepsze, takie do kilku ohmów, ale są drogie, ciężko je dostać i nie są to multipleksery, tylko przekaźniki półprzewodnikowe, najczęsciej podwójne i poczwórne (link)
    Kilkaset ohmów w linii przez klasycznego DG408 przy 100m kablu i zasilaniu 3v3 ma już znaczenie....


    OW to dość długa magistrala, nawet nie wyobrażam sobie, żeby jakiekolwiek przewody podłączać bezpośrednio pod procesor zwłaszcza gdy użytkownik może sobie dowolnie podpinać, przepinać czujniki. Jakieś drivery na wyjściach i wejściach są wskazane , a między driverami i procesorem to już można dowolne multipleksery stosować oczywiście odpowiednie do poziomów napięć.
  • Poziom 42  
    atom1477 napisał:
    Ale to wymusza stosowanie 1Wire 3-przewodowego. Przynajmniej w moich zastosowaniach to odpada.


    atom1477 napisał:
    Ale to uniemożliwia zmianę czujnika w trakcie pracy. Wiem, tak się nie robi: ale powiedz to użytkownikom.


    Panowie, panowie ;) może to ja się mylę ale z drugiej strony tyle tu pomysłów pada na uproszczenie sobie czy klientowi życia przy konfiguracji zarówno od nowa jak i serwisowej pojedynczych czujników DSxxxx .... wszystkie bazują na jakichś zewnętrznych multiplekserach, tranzystorach, dodatkowych liniach, i zawsze każdemu (jak np wyżej koledze atom1477) coś przeszkadza ;)

    I z jednej strony to się koledze atom1477 nie dziwię bo wiadomo że można kota dostać!!! Może nie tyle przy pierwszej konfiguracji i obsadzaniu nowych czujników bo to można zorganizować sobie w jakiś prosty sposób po kolei. Ale gdy przyjdzie serwisowo wymieniać taki pojedynczy czujnik bo się np uszkodził albo ze dwa, to już zaraz każdy ma czarną wizję ganiania z zamrażaczem ;) i zanim się zdąrzy dobiec z drugiego końca hali to temperatura wróci do normy i zrówna się z innymi hyhyhy

    Tymczasem ja od dawna w takich przypadkach używam prostego i sprawdzonego w praktyce sposobu, gdzie nie jest w ogóle istotne czy korzystam z 1-Wire na 3 kablach czy z 1-Wire w trybie Parasite (2 kable). A czujników mogę mieć na magistrali 2,4....8 czy ile tam jeszcze kto chce. Do tego prosty i przyjazny dla użytkownika system identyfikacji, który gdzie jest ;) ..... i bez żadnego ganiania z zamrażaczem. Już kiedyś w DIY pokazałem taki projekcik, gdzie tylko w oparciu o mały procek i wyświetlacz LCD 2x16 można to prosto i przyjemnie zrealizować,

    https://www.elektroda.pl/rtvforum/viewtopic.php?t=1430008&highlight=

    ale co za problem podłączyć się do takiej magistrali za pomocą kompa (notebooka) i po prostu użyć jeszcze przyjaźniejszego i wygodnego programu okienkowego. Takie rozwiązanie z kolei wkrótce zaprezentuję w DIY.

    Przypomnę zasadę ogólną, poprawcie mnie jeśli widzicie gdzieś duże wady takiego rozwiązania:

    1. organizuję 2 widoki (nie ważne czy na LCD czy w programie na PC)

    2. jeden widok przedstawia wszystkie czujniki widoczne na magistrali 1-Wire w takim porządku w jakim zostają odnalezione przez typowe procedury ROM Search (czyli dla oka mało uporządkowany)

    3. drugi widok! - to hmm nazwałem je SLOT'y czyli miejsca docelowe czujników. Każdy SLOT może mieć dodatkowy identyfikator przyjazny dla człowieka np nazwę, Chłodnia1, Przedsionek, Hala1, Hala2

    4. urządzenie, które przedstawia widoki na początku przy pierwszej konfiguracji przedstawia tylko numery czujników wraz z ich NAZWAMI np DS18B20 albo DS18x20 (bo mogą być obsługiwane dowolne na tej samej magistrali). Natomiast drugi widok - SLOTY - są puste

    Zatem gdy zaczynamy konfigurację, można po kolei dołączać każdy z czujników i to dowolny do magistrali 1-Wire. Gdy się pojawi w 1-szym widoku, przeciągamy go do interesującego nas SLOT'u np Chłodnia1. Możemy już go nawet wpiąć w miejsce docelowe. Od teraz on już się nie pojawi w 1-szym widoku ;) tylko w tym drugim, na odpowiednim i stałym miejscu. Można więc podłączyć kolejny i i kolejny i postąpić podobnie.

    Można też np zacząć nieco inaczej. Bierzemy w łapki na początek dwa czujniki z tym że jeden to DS18B20 a drugi to DS18S20 czy DS1820 i od razu bez wstępnej konfiguracji podłączamy je na miejsca docelowe pamiętając że do "Chłodnia1" obsadziliśmy DS18B20" a do kolejnej lokalizacji ten deugi typ. Wtedy zaglądamy do 1-go widoku i widzimy w nim dwa różne czujniki - dalej już wiadomo, przydzielamy je do konkretnych slotów i znikają z 1-go widoku pojawiając się już w 2-gim. Dzięki czemu możemy obsadzić kolejną parę i kolejną

    No możliwości początkowej konfiguracji jest wiele i jak widać nawet bez zamrażacza ;)

    ---------------------------------

    teraz wymiana uszkodzonego/przepalonego. No to już prościej być nie może.

    1-szy widok będzie nadal pusty albo widać w nim tylko informacje, że każdy czujnik jest już przydzielony (nie widać numerów seryjnych). Ale w 2-gim widoku jest DZIURA ;) brak jednego.

    I WTEDY po prostu idę do tego pomieszczenia wyjmuję uszkodzony i na jego miejsce bez pardonu wpinam DOWOLNY NOWY czujnik.

    Wracam do centrum i zaglądam do widoków. I co? w 1-szym widoku widzę jeden nieprzydzielony czujnik na magistrali 1-Wire, niewiele myśląc przydzielam go do slutu w którym jest DZIURA bo i tak wiem że tam go przed chwilą włożyłem.

    KONIEC

    Oczywiście zaraz kolega atom14177 może i poniekąd słusznie zauważyć, że zacznie się problem gdy zamiast jednego spalą się 2 albo trzy czujniki i co wtedy ???

    Ano nic - wystarczy wrócić do początku czyli opisywanej pierwszej konfiguracji, po kolei każdy z nich wpiąć na magistralę i przydzielić do SLOTU/pomieszczenia.

    ---------------

    Może dużo się rozpisałem ale zorganizowanie tego w postaci programu czy to na uC czy to na PC to żaden problem, troszkę logiki i wszystko działa czy na 3 kablach czy na 2 kablach a nawet na MIESZANEJ MAGOSTRALI - bo to też sprawdzałem.

    Czyli wręcz można wprowadzić dodatkowy wyróżnik podłączanego czujnika.

    1. DS18B20
    2. DS18x20
    3. tryb 3-żyłowy
    4. tryb Parasite

    Bo oczywiście zarówno w 1-szym jak i 2-gim widoku można zorganizować podgląd jak dany czujnik jest podłączony - przecież to można panowie sprawdzić programowo ;)

    KONIEC ZAMRAŻACZY, MULTIPLEKSERÓW, 8 ODDZIELNYCH MAGISTRAL DLA KAŻDEGO CZUJNIKA itd itd itd

    (sprawdzone w praktyce/przetestowane)

    Myślę, że ta obsługa tego na PC się spodoba , gdy już zamieszczę ten projekcik ;)
  • Specjalista - Mikrokontrolery
    Przedstawiłeś kolejny sposób, ale to nie o to chodzi bo rozwiązań jest pewnie jeszcze więcej. Ktoś będzie chciał kupić urządzenie i po prostu je zainstalować bez jakiegoś tam podłączania do PC bez myślenia jak co i po co, bo nie każdy jest explorerem techniki i wtedy takie, a nie inne rozwiązanie będzie lepsze. Nie bez powodu powstało coś takiego jak Plug&Play.
  • Poziom 42  
    michalko12 napisał:
    Przedstawiłeś kolejny sposób, ale to nie o to chodzi bo rozwiązań jest pewnie jeszcze więcej. Ktoś będzie chciał kupić urządzenie i po prostu je zainstalować bez jakiegoś tam podłączania do PC bez myślenia jak co i po co, bo nie każdy jest explorerem techniki i wtedy takie, a nie inne rozwiązanie będzie lepsze. Nie bez powodu powstało coś takiego jak Plug&Play.


    Pewnie masz rację ;) że można to jeszcze bardziej "plag end plejowo" zrobić. Ja tylko chciałem przedstawić alternatywę dla całago tego dodatkowego oprzyrządowania, multiplekserów, dodatkowych linii i zamrażaczy razem wziętych. W sensie że można programowo to poniekąd zrobić. To taki mały kroczek do do poważnego "Plug&Play" ;)
  • Poziom 43  
    No, tylko że to wymaga mocnego wsparcia programowego. Powiedział bym że nawet bardzo mocnego. Chodzi mi o to że całe menu trzeba robić. Zapisywać do EEPROMu. Itp. Nie mówiąc już o tym że urządzenie musi posiadać wyświetlacz.
    Podczas gdy można zrobić 1Wire na kilku IO, albo dać ten jeden układ 4051 za 50gr i mieć to z głowy.
    Przy większej liczbie czujników ta programowa metoda ma sens.
    Ale przy 2...8 chyba jeszcze nie.
    Ale to tylko moje zdanie.
  • Poziom 42  
    atom1477 napisał:
    No, tylko że to wymaga mocnego wsparcia programowego. Powiedział bym że nawet bardzo mocnego. .


    No oczywiście tu możemy się różnić, bo dla mnie to żadne mocne wsparcie programowe - to pikuś jak już się przygotuje takie swoje biblioteki. No i nie przesadzajmy - Menu na LCD to nie jakieś monstrum ;) - o wiele więcej pracy potrzeba przy dobrym programie na PC niż z Menu na LCD przy procku.

    No a jak sprowadzić wszystko do 2 czujników w sterowniku bez wyświetlacza, łącza z PC czy z czymkolwiek to w zasadzie w ogóle nie ma o czym mówić. Pewnie, że można dać 10 czujników na 10 liniach 1wire choć dla mnie to lekka zgroza - wolałbym dorobić byle interfejs - zresztą hmmm nie wiem czy w ogóle popełniłem jakis sterownik, który w taki czy inny sposób nie może być przy okazji zarządzany z PC. Nawet jak w swoim podstawowym działaniu nie ma mieć takiej funkcjonalności to jak tylko starcza pamięci programu - zawsze dorzucam coś co może ułatwić jego konfigurację z zewnątrz w wygodny sposób. Ale jak mówię no nie dla 2 czujników na krzyż ..... Mowa tu była o wielu i o bieganiu z zamrażaczem. A poza tym wszystko co da się zastąpić programem to zastępuję. Dla mnie priorytet to minimum zewnętrznej elektroniki i scalaków poza procesorem skoro można to programowo załatwić.
  • Specjalista - Mikrokontrolery
    mirekk36 napisał:

    No a jak sprowadzić wszystko do 2 czujników w sterowniku bez wyświetlacza, łącza z PC czy z czymkolwiek to w zasadzie w ogóle nie ma o czym mówić. Pewnie, że można dać 10 czujników na 10 liniach 1wire choć dla mnie to lekka zgroza -


    Czasami trzeba coś zrobić tak, a nie inaczej i nie ma zmiłuj. Np. pomiar temp. w kilku rozdzielniach NN (o SN nie chce już w ogóle wspominać). wtedy nie ma mowy o niegalwanicznym połaczeniu czujników, tego już nie zastapisz żadym rozwiązaniem programowym.
  • Poziom 42  
    michalko12 napisał:
    mirekk36 napisał:

    No a jak sprowadzić wszystko do 2 czujników w sterowniku bez wyświetlacza, łącza z PC czy z czymkolwiek to w zasadzie w ogóle nie ma o czym mówić. Pewnie, że można dać 10 czujników na 10 liniach 1wire choć dla mnie to lekka zgroza -


    Czasami trzeba coś zrobić tak, a nie inaczej i nie ma zmiłuj. Np. pomiar temp. w kilku rozdzielniach NN (o SN nie chce już w ogóle wspominać). wtedy nie ma mowy o niegalwanicznym połaczeniu czujników, tego już nie zastapisz żadym rozwiązaniem programowym.


    No ale zgadzam się z tym nie tylko tym przypadkiem jak najbardziej.