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

AVR - wyświetlacz wc1602a/hd4470 i atmega16 język C

mardar007 11 Gru 2014 18:07 1341 15
REKLAMA
  • #1 14213259
    mardar007
    Poziom 10  
    mam świadomość, że są już podobne tematy, jednak w żadnym nie znalazłem rozwiązania mego problemu, a jak już ktoś doszedł do rozwiązania to nie napisał w jaki sposób.

    Do napisania programu posłużyłem się bibliotekami ze strony Link

    wszelkie połączenia z wyświetlaczem ustawiłem na portc, zmieniłem w bibliotekach ustawienia tak aby odpowiadały połączeniu.
    pliki wkleiłem do folderu w którym znajduje się projekt.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    niestety w dalszym ciągu mam kwadraciki w pierwszym wierszu.

    środowisko w którym piszę to Eclipse o ile jest to istotne.
  • REKLAMA
  • #2 14213315
    michalko12
    Specjalista - Mikrokontrolery
    https://www.elektroda.pl/rtvforum/topic349089.html

    Ogarnij się!
    Dołącz dokładny schemat lub opis podłączenia, nagłówek z własnymi deklaracjami portów, jakie F_CPU i czy w ogóle zadeklarowane oraz jaki stopień optymalizacji.
    Do tego jeszcze opis FUSEbitów, czy JTAG wyłączony?
  • #3 14213804
    mardar007
    Poziom 10  
    atmega wyświetlacz

    PC0 RS
    PC1 RW
    PC2 E
    PC3 DB4
    PC4 DB5
    PC5 DB6
    PC6 DB7



    F_CPU 1000000UL

    JTagów nie wyłączałem, FUSEbity nie ruszane.

    nagłówek w bibliotece HD44780.h

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    błędów w połączeniu nie ma. kilka osób sprawdzało połączenie i się zgadza
  • #4 14213870
    dondu
    Moderator na urlopie...
    mardar007 napisał:
    JTagów nie wyłączałem,

    No to jak chcesz skorzystać z pinów portu C, które JTAG wykorzystuje, a które jednocześnie chcesz wykorzystać do LCD?: http://mikrokontrolery.blogspot.com/2011/04/Pulapki-AVR-JTAG-blokuje-piny-portu.html

    F_CPU mam nadzieję definiujesz w opcjach projektu?
  • REKLAMA
  • #5 14213912
    mardar007
    Poziom 10  
    korzystam z MKAvrCalculator i jest opcja wyłączenia JTAG'a i tak też zrobilem. dalej nic to nie zmienia.

    co do F_CPU to tak, jest to zdefiniowane w util/delay.h
    gdy wpisuję osobno wyrzuca error że się dubluje
  • REKLAMA
  • #6 14213937
    dondu
    Moderator na urlopie...
    mardar007 napisał:
    co do F_CPU to tak, jest to zdefiniowane w util/delay.h
    gdy wpisuję osobno wyrzuca error że się dubluje

    Oj, oj, - pisałem przecież:

    dondu napisał:
    F_CPU mam nadzieję definiujesz w opcjach projektu?

    a nie w util/delay.h

    Poczytaj i stosuj już zawsze: http://mikrokontrolery.blogspot.com/2011/03/fcpu-gcc-gdzie-definiowac.html
  • #7 14214016
    mardar007
    Poziom 10  
    F_CPU 8000000UL
    JTAG wyłączony, dalej wyświetlają się kwadraciki
  • #8 14214031
    dondu
    Moderator na urlopie...
    mardar007 napisał:
    F_CPU 8000000UL
    JTAG wyłączony, dalej wyświetlają się kwadraciki

    Skaczesz z kwiatka na kwiatek podając co chwilę tylko część informacji. Teraz muszę zapytać o ustawienia Fusebitów, bo podałeś inną wartość F_CPU niż standardowe 1MHz podane wcześniej, gdzie twierdziłeś dodatkowo, że fusebitów nie zmieniałeś.
  • #9 14214070
    mardar007
    Poziom 10  
    Wybacz. jestem trochę poirytowany moją nie wiedzą i czasem jaki zmarnowałem na poszukiwania bibliotek gdyż myślałem, że poprzednie były złe.

    Ustawienie Fusebitów
  • #10 14214108
    dondu
    Moderator na urlopie...
    Nie ma sprawy - znam to uczucie :)

    Uporządkujmy więc:
    - fusebity E1, D9 są prawidłowe (JTAG wyłączony + 1MHz wewnętrzny RC)
    - w opcjach projektu ustaw 1MHz,
    - pobierz jeszcze raz oryginalne piliki biblioteki LCD Radzia - to sprwadzone biblioteki - na pewno działają prawidłowo.
    - w nagłówku HD44780.H ustawi piny tak jak masz połączony układ (to musisz sam sprawdzić)
    - pokaż komunikaty z kompilacji.

    ... musi działać :)
  • #11 14214132
    mardar007
    Poziom 10  
    mam ustawione 1MHz w projekcie
    mam oryginalne biblioteki radzia z ustawionymi moimi wyjściami
    w nagłówku ustawiłem tak jak mam podłączone do procka

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    komunikat po kompilacji

    **** Build of configuration Release for project test2 ****

    make all
    Invoking: Print Size
    avr-size --format=avr --mcu=atmega16 test2.elf
    AVR Memory Usage
    ----------------
    Device: atmega16

    Program: 1410 bytes (8.6% Full)
    (.text + .data + .bootloader)

    Data: 39 bytes (3.8% Full)
    (.data + .bss + .noinit)


    Finished building: sizedummy


    **** Build Finished ****


    w dalszym ciągu kwadraciki na wyświetlaczu.
    przepinając wyświetlacz pod port A oraz zmieniając w bibliotekach na poprawne wartości tak jak mam podłączone, w dalszym ciągu mam kwadraciki. bez jakiejkolwiek zmiany, reakcji
  • Pomocny post
    #12 14214144
    dondu
    Moderator na urlopie...
    Pokaż zdjęcia i schemat podłączenia jeśli masz.


    mardar007 napisał:
    mam oryginalne biblioteki radzia z ustawionymi moimi wyjściami

    Wiem, że masz, ale chodziło mi o to byś:

    dondu napisał:
    - pobierz jeszcze raz oryginalne piliki biblioteki LCD Radzia ...
    - w nagłówku HD44780.H ustawi piny tak jak masz połączony układ (to musisz sam sprawdzić)

    po prostu chcę wyeliminować wszelkie ewentualne problemy.
  • REKLAMA
  • #13 14214423
    excray
    Poziom 41  
    W jaki sposób wgrywasz program do procesora? Czy już wgrywałeś jakieś inne programy które działały?
  • #14 14216221
    mardar007
    Poziom 10  
    Po przyjściu do domu wypiciu zacnego bursztynowego trunku zasiadłem do mego fantastycznego programu. Wypiąłem wyświetlacz, przeniosłem go na PORTA, przejrzałem kilkukrotnie mój fantastyczny program i znalazłem w nim małego złośnika szkodnika którym okazała się linijka kodu w przerwaniach która używała portu PA1 i stąd na porcie a nie działał mi program. niestety na porcie C nie chciało mi działać mimo faktu, że żaden z portów C nie był nigdy używany, jedynie do obsługi wyświetlacza. także wszystkim osobom które mają problem z wyświetlaczem podpiętym do portu C (w atmega16) w którym jest ustawiany JTAG (sądzę że to była wina mimo że go wyłączyłem) aby zmieniły porty i dobrze je posprawdzały czy aby na pewno żadna linijka kodu nie korzysta z pinu który deklarujecie dla waszego wyświetlacza.

    jako ewentualna rada dla osób piszących jakiekolwiek poradniki do AVR zamieście tam dopisek aby nie korzystać z portów z JTAGiem jako porty wyświetlacza(osoby początkujące mogą mieć spore problemy z wyłączaniem JTAGa jak i zniechęcą się do pisania po napotkaniu takich problemów)

    także wybaczcie Panowie za kłopoty i problemy (aczkolwiek dalej nie wiem czemu na porcie C nie działa mi wyświetlacz mimo wszystkich zabiegów) i mam nadzieję że mimo wszystko w razie kłopotów będziecie skorzy do pomocy. Jeszcze raz wam dziękuję szczególnie użytkownikowi dondu którego serdecznie pozdrawiam.
  • #15 14219869
    dondu
    Moderator na urlopie...
    mardar007 napisał:
    jako ewentualna rada dla osób piszących jakiekolwiek poradniki do AVR zamieście tam dopisek aby nie korzystać z portów z JTAGiem jako porty wyświetlacza(osoby początkujące mogą mieć spore problemy z wyłączaniem JTAGa jak i zniechęcą się do pisania po napotkaniu takich problemów).

    Problem JTAG i pinów portu, to nie tylko przypadek LCD, dlatego nie należy go tak rozpatrywać. Przy prawidłowym wyłączeniu JTAG piny musza działać jak zwykłe piny :)

    mardar007 napisał:
    Jeszcze raz wam dziękuję szczególnie użytkownikowi dondu którego serdecznie pozdrawiam.

    My również życzymy sukcesów :)
  • #16 14223901
    mardar007
    Poziom 10  
    jtag był wyłączony a nie działało na porcie c także sam już nie wiem w czym był problem, ale ważne że teraz działa :D
REKLAMA