Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

Arkej 13 Apr 2012 18:34 1198 4
  • #1
    Arkej
    Level 9  
    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:
    Code: c
    Log in, to see the code


    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ę:

    Code: c
    Log in, to see the code

    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:

    Code: c
    Log in, to see the code



    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.
  • #3
    Arkej
    Level 9  
    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?
  • #4
    mickpr
    Level 39  
    Arkej wrote:
    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.