logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Wyświetlacz graficzny S1D15705 - brak reakcji

lukasek5 04 Sty 2012 14:35 2867 11
  • #1 10347142
    lukasek5
    Poziom 9  
    Witam,

    Napisałem w AVR STUDIO program wyświetlający na ekranie przykładowy tekst i wgrałem go przy pomocy PONYPROG na atmege. Po podłączeniu do zasilania, świeci się podświetlenie zasilacza, natomiast nic nie jest wyświetlone. W załączniku przesyłam cały projekt z AVR STUDIO. Jeżeli chodzi o podłączenie (wyświetlacza do atmegi) to linie danych podłączone są do portu A, a linie sterujące do portu D, a konkretnie D0-reset, D1-RD, D2-WR, D6-A0. Wyświetlacz który posiadam to S1D15705 (http://lispol.com/file/281/0/graficzne.pdf). W PONYPROGU ładuje plik .hex wygenerowany w AVR STUDIO do mikrokontrolera. Chciałem się zapytać czy dobrze to robie, czy powinienem ładować jeszcze inny plik, a jeżeli tak to jaki ? Nie wiem czy problem leży po stronie połączeń czy programu i dlatego chciałbym się dowiedzieć czy programowo zrobiłem to dobrze.

    Z góry dziękuje za pomoc.
  • #2 10347975
    Piotrek_P
    Poziom 18  
    1. Gdzie w tej paczce jest plik projektu (AVRStudio) *.aps ?
    2. W pliku main.c (pętla główna) masz odwołania do procedur obsługi PCF8583, ale nigdzie w projekcie tych procedur nie widzę. Jak to ma działać?
    3. Jaka ATMega?
    4. No i na koniec. Jaki masz programator? Jeżeli używasz AVRStudio, to może ten PonyProg nie jest wogóle potrzebny.

    To narazie tyle.

    PP

    P.S. Widzę że to AVRStudio 5. Nie polecam na początek.
  • #3 10348342
    lukasek5
    Poziom 9  
    1. Tak to avr studio 5 (a plik projektu znajduje się w głównym folderze z rozszerzeniem avrsln). Jeżeli z tą wersją są problemy to jaką najlepiej wybrać (bądź jaki program).
    2. Poprawiłem to i wrzuciłem drugi raz (nie zauwarzyłem że został tam plik main.c). Głównym plikiem jest stacja.c, a S1D15705.c i S1D15705.h to biblioteka do obsługi wyświetlacza (z tego forum troche przerobiona).
    3. atmega32a (praktycznie atmega32)
    4. Mam STK200/300 podłączony do portu LPT (który niestety z tego co wiem nie współpracuje z avr studio).

    W załączniku przesyłam lekko poprawioną wersję (bez main.c).
  • #4 10348759
    Piotrek_P
    Poziom 18  
    Ja bym na Twoim miejscu zrezygnował z najnowszego AVRStudio 5 i zainstalował WinAVR + AVRStudio 4.18 + SP3. Zestaw sprawdzony, działa i nie ma kłopotu. Opcja nr 2 to WinAVR + Eclipse (też bdb zestaw, kwestia subiektywnej oceny). W ostateczności zawarty w pakiecie WinAvr, edytor ProgrammersNotepad. Co do wgrywania programów przez STK200, to nigdy się nie przekonałem do PonyProga. Można spróbować ISPProg'a kolegi Adama Dybkowskiego. Całkiem sprytny programik.
    Co do programu. Jak wygląda rezultat kompilacji? Mam wrażenie że biblioteka pochodzi z rozwiązań Microchipa, ale mogę się mylić.

    PP
  • #5 10349050
    lukasek5
    Poziom 9  
    Po zainstalowaniu ISPProg'a udało mi się wykryć mój mikrokontroler, ale próba jakiegokolwiek wgrania pliku hex do pamięci uC kończy się niepowodzeniem (can't open file). W polu "current reset status" mam wpisane ON, czy to oznacza że mam cały czas aktywny reset i dlatego nie moge nic zaprogramować ?
    Jeżeli chodzi o biblioteke to jest to możliwe, widziałem ją już wcześniej w kilku projektach na forum i wszyscy pisali że jest poprawna, a jeżeli chodzi o wynik działania programu to chce wyświetlić coś na wyświetlaczu (w tym przypadku słowo "test"), chce po prostu sprawdzić czy działa. Nastomiast jeżeli chodzi o loga kompilacji to wygląda on tak:

    COMPILE:
    
    Build started.
    Project "Stacja.avrgccproj" (Compile target(s)):
    Target "Compile" in file "C:\Program Files\Atmel\AVR Studio 5.0\Vs\AvrGCC.targets" from project "C:\Users\Łukasz\Documents\AVRStudio\Stacja\Stacja\Stacja.avrgccproj" (entry point):
    	Task "RunAvrGCC"
    		C:\Program Files\Atmel\AVR Studio 5.0\AVR ToolChain\bin\make.exe "Stacja.o" 
    		make: `Stacja.o' jest aktualne.
    	Done executing task "RunAvrGCC".
    Done building target "Compile" in project "Stacja.avrgccproj".
    Done building project "Stacja.avrgccproj".
    
    Build succeeded.
    


    BUILD:
    
    Build started.
    Project "Stacja.avrgccproj" (ReBuild target(s)):
    Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
    Target "CoreRebuild" in file "C:\Program Files\Atmel\AVR Studio 5.0\Vs\AvrGCC.targets" from project "C:\Users\Łukasz\Documents\AVRStudio\Stacja\Stacja\Stacja.avrgccproj" (target "ReBuild" depends on it):
    	Task "RunAvrGCC"
    		C:\Program Files\Atmel\AVR Studio 5.0\AVR ToolChain\bin\make.exe clean all 
    		rm -rf  S1D15705.o Stacja.o S1D15705.d Stacja.d   libStacja.a  Stacja.hex  Stacja.eep  Stacja.lss Stacja.map
    S1D15705.c
    		Invoking: AVR/GNU C Compiler
    		"C:/Program Files/Atmel/AVR Studio 5.0/AVR ToolChain/bin/avr-gcc.exe" -funsigned-char -funsigned-bitfields -O0 -fpack-struct -fshort-enums -g2 -Wall -c -std=gnu99  -mmcu=atmega32   -MD -MP -MF"S1D15705.d" -MT"S1D15705.d" -o"S1D15705.o" ".././S1D15705.c"
    		In file included from .././S1D15705.h:6:0,
    		                 from .././S1D15705.c:6:
    c:\program files\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h(89,3): #warning "F_CPU not defined for <util/delay.h>"
    c:\program files\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h(94,3): #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
    		Finished building: .././S1D15705.c
    Stacja.c
    		Invoking: AVR/GNU C Compiler
    		"C:/Program Files/Atmel/AVR Studio 5.0/AVR ToolChain/bin/avr-gcc.exe" -funsigned-char -funsigned-bitfields -O0 -fpack-struct -fshort-enums -g2 -Wall -c -std=gnu99  -mmcu=atmega32   -MD -MP -MF"Stacja.d" -MT"Stacja.d" -o"Stacja.o" ".././Stacja.c"
    		In file included from .././Stacja.c:5:0:
    c:\program files\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h(89,3): #warning "F_CPU not defined for <util/delay.h>"
    c:\program files\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h(94,3): #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
    		Finished building: .././Stacja.c
    		Building target: Stacja.elf
    		Invoking: AVR/GNU C/C++ Linker
    		"C:/Program Files/Atmel/AVR Studio 5.0/AVR ToolChain/bin/avr-gcc.exe"  -mmcu=atmega32  -Wl,-Map=Stacja.map -o Stacja.elf  S1D15705.o Stacja.o  
    		Finished building target: Stacja.elf
    		"C:/Program Files/Atmel/AVR Studio 5.0/AVR ToolChain/bin/avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature  "Stacja.elf" "Stacja.hex"
    		"C:/Program Files/Atmel/AVR Studio 5.0/AVR ToolChain/bin/avr-objdump.exe" -h -S "Stacja.elf" > "Stacja.lss"
    		"C:/Program Files/Atmel/AVR Studio 5.0/AVR ToolChain/bin/avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "Stacja.elf" "Stacja.eep" || exit 0
    		AVR Memory Usage
    		----------------
    		Device: atmega32
    		Program:   10378 bytes (31.7% Full)
    		(.text + .data + .bootloader)
    		Data:        286 bytes (14.0% Full)
    		(.data + .bss + .noinit)
    	Done executing task "RunAvrGCC".
    Done building target "CoreRebuild" in project "Stacja.avrgccproj".
    Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
    Target "ReBuild" in file "C:\Program Files\Atmel\AVR Studio 5.0\Vs\Avr.common.targets" from project "C:\Users\Łukasz\Documents\AVRStudio\Stacja\Stacja\Stacja.avrgccproj" (entry point):
    Done building target "ReBuild" in project "Stacja.avrgccproj".
    Done building project "Stacja.avrgccproj".
    
    Build succeeded.
    ========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
    
  • #6 10349219
    Piotrek_P
    Poziom 18  
    Zwróciłeś może dokładnie uwagę na linie logu kompilatora?

    c:\program files\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h(89,3): #warning "F_CPU not defined for <util/delay.h>"
    c:\program files\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h(94,3): #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
    Finished building: .././S1D15705.c
    Stacja.c
    Invoking: AVR/GNU C Compiler
    "C:/Program Files/Atmel/AVR Studio 5.0/AVR ToolChain/bin/avr-gcc.exe" -funsigned-char -funsigned-bitfields -O0 -fpack-struct -fshort-enums -g2 -Wall -c -std=gnu99 -mmcu=atmega32 -MD -MP -MF"Stacja.d" -MT"Stacja.d" -o"Stacja.o" ".././Stacja.c"
    In file included from .././Stacja.c:5:0:
    c:\program files\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h(89,3): #warning "F_CPU not defined for <util/delay.h>"
    c:\program files\atmel\avr studio 5.0\avr toolchain\bin\../lib/gcc/avr/4.5.1/../../../../avr/include/util/delay.h(94,3): #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"

    Warningi wskazują na brak definicji F_CPU w projekcie. Kompilator dwołuje się do conajmniej dwóch miesc w kodzie. Zauważyłem że w bibliotece do wyświetlacza jest definicja FCPU = 12000000ULL (Unsigned Long Long)
    To też budzi moje wątpliwości bo w GCC dla procków 8-bit niema raczej takiego "typu".

    Naprawdę proponuję przebudować projekt w jakimś bardziej strawnym i "pewnym" środowisku.

    PP
  • #7 10350445
    dondu
    Moderator na urlopie...
    Poza tym co kolega wyżej napisał o braku definicja F_CPU w projekcie, sprawdź którą wersję AVR Studio 5 masz?
    W pierwszej AVR5 był błąd dotyczący delay, w ostatniej wersji jest już to poprawione.
  • #8 10352704
    lukasek5
    Poziom 9  
    Próbowałem już programmers notepad, avr studio 4 i wróciłem do avr studio 5 (najnowsza wersja) ponieważ wszędzie są problemy (głównie z plikiem make, programmers notepad pisze o braku reguł dotyczących pliku elf). Zdefiniowałem F_CPU przed dodaniem biblioteki delay i błąd zniknął, został tylko ten z brakiem możliwości optymalizacji. Jednak cały czas podczas próby debugowania (nawet najprostszego pliku gdzie nie korzystam z dodatkowych bibliotek i nie mam żadnych błędów podczas buildowania) przy pomocy simulatora wyskakuje błąd braku pliku .elf (a znajduje się on we właściwym katalogu). Co może być przyczyną ? Dlaczego ISPProg nie potrafi wczytać żadnego pliku .hex ?
    Bardzo prosze o pomoc, jestem bezsilny. :(
  • #9 10354977
    dondu
    Moderator na urlopie...
    Zrób tak:
    1. pokaż schemat
    2. pokaż zdjęcia projektu
    3. zrób prosty pogram migający diodą LED i podłącz ją.
    4. załącz ten program tutaj i opisz dokładnie, jakie są efekty.
    I rób to wszystko tylko w Studio 5 i nie kombinuj nic a makefile - niech robi automatycznie za Ciebie.
    Tylko nie zapomnij ustawić zegara w opcjach i optymalizacji -0s.
  • #10 10363903
    lukasek5
    Poziom 9  
    Schemat jest na końcu tego tematu: Link. Zdjęcie postaram się zrobić w najbliższym czasie.
    Niestety nie mam możliwości podłączenia diody ponieważ nie mam płytki stykowej ani uniwersalnej (od razu zrobiłem własną płytke i ją polutowałem, wiem to był błąd). Jedyna możliwość jaką teraz mam to mierzenie napięcia na pinach atmegi (udało mi się w końcu wgrać program do uC).
    Napisałem taki program testowy:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jako wynik dostaje następujące napięcia:

    PINA0 - 0.0V
    PINA1 - ok. 2.1V
    PINA2 - 1.5V
    PINA3 - 1.5V
    PIN A4-A7 - 0.0V

    Jak mam to rozumieć, czy jako stan wysoki nie powinno być na wyjściu napięcie zasilania uC (w moim przypadku 3.3V) ? Jest możliwe że mam zepsutą atmege, jeżeli moge ją programować ?
  • #11 10364122
    Piotrek_P
    Poziom 18  
    Dobrze kombinujesz, ale pętelka "while" zap..la i ani dioda, ani miernik Ci tego nie pokaże. Potrzebne jest opóźnienie.

    PP
  • #12 10382995
    lukasek5
    Poziom 9  
    Wiem już, że mikrokontroler jest sprawny, i dane wysyłane do wyświetlacza "docierają" do niego. Niestety cokolwiek bym nie robił (jakiekolwiek komendy lub dane bym nie wysyłał) zawsze na wyświeltaczu zapalone są wszystkie piksele. (wykorzystuje kody zamieszczone na elektrodzie, które u innych działają) Czy to oznacza że wyświetlacz może być zepsuty, jak moge to sprawdzić ?
REKLAMA