Nefunguje SPI medzi 16F88 a 16F690

Vedel by mi niekto poradiť, prečo mi SLAVE /16F88/ nechce prijať dáta z MASTER /16F690/? Po prijatí jedného bajtu od MASTRA by mala LED-ka zhasnúť, no nestane sa tak. V prílohe posielam oba zdrojové kódy. Za každú radu ďakujem…

i45.tinypic.com/14eclr5.jpg

:arrow_right: administrator: příspěvek byl upraven

:arrow_right: administrator: přiloženy externí soubory
14eclr5.jpg
slave.asm (1.96 KB)
master.asm (2.13 KB)

U slave první nastav TRISB jako IN a pak nastav SPI.

Urobil som zmeny, ktoré si napísal, no nič sa nezmenilo…

Já to ASM moc nestudoval, ale teď koukám, nenastavuješ SSPCON. Pročti si přílohu, je to sice pro 16F87X, ale v podstatě je to stejný.
SPI.part2.rar (3.95 MB)
SPI.part1.rar (6.58 MB)

SSPCON mám nastavený aj u mASTER aj u SLAVE

Večer pohledám kus ASM s SPI, když tak ti ho sem pak hodím, pokud to teda nerozchodíš.

Nejde to. Skúšal som aj kód uvedený na konci tohoto vlákna ebastlirna.cz/modules.php?na … ic&t=13712 s tým, že som ho prerobil na 16F88, no neúspešne. Neviem, v čom robím chybu…

Koukám na to schéma a není mi docela jasné, kterej je kterej PIC.

edit: Tak jsem prohrabal ASM, co mám na HDD a zjistil jsem, že nic nemám s SPI. Buď se to “vypařilo”, nebo jsem s SPI ještě nic nepotřeboval.

Tretí den po sebe skúšam rozbehať SPI, no stále neúspešne. Ozaj neviem, v čom robím chybu. Prečítal som si materiály od Honzu, ďakujem. Našiel som v nich pár dôležitých informácií, ktoré som sa z iných zdrojov nedozvedel. Problémom však ostáva príjem SLAVE obvodu. Prikladám upravené zdrojové kódy a upravenú schému (dokreslené PULLDOWN rezistory na MCLR).

Vedel by mi niekto s týmto problémom pomôcť, resp. bol by niekto ochotný sem hodiť zdrojové kódy odskúšaného prenosu medzi dvoma PIC? Ďakujem
SPI.JPG
slave.asm (2.42 KB)
master.asm (2.48 KB)

Rezistor v MCLR o obou PIC musi byt pripojen k +5V. tak jak to mas ted jsou oba PICy v resetu a nefunguji.

V konfiguračných bitoch mám MCLRE_OFF, takže pin prislúchajúci resetu pracuje ako digitálny vstup.

Večer to zkusím s 2x 16F877A rozběhnout, pak si to jen předěláš pro tvoje PIC.

EDIT: Tak to zkouším třetí večer a neuspěšně.

Zkusil jsem to pro 2xPIC16F690. Vyzkoušené to mám jen v simulaci. Master odesílá každou 1ms stav PORTC(RC0-RC5). Slave při přijmu byte provede přerušení a zobrazí stav.
SPI_Slave.asm (1.67 KB)
SPI_Master.asm (1.96 KB)
SPI_Master_Slave_2xPIC16F690.GIF

Master možná fungovat nebude, protože před vložením do SSPBUF ho musíš přečíst. Čteš ho až po tom, nevím co to udělá.

Tak jsem to rozchodil, předělám o víkendu ASM do srozumitelné podoby a hodím to sem okomentované. Zatím laboratorní ASM, neokomentované a hrozně prasácky napsané, je to pro master 16F887 a slave 18F4620, jiné jsem doma nenašel.
120531_213303.mp4 (553 KB)
slave.asm (11.6 KB)
master.asm (11.7 KB)