PIC, SPI komunikace, Generátor funkcí
Napsal: 27. 1. 2025, 9:19
Ahoj,
experimentuju a nedaří se mi dohledat na internetu kde mám chyby, tak to mezitím zkusím tady, vím že se tu někteří vyznají.
Chci postavit generátor funkcí s AD9833, mám PIC16F877a a momentálně vůbec bojuji s nastavením SPI komunikace. Princip jsem okoukal: https://deepbluembedded.com/spi-tutoria ... ntrollers/, k ovládání AD9833 potřebuji jen přes SPI posílat data tedy SDO.
K věci - mám primitivní funkci pro zápis hodnot:
akorát ty hodnoty co pozoruji tak se úplně neslučují s tím co tam má být a ještě k tomu se ty hodnoty mění - tedy nevidím pořad stejné číslo, ale většinou se to náhodně střídá mezi 1 a 128 (decimálně). Taky nechápu proč tam vždy je něco na tom channel 2, sice je připojený na SDI, ale s tím se nic nedělá.
K SCL a SDO na PICu mám připojený pouze ten logický analizátor, na ty piny není nic jiného připojené. - Nenašel jsem že by tam bylo potřeba třeba nějakého rezistoru připojeného.
Co si myslím že mám správně: správně inicializovaný SPI a příslušně nastavené SPI v software pro logický analizátor (idle stav clk a hranu)
Nenapadá někoho kde by mohl být problém?
experimentuju a nedaří se mi dohledat na internetu kde mám chyby, tak to mezitím zkusím tady, vím že se tu někteří vyznají.
Chci postavit generátor funkcí s AD9833, mám PIC16F877a a momentálně vůbec bojuji s nastavením SPI komunikace. Princip jsem okoukal: https://deepbluembedded.com/spi-tutoria ... ntrollers/, k ovládání AD9833 potřebuji jen přes SPI posílat data tedy SDO.
K věci - mám primitivní funkci pro zápis hodnot:
- void SPI_Write_8(uint8_t Data)
{
//while (SSPSTATbits.BF == 1); //pokud je plny registr tak se ceka
SSPBUF = Data;
}
- if(RB4)
{
PORTBbits.RB1 = 0;
__delay_ms(200);
SPI_Write_8(10);
}
akorát ty hodnoty co pozoruji tak se úplně neslučují s tím co tam má být a ještě k tomu se ty hodnoty mění - tedy nevidím pořad stejné číslo, ale většinou se to náhodně střídá mezi 1 a 128 (decimálně). Taky nechápu proč tam vždy je něco na tom channel 2, sice je připojený na SDI, ale s tím se nic nedělá.
K SCL a SDO na PICu mám připojený pouze ten logický analizátor, na ty piny není nic jiného připojené. - Nenašel jsem že by tam bylo potřeba třeba nějakého rezistoru připojeného.
Co si myslím že mám správně: správně inicializovaný SPI a příslušně nastavené SPI v software pro logický analizátor (idle stav clk a hranu)
Nenapadá někoho kde by mohl být problém?