Warning: Illegal string offset 'name' in [path]/includes/functions.php on line 6439
SPI/PIC18f4550
+
1 2 3

thread: SPI/PIC18f4550

  1. #1
    Junior Member
    Mar 2008
    22

    SPI/PIC18f4550

    Vai kādam ir nācies darboties ar hardware ISP uz PIC18F4550?
    Paņēmu divus PIC18F4550 un saslēdzu - DI->DO DO->DI CK->CK, SS->SS... Viens PIC sūta, otrs saņem un rezultātu sūtu caur COM uz kompi.
    Uztaisīju "Bit-banging" variantu, viss strādā lieliski. Piejūdzu SPI caur hardware - sūtītājs sūta, bet saņēmējs strādā randomā...
    Kodu rakstu C izmantojot microchip <SPI.h>.
    Saņēmējs
    :
    TRISAbits.TRISA5 = 1;    //CS
    TRISBbits.TRISB0 = 1;    //DI
    TRISCbits.TRISC7 = 0;    //DO
    TRISBbits.TRISB1 = 1;    //SCLK
    OpenSPI(SLV_SSON, MODE_00, SMPEND)
    while (true) {
         if (DataRdySPI()) {
            comOut(getcSPI());
         }
    }
    Sūtītājs:
    :
        TRISBbits.TRISB1 = 0; // SCK
        TRISBbits.TRISB0 = 1; // SDI
        TRISCbits.TRISC7 = 0; // SDO
        TRISAbits.TRISA5 = 0; // CS
        OpenSPI(SPI_FOSC_64, MODE_00, SMPEND);
        while (true) {
            PORTAbits.RA5 = 0;
            WriteSPI(1);
            PORTAbits.RA5 = 1;
            // garāka pauze....
        }
    sūtītājs darbojas uz 32KHZ

  2. #2
    Moderator
    Mar 2008
    Ogre
    1,445

    Re: ISP/PIC18f4550

    esi dzirdējis par jēdzienu interrupt (IRQ)?
    If it's worth doing, it's worth overdoing, right? / Tory Belleci, Mythbusters /

  3. #3
    Junior Member
    Mar 2008
    22

    Re: ISP/PIC18f4550

    jā, drusku
    bet šajā gadījumā līdz tam pat vēl netiku. Nestrādā pat while (!DataRdySPI());

  4. #4
    Senior Member
    Jun 2006
    Cēsu novads
    990

    Re: ISP/PIC18f4550

    Esmu izmantojis SPI datu pārsūtīšanai, tiesa ne starp PICiem, bet starp ATMEL kontrolieriem. Datu apmaiņu caur SPI ļoti viegli ir sačakarēt ar nekorektu montāžu, daudz vieglāk kā, teiksim, datu apmaiņu caur UART. Ja kontrolieri atrodas uz vienas plates, vadu garums minimāls, zeme uz plates kopēja, pareizi savienota - viss strādā. Novietojam kontrolierus 1m attālumā, SPI vadi gaisā, zemes platēm savienotas kaut kur, nezin kur - nekas nestrādā.

  5. #5
    Junior Member
    Mar 2008
    22

    Re: ISP/PIC18f4550

    Paldies M_J ...
    UART tiešām strādā galvas tiesu kvalitatīvāk. Visticamāk problēma ir manos 20cm vados..

  6. #6
    Moderator
    May 2007
    Rīga
    1,862

    Re: ISP/PIC18f4550

    Ja pa tēmu.
    Šorīt atrisināju, šķiet, ļoti radniecīgu problēmu autora problēmai. Viena devaisa maketā no vienas plates uz otro iet 12MHz clock signāls pa vadiņu. Vienkārši saslēdzot plates kopā (izeja->ieeja) devaiss nestrādā. Kādu brīdi apsmadzeņojot problēmu un izslēdzot visus citus iespējamos faktorus pieņēmu, ka pie tik augstas frekvences 20cm garš vadiņš jau rada problēmas dēļ nesalāgotas viļņa pretestības. Pieliku saņēmēja galā 1K rezistoru pret zemi - aizgāja bez problēmām. Domāju ir vērts par tēmu palasīties vairāk no kā jāuzmanās strādājot ar augstas frekvences signāliem, jo šis 1K bija no gaisa pagrābts.
    Autor, cik Tev ir SCK signāla frekvence? Vai vēl ir iespējams mēģināt saslēgt SPI un pārbaudīt vai konkrētais risinājums der?
    Ir 10 veidu cilvēki - tādi, kas saprot bināro kodu un tādi, kas nesaprot.

  7. #7
    Member
    Oct 2002
    Valmiera, Rīga
    63

    Re: ISP/PIC18f4550

    Paldies M_J ...
    UART tiešām strādā galvas tiesu kvalitatīvāk. Visticamāk problēma ir manos 20cm vados..
    Tas ir tikai šķietami, jo UART strādā daudzkkārt lēnāk un tas ir asinhronais protokols atšķirībā no SPI, kas ir sinhronais protokols. Ja SPI līnijas būs salāgotas, tad tas būs ātrāks un stabilāks.

  8. #8
    Senior Member
    Nov 2005
    Latvija, Kuldīga
    1,059

    Re: SPI/PIC18f4550

    Autor, pēc kā secini, ka "saņēmējs strādā randomā"?
    Man izskatās, ka vaina ir nevis 20 cm garajos vados, bet faktā, ka SPI saņēmējs reizēm ir aizņemts ar sūtīšanu caur COM.
    Signalizācijas, videovērošanas ierīkošana Kuldīgā.
    Temperatūras, gaisa mitruma, atmosfēras spiediena u.c. mērījumi, to publicēšana internetā. Data logging.
    http://narodmon.ru/1191

  9. #9
    Junior Member
    Mar 2008
    22

    Re: SPI/PIC18f4550

    Nē, uz COM portu sūtu caur 25. kāju (TX), bet SPI izmantoju: 26, 33, 34.
    SPI mēģināju startēt ar 32KHZ un vēl 64 dalītāju, bet tāpat līdz sakarīgam variantam netiku.
    Tagad gaidu divus PIC32, pamēģināšu ar šiem novietojot tos 2 cm attālumā. Tad trokšņa problēmai nevajadzētu būt...

  10. #10
    Senior Member
    Feb 2007
    4,624

    Re: SPI/PIC18f4550

    aftor..
    1. par hardware lietu. ja ir aizdomas par nekorektiem IN datiem, in n tuukstoshi prastu metozhu, kaa risinaat. iesakumam: IN procha tuvumaa : C pret zemi, R virknee uz raidiitaaja proci. R un C izvelies taadus, lai signaala forma saak liidzinaaties trapecei.
    2. par softu. es nezinu, varbuut kaads ir gatavs konkreto C no galvas zinaat/komentet. es nee. ja buutu kods PEEC kompileeshanas, domaaju, daudz vairaak ko daudzi speetu liidzeet.

+