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

Komputer samochodowy - dalsze prace

Myrek1 07 Cze 2007 21:08 20509 83
  • #61 07 Cze 2007 21:08
    Myrek1
    Poziom 23  

    Ok, z tamtym sobie poradzę.

    Mam teraz problem z wyświeleniem wartości zmiennej na LCD. Mam taką funkcję:

    Code:
    void lcd_znak_zapisz(char kodznaku)
    
    {
       lcd_dana_zapisz(kodznaku-32);
    }


    i tekst wyświetlam poleceniem:

    Code:
       lcd_znak_zapisz("f");


    Chciałbym wyświetlić warość zmiennej na LCD więc pisze tak:

    Code:

    .....
    unsigned char i;
    i=1;
       lcd_znak_zapisz(i);


    No i nic nie wyświetla. Macie jakieś pomysły na ten problem?

  • Sklep HeluKabel
  • #62 07 Cze 2007 23:04
    Skubik
    Poziom 15  

    Czy zmienna i jest typu znakowego czy liczbowego?
    Jesli liczbowego to napisz nie i=1 tylko i =97 i wyswietlic powinno ci literkę 'a"

  • #63 08 Cze 2007 00:08
    Myrek1
    Poziom 23  

    Sorry, wcześniej podałem zły kod. Zazwyczaj używam zmiennych char. Popatrz powyżej jak jest w poprawionym kodzie. Z tego co tam jest to na LCD mam mieć wyświetlone 1.
    Ogólnie to chodzi mi o wyświetlanie zmiennych różnych typów, i char i integer lub podobnych. Czy trzeba zastosować jakieś polecenia w stylu utoa?
    Chciałbym też wyświetlić zawartość rejestru np z przetwornika ADC.

  • Sklep HeluKabel
  • #64 18 Cze 2007 13:13
    Myrek1
    Poziom 23  

    Witam po raz kolejny.

    W sumie dziękuję za brak informacji na podane przeze mnie pytania, bo sam musiałem rozwiązać te problemy. Trochę to trwało ale dałem rade i wszystko chodzi jak należy (LCD, DS18B20, ładnie liczy i pokazuje temp, ADC).
    Teraz jestem na etapie ustawienia PWM, to banał więc nie będzie problemów.

    Ale przeglądając note katalogowa Atmegi 128 zauważyłem, że ma ona 4 liczniki (2 x 8bit i 2 x16bit).
    Jako że jestem zwolennikiem pochłaniania jak najmniej zasobów zadałem sobie pytanie dotyczące wykorzystania tych liczników. Dwa 16-bitowe będą mi potrzebne do zliczania prędkości i obrotów więc są zajęte.

    Zostały mi 2x 8bit. Chciałbym jakoś je zoptymalizować (ich wykorzystanie). Chcę przez PWM sterować tranzystorem, który steruje podświetleniem LCD. Więc ten timer zawsze będzie zajęty, będzie cały czas generował przebieg. Więc kolejny odpada, zostaje jeden. Ale ten mierzy 800ms dla DSa do obliczenia temperaturę.
    Wychodzi na to, że wszystkie będą zajęte, a być może będzie mi jakiś jeszcze potrzebny. Ma ktoś może jakiś pomysł na te 2 ostatnie? Czy faktycznie jeden musi iść w całości na PWM, drugi na odliczanie czasu?

    Oto co do tej pory zrobiłem:

    Komputer samochodowy - dalsze prace

    Na LCD jest bitmapa po prawej, MSB i LSB to wartości z termometru, słiżyły mi do obliczenia wzoru dla zapisu temperatury, która jest wyżej.
    Na dole jest wartość z potencjometru (przetwornik ADC).

    Na płycie Jtag po lewej, na dole po prawej cały sprzęt z Atmega128. Jest tam tylko moduł zasilania, tranzystor do LCD, MAX232 do uzyskania -10V dla LCD, termometr DS18S20, kilka elementów do ADC i złącze Jtaga.

    Następny etap to uporządkowanie wszystkiego, zrobienie wizualizacji pod prędkość, obroty (na wykresie), dołączenie klawiatury, zabawa z TWI (RTC PCF8583 oraz zewnętrzny EEPROM). Jak mi się to uda to wtedy robie układy doprasowujące do auta i koniec pewnego etapu.
    W planach mam komunikację komputerka przez RS-232 z laptopem (zapis real time parametrów do pliku i na wykresie) oraz korektor graficzny do radia ale chyba będzie mało miejsca na LCD. Może podłączę jeszcze wyświetlacz od jakiejś Nokii. Będzie kolejna okazja żeby nauczyć się kolejnego interfejsu :D

    Przyznam, że robienie czegoś takiego od podstaw (sam napisałem cały kod, nawet do sterowania LCD, 1wire) zajmuje dużo czasu ale warto, bo człowiek bardzo szybko uczy się C.

  • #66 26 Cze 2007 10:58
    Myrek1
    Poziom 23  

    Pięknie, widzę że ładnie to wyszło. Proc trochę archaiczny ;)

    Podłączałeś już ten sprzęcik do auta? Zastanawia mnie problem zasilania (spadki napięcia przy rozruchu). Ciekawi mnie czy duże kondensatory wystarczą do tego, żeby procek się nie resetował.

    Mam sesje, więc ciężko z czasem, stoję w miejscu. Ale ostatnio dowiedziałem się o sposobie komunikacji przez złącze diagnostyczne w moim aucie (Nissan Sunny N14 1.4MPI). Okazało się, że transmisja to typowy standard 8N1. Do tego mam rozpiskę wszystkich rejestrów ECU. W ten sposób mogę wszystko pobrać z kostki diagnostycznej. Jest tam dużo więcej dokładnych informacji niż mogłem sobie wymarzyć.

    Jak to bywa z moimi pomysłami, już wyprzedzam sam siebie i myślę o instalacji dodatkowego kolorowego LCD z jakiejś Nokii do zrobienia korektora graficznego na BA38305 :D Ale to w swoim czasie.

    Jeśli chodzi o LPG to brak mi pomysłu.

  • #67 26 Cze 2007 11:29
    otest
    Poziom 11  

    Myrek1 napisał:
    Pięknie, widzę że ładnie to wyszło. Proc trochę archaiczny ;)

    Podłączałeś już ten sprzęcik do auta? Zastanawia mnie problem zasilania (spadki napięcia przy rozruchu). Ciekawi mnie czy duże kondensatory wystarczą do tego, żeby procek się nie resetował.

    Co do proca to kwestia przyzwyczajen... D0 '52 mam napisany system podobny do PCSa7 tak ze napisanie dowolnej aplikacji jest dosc szybkie.
    Poza tym nie mam czasu uczyc sie nowego asemblera (bo tylko on jest najwydajniejszy) BASCOM sie do tego nie nadaje (a zadnego kompilatora C nie znam wiec nie wiem co mozna z nim zrobic) jesli jeszcze doda sie do tego dobra znajomosc konstrukcji procesorka to mozna naprawde wiele wycisnac. W innym watku sa opisane kompy na ATmega i okazuje sie ze juz ludzie maja programy po 16 ...20 kb. Ja mniej wiecej to samo zmieszcze na 6KB a dodanie czegokolwiek niewiele zajmuje.( o predkosci/dokladnosci nie wspomne).
    Najwiekszym minusem AVR jest to ze nie ma on sprzetowego dzielenia. Poza tym jak bede potrzebowal to moge w stosunkowo prosty sposob zwiekszyc ram o ROM do 64kB kazdy :)
    Ja nie mam problemow ze spadkami napiec. Moze dlatego ze mam podwojny stabilizator napiecia (polonczone w szereg kazdy z odpowiednim kondensatorem...)
    Komp juz czasami ze mna jezdzi ale caly czas jest modyfikowany

  • #69 17 Lip 2007 18:52
    otest
    Poziom 11  

    michalko12 napisał:
    otest napisał:
    Jesli interesuja cie algorytmy i moje rozwiazania to zapraszam :
    http://forum.vectraklub.pl/index.php?showtopic=37889
    Ja mam diesla ale chce go zrobic bardziej uniwersalnego. Zastanawiam sie nad metodo pomiaru gazu


    No to witam w klubie :spoko:
    Ja kroczę powoli ale mam równolegle inną pracę :

    http://arm.com.pl

    Jak tam prace bo ja juz mam wersje podstawowa gotowa :)

  • #70 17 Lip 2007 19:17
    Paweł Es.
    Pomocny dla użytkowników

    Dobrze też jest pamiętać, że procesor musi być w wersji Industrial o zakresie temperatur roboczych od -40 do +85°C, bo wersje zwykłe pracują od 0 do 70 stopni i w zimie może być krewa.

    To samo dotyczy wyświetlacza i innych elementów !!!!!

  • #71 17 Lip 2007 20:04
    michalko12
    Specjalista - Mikrokontrolery

    otest napisał:
    Jak tam prace bo ja juz mam wersje podstawowa gotowa :)


    U mnie jeszcze do wersji końcowej jeszcze troche zostało a to przez to że dochodza ciągle nowe funkcje i pomysły. :spoko:

  • #72 17 Lip 2007 21:46
    otest
    Poziom 11  

    Paweł Es. napisał:
    Dobrze też jest pamiętać, że procesor musi być w wersji Industrial o zakresie temperatur roboczych od -40 do +85°C, bo wersje zwykłe pracują od 0 do 70 stopni i w zimie może być krewa.

    To samo dotyczy wyświetlacza i innych elementów !!!!!

    No to ja mam szczescie bo procesorek jest 24 PU , pamiec PI2,7 a LCD to FSTN czyli -20..+70 :)

    Teraz chce dorobic obsługe termometrow DS18x20 i szukam procedurek w ASM '51. jest duzo przykladow na AVR i BASCOMA ale nie znalazlem ww .
    Zwlaszcza szukam procedurek/implementacji liczacych CRC i obslugujacych wieksza liczbe termometrow wiszacych na jednej lini.
    Mierzyl(lub liczyl ) ktos ile trwa odczytanie temperatury z jednego termometra?
    Zeby nie bylo ze tylko ciagne z tego forum wiec wrzuce aktualny stan mojego projektu :

  • #73 17 Lip 2007 23:16
    zumek
    Poziom 39  

    otest napisał:
    Teraz chce dorobic obsługe termometrow DS18x20 i szukam procedurek w ASM '51. jest duzo przykladow na AVR i BASCOMA ale nie znalazlem ww .

    Kiepsko szukales :(
    Na tej www znajdziesz "wszystko" do 1wire w asm51,tylko musisz sie dobrze przylozyc :D
    http://www.koders.com

    Piotrek

  • #74 18 Lip 2007 08:19
    otest
    Poziom 11  

    zumek napisał:
    otest napisał:
    Teraz chce dorobic obsługe termometrow DS18x20 i szukam procedurek w ASM '51. jest duzo przykladow na AVR i BASCOMA ale nie znalazlem ww .

    Kiepsko szukales :(
    Na tej www znajdziesz "wszystko" do 1wire w asm51,tylko musisz sie dobrze przylozyc :D
    http://www.koders.com

    Piotrek

    Poprzednio zapomnialem dodac ze jest duzo w C - ale mi chodzi o asm.
    Na stronce ktora podales moze i jest "wszystko" ale albo na inny procesor albo w C. ale moze sie nie przylozylem i nie potrafie znalezc :p
    Dosc dobra strona dla 51 jest: http://www.8052.com/codelib.phtml

  • #77 26 Wrz 2007 00:11
    Myrek1
    Poziom 23  

    Dobra, wracam do pracy (przerwa wakacyjna). Kurde, jak tak dalej pójdzie to zrobię tego kompa za rok. No ale różnie bywa z czasem.
    Wczoraj napisałem biblioteki do PCF8583 i własne funkcje dla TWI.

    Między przerwami w "robocie" wymieniłem LCD, teraz mam 240x128, będzie co wyświetlić :) Oczywiście LCD jest na T6963C, więc biblioteki zostają takie jakie napisałem.

    No i doszedł mi nowy pomysł. Wszystko będzie sterowane za pomocą pilota. Chyba wybiorę pilota od dekoderów Cyfry, bo jest w miarę mały, ma przyciski numeryczne i nawigacyjne. Do tego pracuje w kodzie RC5, na temat którego już trochę wiem.
    Lepiej będzie mi sterować zdalnie niż z jakiejś klawiatury membranowej.
    Za procedurki do RC5 już się zabieram. Będą wykonywane w zewnętrznym przerwaniu,

    Mam pytanie co do PCFa. Korzystałem z przykładu i był tam taki kod przy odczycie godzin:

    Code:
    #define PCF_MASKA 0xff00;
    
    ...
    temp2 = PCF_Read(PCF_HOUR)&0b11000000;
    if ((temp2&PCF_ERR_MSK) != 0) return temp2;
    ...


    I chodzi tu o to, że do temp2 odczytywana jest godzina (z maską na ustawienia 24h/12g i AM/PM) i jest ok. Ale po co jest dolny warunek?
    Przecież zmienna temp2 jest 1-bajtowa (taki rozmiar ma rejestr PCFa), PCF_ERR_MSK jest 2 bajtowy, z zerami na czterech bitach LSB. Jak wykona się operacje & (AND) to zawsze ta operacja będzie zerem (np. 0xa6 & 0xff00). Więc zawsze ten warunek będzie spełniony. Czy tak, czy dobrze myślę? Jeśli tak to po co ta instrukcja?

  • #78 26 Wrz 2007 11:06
    Jdsoul
    Poziom 23  

    Komputer pokładowy - super:)

    Fajne rzeczy koledzy działacie, bardzo mi się podoba :)

    Jeśli chodzi o bardzo tani wyświetlacz z dotykiem to polecam .... wyświetlacz z Palm III lub V - niedobitki wciąż krążą po aukcjach za śmieszne ceny :).

    Na pokładzie wyświetlacz graficzny Epsona ??? - (SPI lub coś prawie podobnego ) i nakłądka rezystancyjna (5 drutową) kilka komparatorów i powinno się dać ją skalibrować.

    Co do metody programowania wyświetlacza jako całości , jeszcze nie doszedłem, ale punkt już zapalić potrafię :).

    Generalnie rozdzielczość dzika jak to u Palma 160x160 pkt czarno z białym :) komunikacja szyną szeregową.

    Jeśli ktoś miałby Datasheet byłbym wdzięczny :) zawsze mi to pracy zaoszczedzi , a chętnie sie efektami podzielę :)

  • #79 28 Wrz 2007 02:39
    Myrek1
    Poziom 23  

    No właśnie, jakby była jakaś dokumentacja do takiego LCD to inna bajka. Nie możesz odczytać oznaczeń na sterowniku? Ja widziałem LCD z palmtopów FJC loox i ciężko jest tam cokolwiek zobaczyć. Dodatkowo ciężko dopchać się do dokumentacji nietypowych sterowników.

  • #80 28 Wrz 2007 09:21
    Jdsoul
    Poziom 23  

    Popatrzyłem , pomyślałem i mam wrażenie że chodzi o kontroler S1D13700 lub jego pochodne :) - całkiem ciekawy :) i ma 32 k SRAM na pokładzie - ale jeszcze sprubuję to potwierdzić .

    z tego co Epson napisał może współpracować zarówno z Z80 jaki i DragonBall więc muszę przeanalizawać dokładnie konfigurację :)

    Co do nakładki to cofam co mówiłem jest tylko trzy drutowa rezystancyjna stąd problemy z utrzymaniem kalibracji :(

  • #81 18 Sie 2008 01:07
    markus2
    Poziom 11  

    Witam.
    Zastanawiam się nad założeniem kompa do Golfa IV SDI. Czy ktoś już zakładał komputer do takiego auta?

  • #82 10 Gru 2009 18:46
    majster256
    Poziom 21  

    Myrek1 napisał:

    Ale ostatnio dowiedziałem się o sposobie komunikacji przez złącze diagnostyczne w moim aucie (Nissan Sunny N14 1.4MPI). Okazało się, że transmisja to typowy standard 8N1. Do tego mam rozpiskę wszystkich rejestrów ECU. W ten sposób mogę wszystko pobrać z kostki diagnostycznej. Jest tam dużo więcej dokładnych informacji niż mogłem sobie wymarzyć.


    ma to samo autko:) mógł byś wrzucić na forum te dane?

  • #83 10 Gru 2009 18:55
    asembler
    Poziom 32  

    Co do podświetlenia i kontrastu to proponuje zrobic PWM programowy gdyz wystarczą 4 bity a to do zrealizowania bardzo proste.

  • #84 11 Gru 2009 22:35
    Myrek1
    Poziom 23  

    Witam.
    Trochę czasu minęło od czasu projektowania komputera. Projekt został przesniesiony na lepsze czasy, teraz zajmuje się czymś innym.
    Oczywiście wiem o PWM, pytania sprzed dwóch lat są już nieaktualne, od tego czasu wiele już umiem i "dość" dobrze radze siebie z uC ;-) :D

    Protokół transmisji oraz komendy są w załączniku.

    Temat zamykam do odwołania.