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

Komputer samochodowy - dalsze prace

Myrek1 22 Mar 2007 23:43 20869 83
  • #31
    Myrek1
    Poziom 23  
    Zmieniłem nazwę tematu, bo procek wybrany i prace powoli poruszają się naprzód :)

    Podłączam LCD (240x64pix na T6963C) do procka na port A i sterowanie do linii na porcie C.

    Robie też Jtaga ICE. Mam pytanko.
    Czy robił ktoś zasilanie LCD (-10V) na Max232? Wyświetlacz ciągnie max. 10mA na tym złączu, więc wydaje mi się, że max232 da radę to pociągnąć. Chce podłączyć to -10V z Vee przez potencjometr 10kohm.
  • HELUPOWER
  • #32
    eurotips
    Poziom 36  
    Myrek1 napisał:
    ...
    Czy robił ktoś zasilanie LCD (-10V) na Max232? Wyświetlacz ciągnie max. 10mA na tym złączu, więc wydaje mi się, że max232 da radę to pociągnąć. Chce podłączyć to -10V z Vee przez potencjometr 10kohm.


    prościej na ICL7660, akurat tyle daje przy pojemności 10µ
  • HELUPOWER
  • #33
    M. S.
    Poziom 34  
    Dodatkowo, jeśli jest w układzie paliwowym przewód zwrotny to potrzeba będzie jeszcze drugi czujnik na tym przewodzie i obliczać różnicę
  • #34
    Myrek1
    Poziom 23  
    eurotips napisał:
    Myrek1 napisał:
    ...
    Czy robił ktoś zasilanie LCD (-10V) na Max232? Wyświetlacz ciągnie max. 10mA na tym złączu, więc wydaje mi się, że max232 da radę to pociągnąć. Chce podłączyć to -10V z Vee przez potencjometr 10kohm.


    prościej na ICL7660, akurat tyle daje przy pojemności 10µ


    A czasem nie -5V, a żeby uzyskać -10V trzeba 2 takie układy, w którym masa jednego podłączona jest z wyjściem drugiego?
  • #35
    eurotips
    Poziom 36  
    Myrek1 napisał:
    ...
    A czasem nie -5V, a żeby uzyskać -10V trzeba 2 takie układy, w którym masa jednego podłączona jest z wyjściem drugiego?


    rzeczywiście z +5V uzyskamy -5V,
    ale podając mu +10V uzyskasz dokładnie -10V i takie rozwiązanie miałem na myśli
  • #36
    scal12
    Poziom 19  
    Pomysł zacny z tym komputerkiem samochodowym,a ja mam nastepujacy pomysł w moim VW jest złącze diagnostyczne pod które sie podłącza kompa w celu odczytania wielu parametrów auta, słuzy do tego program np VAG,gdyby tak poznac protokół transmoisji można wyciagnąc wszystkie dane odnosnie samochodu nie tylko spalanie,pomyslcie nad tym....procesor avr z odpowiednim wsadem:) i wyswietlaczem LCD podłączyc do złącza diagnostycznego,zobaczcie ile zalet ?nie trzeba ciągnać przewodów do odpowiednich czujników i bardzo dużo parametrów do odczytu ,cały pic to poznac protokół transmisji i jestesmy w domu :)))
  • #37
    eurotips
    Poziom 36  
    scal12 napisał:
    Pomysł zacny z tym komputerkiem samochodowym,a ja mam nastepujacy pomysł w moim VW jest złącze diagnostyczne pod które sie podłącza komputera w celu odczytania wielu parametrów auta, słuzy do tego program np VAG,gdyby tak poznac protokół transmoisji można wyciagnąc wszystkie dane odnosnie samochodu nie tylko spalanie,pomyslcie nad tym...procesor avr z odpowiednim wsadem:) i wyswietlaczem LCD podłączyc do złącza diagnostycznego,zobaczcie ile zalet ?nie trzeba ciągnać przewodów do odpowiednich czujników i bardzo dużo parametrów do odczytu ,cały pic to poznac protokół transmisji i jestesmy w domu :)))


    od rocznika 2000r wszystkie auta standardowo wyposażone są w złącza OBD2 i obsługiwane są jednym wspólnym softem,
    niestety soft jest licencjonowany i sporo kosztuje
  • #38
    scal12
    Poziom 19  
    Soft jak wiadomo ma swój protokół transmisji i też w jakis sposób gada z samochodem ,a druga sprawa to czy autor tego tematu potrzebowałby komputerek do samochodu gdyby miał auto powyżej 2000r:) bo chyba prawie we wszystkich autach jest komputer który pokazuje spalanie -mowa o autach po 2000r
  • #39
    slx
    Poziom 18  
    eurotips napisał:

    od rocznika 2000r wszystkie auta standardowo wyposażone są w złącza OBD2 i obsługiwane są jednym wspólnym softem,
    niestety soft jest licencjonowany i sporo kosztuje


    No nie koniecznie, może coś takiego:
    http://www.sterntech.com/obdii_avr.php
  • #40
    scal12
    Poziom 19  
    No własnie o coś podobnego mi chodziło,może i w naszym kraju takie urządzenia powstano tylko niech ktoś zwęszy że mozna na tym zrobic kase:) tak jak pisałem cały problem polega w podejżeniu transmisji auto-avr.
  • #41
    Myrek1
    Poziom 23  
    Witam.
    Podłączyłem atmege128, wyświetlacz (240x64). Chce napisać bibliotekę dla T6963C w C samodzielnie i prawię ją kończę. Jednak chciałbym sprawdzić układ wcześniej, bo po napisaniu biblioteki może okazać się że ona będzie ok, układ będzie zły i będę myślał, że to wina softu.

    Więc chciałbym najpierw sprawdzić to w jakimś prostym języku, czyli BASCOMIe AVR.
    Na procku mam tak ustawione porty:

    Sterowanie – PortC
    Numery linii:
    WR -0
    /RD -1
    /CE-2
    /C/D-3
    /RESET -4
    FS-5

    Dane – PortA (D0-D7 - PortA 0-7).

    Jednak całkowicie nie znam się na BASCOMIe. Napisałem taki kod:

    Code:
    $crystal = 8000000
    
    $regfile = "m128def.dat"
    Config Graphlcd = 240 * 64 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8


    Locate 1 , 1 : Lcd "cos tam"
    Locate 3 , 1 : Lcd "1234567890"


    I po wpakowaniu tego Jtagiem do Atmegi zaczęła pojawiać się pozioma kreska (pojawia się i znika).
    Rezonator mam ustawiony na wewnętrzny 8MHz (bity CKSEL=0100, SUT=10), reszta standard, jak w nowym. Poza tym, że wyłączyłem bit kompatybilności z Atmega103(standardowo był włączony, myślałem że ma być wyłączony, dziwne).

    Nie wiem czy dobrze kompiluje program. Czy mógłby ktoś popatrzeć na to czy mam dobrze ustawione bity w Atmedze i program dobrze wygląda?
    Prosiłbym też o skompilowanie i podesłanie mi pliczku *.hex, może mam coś źle ustawione w Bascomie.
  • #42
    redart
    Poziom 23  
    Coś tam działa, ale byle jak...
    Proponuję przede wszystkim po konfiguracji LCD wrzucić
    Code:
    Cls
    
    Cursor blink

    Po inicjacji (automatyczna) wyświetlacza należałoby go wyczyścić - cls; natomiast włączenie migającego kursora pozwoli ocenić współpracę lcd z prockiem, zanim cokolwiek wyświetlisz.

    Spróbój sam narysować kreskę poziomą
    For A=1 To 238
    Pset A, 31, 255
    Next A
    i porównaj z tym co widzisz po próbie wyświetlenia znaków.
    Code:
    $crystal = 8000000
    
    $regfile = "m128def.dat"
    Config Graphlcd = 240 * 64 , Dataport = Porta , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 8
    Dim A As Byte
    Cls
    Cursor Blink
    Wait 1
    Locate 1 , 1 : Lcd "cos tam"
    Locate 3 , 1 : Lcd "1234567890"
    Wait 1
    For A=1 To 238
       Pset A, 31, 255
    Next A
    End

    Poniżej załączam skompilowany kod.
    Pzdr.
  • #43
    Myrek1
    Poziom 23  
    Dzięki, teraz zadziałało, faktycznie mój kod był do bani. Tak jak pisałem – nie znam się na Bascomie. Ale z tego co widać, to bardzo łatwy język. No cóż, ja wracam do C i pisania bibliotek.

    Dodam dla innych, że nap. Ujemne (ok -8V) otrzymałem z konwertera Rs-232 >> TTL, czyli popularnego MAX232.


    Jeszcze raz dzięki za kod i pliczek.

    Jak coś to będę dalej pytał.

    Aha, wyświetlacz po załączeniu podświetlenia zaczyna się bardzo grzać, co za tym idzie, układy scalone też. Czy to normalne?
    Puszczam tam 5V, wg doumentacji można do 8V.
  • #44
    micro133
    Poziom 10  
    wpadłem na ten post bo kiedyś też myślałem o takim projekcie.
    Chciałbym dorzucić pewną swoja idee która wtedy mi wpadła do głowy jeśli chodzi o pomiar paliwa, nie wiem czy to zadziała, ale gdy wytłumaczyłem ją znajomemu mechanikowi to stwierdził że wątpi :-) mnie jednak wydaje się że powinna działać i to dokładnie.

    Założenia:
    Mamy silnik z wtryskiem.
    w takim silniku benzyna do silnika jest dostarczana pod stałym ciśnieniem a ilość paliwa wpadająca do tłoka wynika z czasu otwarcia zaworu wtryskowego. Skoro tak, to suma czasów otwarcia wtrysku powinna być proporcjonalna do zużytego paliwa.
    Teoretycznie powinno to wygladać tak:
    tankujemy do pełna i ustawiamy komputerek tak aby zaczął zliczać czasy otwarcia zaworu aż do momentu gdy wyjeździmy powiedzmy połowe baku.
    Wtedy na stacji tankujemy do pełna i zapisujemy sumaryczny czas jaki został odmierzony przez nasz komputerek. (albo wpisujemy ilość paliwa i niech reszte sam zrobi). spalanie powinno wynosić ilość_paliwa/czas_otwarcia.
    zliaczanie czasu w 8051 zrobiłbym to tak że otwarty zawór kluczowałby timer który byłby napędzany kwarcem procka. To dałoby dużą dokładność( którą dod. można by dobrać preskalerem). a w obsludze przerwania dodawanie większych wartości do programowego licznika.

    Raz na sekunde czy na ile chcemy sumujemy to co jest w programowym liczniku + to co jest w timerze mnożymy przez nasz przelicznik i mamy ilość spalonego paliwa w poprzedniej sekundzie.

    Do dziś nie wiem czy to ma szanse działać, jesli ktoś może ten pomysł obalić to bardzo prosze przynajmniej nie bede nieświadomy.
    Zastanawiam się jakby się miał taki pomiar do zużycia gazu. Benzyna jest odcinana gdy jedziemy z rozpędu, czy gaz też ? jeśli tak to pewnie gaz też tak można mierzyć, choć z mniejszą dokładnością, bo chyba spalanie gazu jest proporcjonalne do spalania bezyny, pytanie tylko czy wprost proporcjonalne.

    Pozdrawiam
    GH
  • #45
    Myrek1
    Poziom 23  
    Myślę, że to z wtryskiwaczami ma szanse działać i to bardzo dokładnie. Tyle, że trzeba bardzo dokładnie mierzyć te małe czasy otwarcia. Wydaje mi się, że pozostaje też problem mniejszego ciśnienia podczas rozpoczęcia wtrysku i jego zakończenia, ale to można skorygować w samym programie.
    Jednak ja myślę o LPG, bo tego paliwa używam i pewnie będę używał (studenckie oszczędności :D). Najczęściej LPG jest 2 generacji, gdzie gaz dostarczany jest przez aktuator (silnik krokowy). Jedyna sensowa możliwość (wg mnie) to mierzenie jego otwarcia i analizowania go przez procesor (na podstawie stworzonej wcześniej mapy). Wg mnie tak będzie najprecyzyjniej.
    Niestety zużycie gazu nie jest proporcjonalne do zużycia PB95. Rozbieżność zużycia LPG w większym stopniu niż PB95 zależy od stylu jazdy, stanu silnika i osprzętu oraz jakości gazu.


    @janek1815, wiadomo o co chodzi, sorry za pomyłkę.
  • #46
    janek1815
    Poziom 38  
    Cytat:
    Niestety zużycie gazu nie jest proporcjonalne do zużycia gazu.
    Cos zamotales kolego ;)
  • #47
    MAREK74
    Poziom 20  
    będzie to działać bo u mnie tak właśnie działa ,ale nie na sekundę bo po co mi taka wartość tylko na drogę
  • #48
    micro133
    Poziom 10  
    Cytat:


    Tyle, że trzeba bardzo dokładnie mierzyć te małe czasy otwarcia.


    no zgadzam się, właśnie dlatego trzeba do tego użyć timera wyzwalanego poziomem. prescaler timera ustawiasz na odpowiednią dużą częstotliwość i wszystko samo sie mierzy i sumuję :).

    Nie wiem jak działa ten aktuator. Może ktoś rozwinie temat ?

    Pozdrawiam.
    GH
  • #49
    Myrek1
    Poziom 23  
    Działa tak - potrzeba więcej gazu to się bardziej otwiera.

    Taki aktuator ma od 0 do 255 kroków. Z tego co mi się wydaje to przy danym kroku (otwarciu) przepływ gazu jest taki sam niezależnie od warunków. Jeśli tak jest to jesteśmy w domu :) Wystarczy odpowiednio odczytać kroki i skalibrować je, nawet tak mniej więcej.
    Mam interfejs do swojego LPG i ładnie tam widać wartości otwarcia aktutatora. Można się tym posłużyć.

    Jak zbuduje to co mam zbudować to zajmę się tym tematem. Może nawet podłącze się do centralki (z tego co pamiętam jest tam PIC16F84 i proste układy dopasowujące). Zobaczymy co z tego wyjdzie.

    Jak pisałem, na razie piszę bibliotekę dla LCD, biorę się za pomiar temperatury, czasu i innych dupereli. Myślę też o analizatorze widma w prawym górnym rogu LCD (ładne mam marzenia ;) ), muszę tylko kupić kilka trochę ciężko dostępnych elementów.
  • #50
    redart
    Poziom 23  
    micro133 napisał:

    Nie wiem jak działa ten aktuator. Może ktoś rozwinie temat ?


    Aktuator to silnik krokowy (z regóły dwufazowy) którego oś jest na stałe sprzężona mechanicznie z układem śrubowym. Dzięki temu mechanizmowi obroty osi powodują ruch posuwisty cylindrycznego trzpienia zamocowanego na drugim końcu śruby. Trzpień umieszczony jest w świetle przewodu gazowego o przekroju okrągłym. LPG w fazie lotnej przepływa przez ten przewód od parownika/reduktora (zmniejszającego ciśnienie gazu ciekłego i rozprężającego go do fazy lotnej - w procesie rozprężania LPG pobiera ciepło z otoczenia, dlatego parownik podgrzewany jest cieczą chłodzącą silnik) do miksera gdzie miesza się z powietrzem, czyli elementu umieszczonego w przewodzie powietrznym zasilania silnika - przed przepustnicą.
    Aktuator ma za zadanie regulować przekrój przewodu dostarczającego LPG do gardzieli przepustnicy, a tym samym ilość gazu zasysanego przez silnik. Jest to więc zawór regulacyjny sterowany elektrycznie przez komputer "gazowy" (w prostrzych instalacjach niewyszukany sterownik).
    Jego pozycja obliczana jest na podstawie kąta uchylenia przepustnicy - stąd konieczność podpięcia sygnału TPS (throttle position sensor) do kompa od gazu. Do tego dochodzi sygnał z sondy Lambda. Niektóre sterowniki wypracowują pozycję aktuatora na podstawie tylko obrotów silnika - to typowa ściema. Bardzo często występują aktuatory ze śrubą regulacyjną - to kolejne badziewie mające tanio rozwiązać problem regulacji ilości podawanego LPG. Jeśli instalacja wyposażona jest w porządny komputer bazujący na odpowiednich sygnałach, to nie ma konieczności stosowania dodatkowej śruby regulacyjnej mającej kompensować niedoróbki sterownika.
    Temat przećwiczyłem osobiście. Jak już wiedziałem o co w tym chodzi to kupiłem sobie nowy komputer (wraz z aktuatorem), podłączyłem go wywalając jakieś badziewie zamontowane przez macherów, bo silnik 2.0 16V pożerał 13,5l/100 - bez ciężkiej nogi, a do tego kaprysił, strzelał i gasł przy puszczeniu gazu przy większej prędkości. Potem podpiąłem laptopa (przez interfejs: oryginał w Lovato to 280pln, ja zrobiłem go za 6,50pln...), program pożyczyłem od zaprzyjaźnionego warsztatu i sam ustawiłem parametry pracy komputera. Oprogramowanie umożliwia uwarunkowanie zakresu regulacji aktuatora zależnie od upodobań, istnieje nawet funkcja Booster - jak się głębiej wciśnie pedał gazu to komputer chwilowo zwiększa ilość podawanego LPG. Istnieje także funkcja reagująca na gwałtowne puszczenie pedału - tak by silnik nie zapychał się zbyt bogatą mieszanką.
    Tak po krótce wygląda budowa i przeznaczenie aktuatora w instalacji LPG zasilanej w fazie lotnej :D.
    Pzdr.
  • #51
    MAREK74
    Poziom 20  
    "Z tego co mi się wydaje to przy danym kroku (otwarciu) przepływ gazu jest taki sam niezależnie od warunków. Jeśli tak jest to jesteśmy w domu"


    komplena bzdura niestety :(
  • #52
    redart
    Poziom 23  
    Myrek1 napisał:
    Z tego co mi się wydaje to przy danym kroku (otwarciu) przepływ gazu jest taki sam niezależnie od warunków. Jeśli tak jest to jesteśmy w domu :) Wystarczy odpowiednio odczytać kroki i skalibrować je, nawet tak mniej więcej.


    Marek 74 trafnie ujął takie rozumowanie - jest delikatnie mówiąc błędne.
    Najistotniejszym warunkiem określającym ilość przepływającego gazu jest podciśnienie panujące nad przepustnicą. Natomiast samo podciśnienie jest proporcjonalne do przekroju gardzieli, a więc kąta uchylenia przepustnicy i oczywiście do obrotów - jeśli rozpatrujemy ilość LPG w jednostce czsu. Parownik ma membranę ochylającą się proporcjonalnie do wartości podciśnienia, a sprzężoną z zaworkiem przez który przepływa gaz - to wszystko siedzi w parowniku. Taka regulacja była wystarczająca w silnikach gaźnikowych. Pomijam regulację wstępną za pomocą śruby na samym parowniku - to podstawowa sprawa. Aktuator dodatkowo reguluje przekrój przewodu zasilającego, wpływając tym samym na wartość podciśnienia jakie oddziaływuje na membranę. Jego pozycja w żadnym wypadku nie może być wykładnią obrazującą ilość zużywanego LPG.
    Pzdr.
  • #53
    Myrek1
    Poziom 23  
    Fakt, nie pomyślałem o tym a to logiczne. Jest odwrotnie do tego co napisałem. Aż się sobie dziwie, że nie pomyślałem o tym, chyba jakieś zaćmienie umysłu :(
    Więc nie mam pomysłu na zmierzenie LPG.
  • #54
    Mad Bekon
    Poziom 23  
    Może jakiś przepływomierz?
  • #55
    Myrek1
    Poziom 23  
    Pisze sobie w C i coś nie mogę sobie poradzić z jednym (może przez tą porę, już prawie rano).
    Taka głupota i tak mnie męczy, mianowicie nie rozumiem dlaczego kompilator AVR-GCC wywala mi błąd przy tym:

    Code:
    void lcd_setup()
    
    {
       DDRC.0 = 1;
       DDRC.1 = 1;
       DDRC.2 = 1;
       DDRC.3 = 1;
       DDRC.4 = 1;
       DDRC.5 = 1;
       SET_WR();

    i dalej idzie kod który jest ok.

    Code:
    F:\Komp\avrstudio\./T6963cmoje.h:83: error: expected ';' before numeric constant
    
    F:\Komp\avrstudio\./T6963cmoje.h:84: error: expected ';' before numeric constant
    F:\Komp\avrstudio\./T6963cmoje.h:85: error: expected ';' before numeric constant
    F:\Komp\avrstudio\./T6963cmoje.h:86: error: expected ';' before numeric constant
    F:\Komp\avrstudio\./T6963cmoje.h:87: error: expected ';' before numeric constant
    F:\Komp\avrstudio\./T6963cmoje.h:88: error: expected ';' before numeric constant


    Wydaje się ok. Jak wywalę wszędzie średniki to będzie jeden błąd przy pierwszym, czyli przy DDRC.0 = 1;

    Co może być nie tak?
  • #56
    Mad Bekon
    Poziom 23  
    eee... co to w ogóle ma być? jakaś unia?
    co ma oznaczać zapis .1 .2 .3 itd?
    Bo na pewno nie kolejne bity DDRC

    spróbuj tak:
    DDRC= 0b00111111;

    ewentualnie: DDRC= (1<<PC0)|(1<<PC1)|.... itd.
  • #57
    Myrek1
    Poziom 23  
    Dlaczego nie kolejne bity DDRC? Często widziałem taki zapis. Tak chciałem zapisać: DDRC= 0b00111111; ale chodzi mi o to, żeby nie zmieniać wartości 2 najstarszych bitów. W momencie wykonywania tej procedury nie wiadomo co tam jest i co powinno być, za to odpowiedzialna jest inna procedura.
    Z tym ostatnim spróbuje, ale zastanawia mnie dlaczego źle napisałem?

    Wycinek innego kodu w C

    Code:
    #define WRHI   PORTD.4=1
    
    #define WRLO   PORTD.4=0
    #define WR_DDR DDRD.4


    Może w avr-cgg niema takiego zapisu? Jak to jest?
  • #58
    PiotrLotnik
    Poziom 15  
    Sorry, że wam się wtrące ale też pracuje nad komputerkiem dla Vectry B
    Silnik na wtrysku paliwa więc wysarczy zmierzyć czas otwarcia wtryskiwacza i tu moje pytanko.
    Jak najlepiej odmierzyć czas otwarcia wtryskiwacza oraz ilość wtrysków na jednostke czasu?
    Wtryskiwacz jest sterowany masą wiec spoko można użyć przerwań z końcówki INT1 do wykrycia otwarcia wtryskiwacza oraz Timera1 do zliczenia czasu otwarcia.
    Z zaczeciem zliczania czasu nie ma problemu ale z określeniem kiedy zatrzymać licznik Timer1 już jest.
    Program pisze w BASCOM na ATMEGA8 i wymysliłem coś takiego:
    On Int1 Otwarcie_wtryskiwacza
    Otwarcie_wtryskiwacza:
    Disable Int1
    Timer1 = 0
    Start Timer1
    Decr Ilosc_wtryskow 'do obliczenia predkosci obrotowej silnika
    Do
    Loop Until Pind.3 = 1
    Stop Timer1
    Enable Int1
    Return

    Program działa tylko problem jest taki, że na czas otwarcia wtryskiwacza atmega nie może robić nic innego tylko czekać do jego zamknięcia.

    Może wy macie jakiś dobry pomysł.

    Pozdrawiam
    Piotr
  • #59
    Mad Bekon
    Poziom 23  
    Myrek1 napisał:
    Dlaczego nie kolejne bity DDRC? Często widziałem taki zapis. Tak chciałem zapisać: DDRC= 0b00111111; ale chodzi mi o to, żeby nie zmieniać wartości 2 najstarszych bitów. W momencie wykonywania tej procedury nie wiadomo co tam jest i co powinno być, za to odpowiedzialna jest inna procedura.

    to zamień znak = na |=
    Czyli DDRC |= 0x00111111;
    Myrek1 napisał:

    Z tym ostatnim spróbuje, ale zastanawia mnie dlaczego źle napisałem?

    To ostatnie jest równoznaczne. Też trzeba zamienić = na |=

    Myrek1 napisał:

    Wycinek innego kodu w C

    Code:
    #define WRHI   PORTD.4=1
    
    #define WRLO   PORTD.4=0
    #define WR_DDR DDRD.4


    Może w avr-cgg niema takiego zapisu? Jak to jest?

    W avr-gcc, na bank nie odpowiada to kolejnym bitom.
    Po kropce odwołujemy się do elementów jakiejś struktury.

    Poczytaj o operacjach na zmiennych w C
    PS. DDRC &=~ 0b00110000, powoduje ustawienie 0 w DDRC tam gdzie są jedynki czyli na bicie 5 i 4

    @ PiotrLotnik:

    A może by tak skorzystać z wewnętrznego Countera?
    Jeśli stan na jakimś wejściu jest np wysoki to załącz Counter, jeśli niski to wyłącz. Teraz korzystając z Timera, odmierzasz równe odcinki czasu, notujesz ile zliczeń counter narobił i go zerujesz
    i tak w kółko. Będziesz wtedy wiedział jak długo w jednostce czasu był otwarty wtryskiwacz. I nie obciążasz tym zbytnio procka. Jeśli by też się okazało, że potrzebujesz korzystać z timera countera, możesz pomyśleć o jakimś małym układziku który ma się tylko zająć zbieraniem statystyk i co jakiś czas je do procka właściwego przesyłać
  • #60
    Myrek1
    Poziom 23  
    Witam.
    Studenckie sprawy (raczej życie :D) zmusiło mnie do małej przerwy, ale wracam do pracy.

    Dzięki za wszystkie rady. Napisałem już własny sterownik do T6963C. Na wyświetlaczu mogę wyświetlać napisy, bitmapy itp. Skończyłem tez pisać procedury obsługi 1 wire, jutro podłączam DS18S20.
    Wiem, że wszystkie napisane przeze mnie biblioteki są w sieci, ale sam chciałem to napisać w ramach nauki C, sterowników LCD i istoty działania interfejsów (1wire, jeszcze została mi realizacja mi TWI czyli I2C).

    Mam pytanie co do DS18S20.
    Z dokumentacji wyczytałem, że trzeba zrobić inicjalizację,czyli:
    -reset
    -przeskoczenie ROMu (nie będę odczytywał nr seryjnego)
    -instrukcja mierzenia temp.
    -stan wysoki przez 0,5s
    -reset
    -ponownie przeskok ROM
    -odczyt pamięci

    Wkurza mnie to czekanie 0,5s. Nie zrobię głupiej pętli bo szkoda mi czasu proca. Myślałem o timerze, który odliczy 0,5s i puści przerwanie. Myślicie że to dobry pomysł?

    Jak już zainicjalizuje DSa i odczytam pierwszą temperaturę to dalej żeby odczytać to po ok 5s chcę użyć tego samego timera i generować przerwanie na odczyt termometru.

    Ale jak wygląda ponowny odczyt? Czy tak samo jak inicjalizacja, czy odpuszczamy sobie rozkaz mierzenia temp, robimy reset i ją tylko odczytujemy (rozkaz mierzenia dalej jest w RAMie do zaniku zasilania?)?
    Czyli:
    -reset
    -czekanie 0,5s
    -odczyt temp
    -reset

    albo
    po minięciu 5s:
    -odczyt temp
    -reset

    Aha, układ ma swoje zasilanie, bez zas. pasożytniczego.