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



Teraz jest 14 lut 2025, o 20:53


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 ]
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 1 gość


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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO