Swys
Присъединил се: 22 юли 2008 Публикации: 8
| 23 юни 2009 15:24 ADE7753 и SPI | | |
|
| Здравейте всички,
Аз съм се опитват да получите SPI комуникацията става с ADE7753. За microcontroller съм, използвайки PIC18F452.
Аз съм командироването си код. Сигурен съм, че физически връзки са верни. Може ли някой моля проверете кода ми и ми кажи къде съм ще има, ако обичаш? Аз опитах с часове сега и аз мисля, че съм се започне да се ядосвам ....
Благодарности!
| Код: | / / Инициализиране на SPI недействителни init_spi () ( SSPEN = 0; / / Разрешаване късче, трябва да се изчисти за да конфигурирате SPI
TRISC = TRISC | 0b00010000; / / инсталиране на TRIS регистър
CKP = 0; / / бездейства състояние за часовник е с ниско ниво CKE = 0; / / данни въз попадащи ръба на часовника SMP = 0; / / Въвеждане на данни от извадката в средата на изходни данни за времето
SSPCON1 = SSPCON1 | 0b00000010; / / Speed: Fosc/64
SSPEN = 1; / / Задействайте сериен порт ) |
| Код: | / / Изход един часа байт чрез SPI / / Тази функция връща данни, които могат да присъстват / / в SSPBUF регистър. В противен случай се връща 0 неподписан овъглявам spi_read_write (неподписан овъглявам данни) ( неподписан овъглявам readData = 0;
ако (BF) readData = spi_read ();
SSPBUF = данни;
върнете readData; ) |
| Код: | / / Получите един байт чрез SPI неподписан овъглявам spi_read () ( докато (! BF) продължи;
върнете SSPBUF; ) |
| Код: | / / Тествайте SPI комуникация недействителни TestSPI () ( овъглявам команда = 0x3F 0x80; / / прочетете умре ревизия ADE7753RESET = 1; CS = 0;
init_spi ();
spi_write (команда); _delay (90); / / Забавяне в продължение на 90 часа цикли овъглявам резултат = 0;
резултат = spi_read ();
CS = 1;
putch (резултат); / / изход на получават стойност на UART ) |
|
|