Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 25 lip 2025, o 20:05


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
    Autor Wiadomość
    PostNapisane: 30 sie 2017, o 12:08 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lut 2014
    Posty: 569
    Lokalizacja: Żagań
    Pomógł: 54

    Witam.
    Znalazłem w sieci ciekawy projekt ładowarki z LCD Nokii 5510.
    http://community.atmel.com/projects/avr-universal-charger
    Niestety kod źródłowy jest napisany w C++.
    Proszę o pomoc w przeportowaniu kodu na C.

    Za pomoc z góry dziękuje.


    Załączniki:

    Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.

    _________________
    http://leszczamiga.ppa.pl/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 sie 2017, o 16:45 
    Offline
    Użytkownik

    Dołączył(a): 02 cze 2014
    Posty: 68
    Pomógł: 4

    Witam. A dlaczego kolega chce go przeportować do C? Przejrzałem tak na szybko i wydaje mi się, że prędzej da się wytłumaczyć koledze czym jest klasa LCD, niż prowadzić za rękę w bezsensownym pisaniu tego w czystym C. Jeśli kolega ma jednak jakieś argumenty za tym żeby było C, to chętnie je wysłucham i przedyskutuje, bo na razie to wiemy tylko, że ma być C a czemu i po co to tajemnica.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 sie 2017, o 17:05 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lut 2014
    Posty: 569
    Lokalizacja: Żagań
    Pomógł: 54

    Chodzi o to, że Eclipse ma problem z kilkoma liniami.
    Konsola:
    Kod:
    18:00:46 **** Build of configuration Release for project AVR450_v14_charger_cpp ****
    make all
    'Building file: ../display/5110.cpp'
    'Invoking: AVR C++ Compiler'
    avr-g++ -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -funsigned-char -funsigned-bitfields -fno-exceptions -mmcu=atmega328 -DF_CPU=8000000UL -MMD -MP -MF"display/5110.d" -MT"display/5110.o" -c -o "display/5110.o" "../display/5110.cpp"
    In file included from ../display/5110.cpp:8:0:
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:22:2: error: 'uint8_t' does not name a type
      uint8_t  m_dq_SCE, m_dq_RST, m_dq_DC, m_dq_DATA, m_dq_CLK;
      ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:23:11: error: 'uint8_t' does not name a type
      volatile uint8_t  *m_port_SCE, *m_port_RST, *m_port_DC, *m_port_DATA, *m_port_CLK;
               ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:27:11: error: 'uint8_t' does not name a type
      volatile uint8_t* Port2DDR(volatile uint8_t *port) {
               ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:35:12: error: 'uint8_t' does not name a type
       volatile uint8_t  *port_SCE, uint8_t  dq_SCE,
                ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:35:22: error: ISO C++ forbids declaration of 'port_SCE' with no type [-fpermissive]
       volatile uint8_t  *port_SCE, uint8_t  dq_SCE,
                          ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:35:32: error: 'uint8_t' has not been declared
       volatile uint8_t  *port_SCE, uint8_t  dq_SCE,
                                    ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:36:12: error: 'uint8_t' does not name a type
       volatile uint8_t  *port_RST, uint8_t  dq_RST,
                ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:36:22: error: ISO C++ forbids declaration of 'port_RST' with no type [-fpermissive]
       volatile uint8_t  *port_RST, uint8_t  dq_RST,
                          ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:36:32: error: 'uint8_t' has not been declared
       volatile uint8_t  *port_RST, uint8_t  dq_RST,
                                    ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:37:12: error: 'uint8_t' does not name a type
       volatile uint8_t  *port_DC, uint8_t  dq_DC,
                ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:37:22: error: ISO C++ forbids declaration of 'port_DC' with no type [-fpermissive]
       volatile uint8_t  *port_DC, uint8_t  dq_DC,
                          ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:37:31: error: 'uint8_t' has not been declared
       volatile uint8_t  *port_DC, uint8_t  dq_DC,
                                   ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:38:12: error: 'uint8_t' does not name a type
       volatile uint8_t  *port_DATA, uint8_t  dq_DATA,
                ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:38:22: error: ISO C++ forbids declaration of 'port_DATA' with no type [-fpermissive]
       volatile uint8_t  *port_DATA, uint8_t  dq_DATA,
                          ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:38:33: error: 'uint8_t' has not been declared
       volatile uint8_t  *port_DATA, uint8_t  dq_DATA,
                                     ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:39:12: error: 'uint8_t' does not name a type
       volatile uint8_t  *port_CLK, uint8_t  dq_CLK
                ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:39:22: error: ISO C++ forbids declaration of 'port_CLK' with no type [-fpermissive]
       volatile uint8_t  *port_CLK, uint8_t  dq_CLK
                          ^
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:39:32: error: 'uint8_t' has not been declared
       volatile uint8_t  *port_CLK, uint8_t  dq_CLK
                                    ^
    ../display/5110.cpp:129:6: error: prototype for 'void LCD_5110::lcd_init(volatile uint8_t*, uint8_t, volatile uint8_t*, uint8_t, volatile uint8_t*, uint8_t, volatile uint8_t*, uint8_t, volatile uint8_t*, uint8_t)' does not match any in class 'LCD_5110'
     void LCD_5110::lcd_init(
          ^
    In file included from ../display/5110.cpp:8:0:
    ../display/../../AVR450_v14_charger_cpp/display/5110.h:34:7: error: candidate is: void LCD_5110::lcd_init(volatile int*, int, volatile int*, int, volatile int*, int, volatile int*, int, volatile int*, int)
      void lcd_init(
           ^
    ../display/5110.cpp: In member function 'void LCD_5110::lcd_clear_area(unsigned char, unsigned char, unsigned char)':
    ../display/5110.cpp:211:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(unsigned int i = start; i < end; i++) lcd_send(0, LCD_DATA);
                                         ^
    ../display/5110.cpp: In member function 'void LCD_5110::lcd_send(unsigned char, LCD_5110::LcdCmdData)':
    ../display/5110.cpp:281:15: error: 'm_port_DATA' was not declared in this scope
      Set(Port2DDR(m_port_DATA), m_dq_DATA, 1);
                   ^
    ../display/5110.cpp:281:26: error: 'Port2DDR' was not declared in this scope
      Set(Port2DDR(m_port_DATA), m_dq_DATA, 1);
                              ^
    ../display/5110.cpp:281:29: error: 'm_dq_DATA' was not declared in this scope
      Set(Port2DDR(m_port_DATA), m_dq_DATA, 1);
                                 ^
    ../display/5110.cpp:282:15: error: 'm_port_DC' was not declared in this scope
      Set(Port2DDR(m_port_DC), m_dq_DC, 1);
                   ^
    ../display/5110.cpp:282:27: error: 'm_dq_DC' was not declared in this scope
      Set(Port2DDR(m_port_DC), m_dq_DC, 1);
                               ^
    ../display/5110.cpp:285:9: error: 'm_port_SCE' was not declared in this scope
         Set(m_port_SCE, m_dq_SCE, 0);//LCD_PORT &= ~LCD_SCE_PIN;
             ^
    ../display/5110.cpp:285:21: error: 'm_dq_SCE' was not declared in this scope
         Set(m_port_SCE, m_dq_SCE, 0);//LCD_PORT &= ~LCD_SCE_PIN;
                         ^
    ../display/5110.cpp:306:7: error: 'm_port_CLK' was not declared in this scope
       Set(m_port_CLK, m_dq_CLK, 1);//LCD_PORT |= LCD_CLK_PIN;
           ^
    ../display/5110.cpp:306:19: error: 'm_dq_CLK' was not declared in this scope
       Set(m_port_CLK, m_dq_CLK, 1);//LCD_PORT |= LCD_CLK_PIN;
                       ^
    make: *** [display/5110.o] Błąd 1

    18:00:48 Build Finished (took 2s.677ms)

    oraz w liniach 5110.cpp:
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    i w 5110.h
    Obrazek

    _________________
    http://leszczamiga.ppa.pl/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 sie 2017, o 17:37 
    Offline
    Użytkownik

    Dołączył(a): 02 cze 2014
    Posty: 68
    Pomógł: 4

    Na początek proponuję dołączyć do pliku 5110.h <stdint.h> i spróbować skompilować. Projekt jest gotowy pod AS6, ale jeśli kolega woli Eclipse, którego nie używam, to będziemy razem walczyć.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 sie 2017, o 17:51 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lut 2014
    Posty: 569
    Lokalizacja: Żagań
    Pomógł: 54

    Ruszyło.
    Ten sam wpis musiałem dodać do:
    - adc.h
    - NiMh.h
    oraz wspomnianego 5110.h.
    Dzięki

    P.S.
    Niestety zbyt pięknie by było prawdziwie.
    Przy oryginalnym pliku hex widoczne są domyślne wartości, które można zmieniać.
    Obrazek

    Przy pliku nowo kompilowanym tych wartości nie ma.
    Obrazek

    O dziwo wielkość plików wynikowych też się różni.
    Oryginał ma 47kb, za nowy tylko 36kb.

    _________________
    http://leszczamiga.ppa.pl/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 sie 2017, o 22:12 
    Offline
    Użytkownik

    Dołączył(a): 02 cze 2014
    Posty: 68
    Pomógł: 4

    Proponuję sprawdzić sobie to: http://mirekk36.blogspot.com/2013/04/ec ... float.html . Jeśli nie pomorze będziemy dalej kombinować.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sie 2017, o 07:32 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lut 2014
    Posty: 569
    Lokalizacja: Żagań
    Pomógł: 54

    Niestety ta porada nie przyniosła poprawy.
    Znak zapytania jest na końcu. Tak jak powinien być.
    Coś czuję, że problem leży w pliku menu.cpp.

    Chociaż, z drugiej strony dane te są zapisane w main.cpp:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    P.S.1
    Uff. Jednak zadziałało.
    Przez "przypadek" usunęło mi wpis "-Wl,-u,vfprintf".
    Dzięki.

    P.S.2
    Program jak na razie działa.
    Są jednak żółte ostrzeżenia w Eclipse.
    Obrazek

    _________________
    http://leszczamiga.ppa.pl/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sie 2017, o 08:31 
    Offline
    Użytkownik

    Dołączył(a): 02 cze 2014
    Posty: 68
    Pomógł: 4

    Już pisałem byś sprawdził czy na pewno masz te wywołania, ale samo się wyjaśniło.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sie 2017, o 20:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lut 2014
    Posty: 569
    Lokalizacja: Żagań
    Pomógł: 54

    Witam.
    Teraz pytanie z "innej mańki".
    Jak zmienić rozłożenie pinów do wyświetlacza?
    Dla wszystkich elementów znalazłem, ale z LCD mam problem.
    Nowe połączenia chcę ustawić tak:
    - PD0 = CLK
    - PD1 = DIN
    - PD2 = DC
    - PD3 = CE
    - PD4 = DRST
    Domyślam się, że znajdują wiś w 5110.cpp.

    _________________
    http://leszczamiga.ppa.pl/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sie 2017, o 21:06 
    Offline
    Użytkownik

    Dołączył(a): 02 cze 2014
    Posty: 68
    Pomógł: 4

    W pliku menu.cpp masz funkcję lcdInit, a tam wywołaną metode lcd.lcd_init. Wpisz w niej swoje porty. Kolejność możesz podejrzeć w pliku 5110.h gdzie jest metoda lcd_init.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 sie 2017, o 21:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lut 2014
    Posty: 569
    Lokalizacja: Żagań
    Pomógł: 54

    W menu.cpp zmieniłem na:
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    zgodnie z opisem w 5110.cpp:
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    W main.cpp zmieniłem podciąganie dla przycisków:
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    W header.h zmieniłem definicje dla przycisków:
    Składnia: [ Pobierz ] [ Ukryj ]
    język cpp
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    I niestety teraz mam ładny pusty ekran :(
    Co robię źle tym razem.
    Łatwiej jest projektować układy niż pisać do nich soft.

    _________________
    http://leszczamiga.ppa.pl/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 wrz 2017, o 10:59 
    Offline
    Użytkownik

    Dołączył(a): 02 cze 2014
    Posty: 68
    Pomógł: 4

    Proponuje zacząć zmiany od pojedynczych linii i obserwować co się dzieje. Może gdzieś w połączeniach coś się pomieszało.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 wrz 2017, o 13:17 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lut 2014
    Posty: 569
    Lokalizacja: Żagań
    Pomógł: 54

    Problem pojawia się przy zmianie pinów PB4 i PB5 na inne.
    Pomiędzy sobą mogą być zamieniane, ale na inne już nie.

    _________________
    http://leszczamiga.ppa.pl/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 wrz 2017, o 13:32 
    Offline
    Użytkownik

    Dołączył(a): 02 cze 2014
    Posty: 68
    Pomógł: 4

    No to już coś wiadomo. Jak wieczorem znajdę chwile to się przyjrzę kodowi w czym rzecz.

    PS. Sprawdziłem na symulatorze dla twoich ustawień i wygląda na to, że przerzuca stanami portów tak jak powinno. Coś musi być nie tak w połączeniach (może coś do tych portów jest jeszcze podłączone i zakłóca transmisję).



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO