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

[C][PIC16F877A] Problem z zaprogramowaniem - uszkodzony?

Arkej 13 Kwi 2012 18:34 1054 4
  • #1 13 Kwi 2012 18:34
    Arkej
    Poziom 8  

    Witam serdecznie,
    Od kilku dni przerabiam sobie książkę "Mikrokontrolery PIC w praktycznych zastosowaniach".

    Korzystam z najprostszej wersji programatora JDM (wkrótce planuję zakup Pickita albo zrobienie sobie Brennera <jeszcze nie wiem, co będzie lepsze>). Używam aplikacji IC-Prog 1.06C.

    Dzisiaj chciałem trochę poeksperymentować z wyświetlaczem LCD (2x16). Niestety podczas 'zabawy' z kodem musiałem jakoś zablokować mikrokontroler. Opiszę dokładnie swoje kroki:

    - najpierw przetestowałem oryginalny listing programu z książki - wszystko ładnie śmiga

    - później zacząłem eksperymentować:
    Jest tam taka funkcja:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Nie bardzo wiem dlaczego do zmiany indeksu tablicy użyto zmiennej typu char. Ba! Nie widziałem nawet, że chary można inkrementować! W związku z czym na próbę zmieniłem typ na int. Dodatkowo, żeby nie męczyć się z ręcznym liczeniem znaków w słowie, zrobiłem taką funkcję:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Wiem, że popełniłem tutaj błąd - źle przekazuję tablicę do funkcji. MPLAB jednak nie wyrzucił błędu.
    Ostatecznie, wywołanie funkcji wyświetlającej wyglądało tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Tak zmodyfikowany program wgrałem do mikrokontrolera. Na wyświetlaczu jednak nic się nie pojawiało. Cóż, pomyślałem, że te inty jednak tam nie mogą być. Wróciłem więc do pierwotnej wersji programu. Niestety, gdy próbuję go wgrać, to podczas weryfikacji pojawia się 'Błąd weryfikacji przy adresie 0000h'. Co więcej, mam jeszcze jeden, taki sam, czysty mikrokontroler (zamówiłem sobie 3 sztuki u Microchipa :) ). No i na niego można wgrać program bez problemów.

    Pytanie zasadnicze - co się mogło stać? Jak zdiagnozować usterkę? Czy da się to naprawić? (przyda mi się taka wiedza na przyszłość).


    PS. Jakby co to załączam cały, oryginalny kod programu.

    0 4
  • #3 14 Kwi 2012 00:27
    Arkej
    Poziom 8  

    A jeszcze zapytam o jedno... Dlaczego w wyżej załączonej funkcji użyto zmiennej 'k' typu char? Ma to jakieś znaczenie? Czy z integerem powinno działać tak samo?

    No i gdzie można kupić w detalu Pickita 3?

    0
  • #4 14 Kwi 2012 08:29
    mickpr
    Poziom 39  

    Arkej napisał:
    A jeszcze zapytam o jedno... Dlaczego w wyżej załączonej funkcji użyto zmiennej 'k' typu char? Ma to jakieś znaczenie? Czy z integerem powinno działać tak samo?

    No i gdzie można kupić w detalu Pickita 3?

    Znów mnie moderator posądzi o zaniżanie poziomu forum :)
    Otóż zastosowano char - ponieważ on jest wystarczający do zapisania kodu ASCII.

    Pickit-a widziałem na allegro, ale chyba w jakimś sklepie też, nie pamiętam dokładnie.

    0