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.

Najprostszy program w C nie działa-zapalenie diody (18F2550)

twistpl 18 Sie 2010 14:33 3021 10
  • #1 18 Sie 2010 14:33
    twistpl
    Poziom 12  

    Witam.
    Postanowiłem zabrać się za programowanie. Miałem pod ręką już 18F2550 więc to jest mój układ do eksperymentów. Siedzę nad tym parę godzin (naprawdę) i nie umiem zmusić tego uC do zapalenia diody.
    Na początku programowałem wg. zlepków znalezionych w przykładowych programach. Potem znalazłem kurs na Gooligum - wydaje się dobry.
    Całość w MPLAB IDE pisana. Dołączam kod:

    Code:
    #include <htc.h>
    
    main(void)
    {
      TRISC=0b000000;           // caly port c na output
      RC7=1;               // Pin 7 portu c na high
      for (;;){               // Petla
         ;
      } 
    }


    No i po podłączeniu diody rezystora i kondensatora (tak jak na schemacie w pdfie) nic się nie dzieje. Między GND i VDD podłączony 100n kondensator, z RC7 idzie rezystor a za nim dioda. Na VDD daję 5V (w innym kursie jeszcze trzeba było podłączyć MCLR ale to nie pomaga i tak.)
    No i ta dioda nie świeci.Na RC7 jest 0.3V.
    Dopiero się za to zabieram więc proszę łagodnie powiedzieć co jest źle. Choć na codzień w C++ programuję to tu nie wiem gdzie w takim banalnym programie może być błąd. Oczywiście kompilator ustawiony na odpowiedni uC

    0 10
  • #2 18 Sie 2010 18:06
    namlooc
    Poziom 15  

    Podciagnij wyjscie programowo do zera podajac na nie jedynke

    0
  • #3 18 Sie 2010 19:47
    twistpl
    Poziom 12  

    Przepraszam jeśli się mylę, ale RC7=1 powinien jedynke wyprowadzić na odpowiedni port. Jeszcze próbowałem PortC = 0xFF zeby na całym porcie C się pojawił stan wysoki, ale bez skutku.

    0
  • Pomocny post
    #4 18 Sie 2010 20:08
    zerpo
    Poziom 22  

    Jakiś czas już nie korzystam z PICów, ale możesz spróbować jeszcze wystawić JEDYNKĘ za pomocą rejestru LATC (np. LATC = 0xFF).

    0
  • Pomocny post
    #5 18 Sie 2010 20:39
    Mat_91
    Poziom 25  

    Tak jak mówi zerpo, użyj latc.

    I pasowało by czytać datasheet, rozdział 10, pierwsze linijki:

    Code:

    • TRIS register (data direction register)
    • Port register (reads the levels on the pins of the
    device)
    • LAT register (output latch)

    0
  • #6 18 Sie 2010 21:03
    twistpl
    Poziom 12  

    Niestety bez rezultatu ;/
    Może schemat przedstawię jak podłączyłem - nie zdziwiłbym się gdybym na tym poziomie coś zepsuł :D

    Najprostszy program w C nie działa-zapalenie diody (18F2550)

    Po lewej tak jak ja mam podłączone - po prawej tak jak w kursie jest.

    I program jak teraz wyglada: (z Hi-tech c)

    Code:

    #include <htc.h>
    #include <pic18.h>
    main(void)
    {

      TRISC=0x00;
      while (1){
      LATC=0xFF;   
      } 
    }

    0
  • #7 18 Sie 2010 21:22
    Mat_91
    Poziom 25  

    Nie znam tego kompilatora, więc czy przypadkiem nie powinieneś zastosować pliku pic18f2550.h (przynajmniej o takiej lub podobnej nazwie był plik w kompilatorze od microchip'a), co to za plik htc.h? W opcjach projektu poprawnie zdefiniowałeś procesor? Wyskakują jakieś błędu lub warningi kompilacji?

    Podciągnij MCLR do Vcc...

    0
  • #8 18 Sie 2010 21:35
    twistpl
    Poziom 12  

    w innym kompilatorze była taka potrzeba (includowac plik z danym modelem pic), ale w tym wystarczy dobrze w projekcie wybrać. Tak więc w projekcie dobry układ wybrany.

    Co do błedów i warningów to tylko info:

    Cytat:
    Severity and Description Path Resource Location Creation Time Id
    (1192) licensed for evaluation purposes only LED Unknown 1282158711850 167
    (1193) this licence will expire on Wed, 22 Sep 2010 LED Unknown 1282158711851 168
    (1233) Employing 18F2550 errata work-arounds: LED Unknown 1282158711851 169
    (1234) * Corrupted fast interrupt shadow registers LED Unknown 1282158711851 170


    ale kompilacja bez poważniejszych błędów przechodzi.

    Podciągnięcie MCLR nic nie daje.

    Ten htc.h to w jakimś z kursów był jest to plik tylko dla tego kompilatora jakieś chyba podstawowe instrukcje ma, ale kompiluje się program bez niego.

    0
  • #9 18 Sie 2010 21:40
    McMonster
    Poziom 32  

    Może to najprostszy z możliwych problemów, czy dioda podłączona na odwrót? Sprawdzałeś miernikiem napięcie na pinach układu?

    0
  • #10 18 Sie 2010 21:51
    twistpl
    Poziom 12  

    Całość na płytce jest uniwersalnej i wystarczy, że kabelek z VDD przepnę koło rezystora (tzn na nóżkę RC7) i dioda się zapala.

    Napięcia na Porcie C 0.7V oprócz tej siódmej nóżki (0.3V - przez rezystor).

    Wracając do htc.h:

    #include <htc.h> // Required to interface with delay routines

    wcześniej od razu próbowałem z mruganiem diody, ale jak nie działało to postanowiłem podjąć próbę samego zapalenia.





    ///

    ehhh uporałem się z tym. Wczoraj wieczorem jeszcze dłuuugo przy tym siedziałem ze 3 internety przeszukałem i trafiłem na informację, że to może być wina programu do programowania. WinPic zamieniłem na WinPicpgm i wszystko pięknie działa.
    Bardzo dziękuję za pomoc.

    a tak przy okazji. Wie ktoś może dlaczego nie działają mi 2 piny na porcie C? Dokładnie to 4 i 5. Jak coś wysyłam do ciągle stan niski jest, a każdy inny pin na porcie C działa. Wystarczy, że np. RC4 zamienię na RC2 i normalnie mi wyśle na te RC2. Innych portów na razie nie sprawdziłem, ale może coś trzeba odblokować? Rzucę okiem do datasheet, ale może ktoś wie czego to wina.

    0
  • Pomocny post
    #11 19 Sie 2010 14:40
    zerpo
    Poziom 22  

    W datasheecie jest napisane:

    Cytat:
    Note: On a Power-on Reset, these pins, except
    RC4 and RC5, are configured as digital
    inputs. To use pins RC4 and RC5 as digital
    inputs, the USB module must be disabled
    (UCON<3> = 0) and the on-chip
    USB transceiver must be disabled
    (UCFG<3> = 1).


    Czyli domyślnie kontrolę nad tymi pinami po resecie przejmuje kontroler USB, trzeba go wyłączyć...

    0
  Szukaj w 5mln produktów