Witam!
Na początku przepraszam bardzo, jeśli popełnię jakieś błędy, ale siedzę nad problemem już od rana non-stop i pewnie nie widzę czegoś prostego, a stopień mojej frustracji osiąga już granice bezpieczeństwa.
Ale do rzeczy:
Mam następujący kod odbierania RFM12B napisany w Bascom (gotowiec z forum):
Współpracuje on idealnie z następującym kodem odbiornika:
Z chęci obsługi RFM'a w języku C wziąłem datasheet do ręki, przestudiowałem komendy, porównałem założenia teoretyczne z danymi wysyłanymi do układu w przykładzie i spłodziłem takie oto kody:
plik RFM12B_reg.h:
I niestety kod C po wgraniu do procesora nie działa...
Fusebity niezmieniane (taktowanie wewnętrzny RC 8Mhz), połączenia elektryczne tym bardziej (wszystko zmontowane na płytce PCB, syganły idą do RFM'a przez translator, z niego bezpośrednio do uC, ale na sofcie z BASCOM działa, więc to nie kwestia układu.)
W załączniku posyłam zrzuty przebiegów na liniach MOSI MISO SCK i SS (do otworzenia potrzebny jest darmowy program http://www.saleae.com/downloads
---
Jedyną znaczącą różnicą w przebiegach jaką zauwazyłem to zachowanie linii MISO:
1. W programie BASCOM linia ta pozostaje cały czas w stanie wysokim, poza momentem odczytu rejestru statusu (komenda &H0000).
2. W programie C linia ta przechodzi w stan niski w momencie, w którym stan niski przyjmuje linia CS, i "pika" stanem wysokim w momencie odczytu rejestru statusu (0x0000) (co ciekawe kod w Bascom pokazuje, że ustawione są bity: gotowość na zapis do bufora TX i POR, tymczasem C pokazuje tylko POR - jakby nie rozumiał dobrze wszystkich komend)
---
Bascom:
C:
---
Z góry bardzo dziękuję za wszelką pomoc, gdyż już po prostu nie wiem gdzie popełniam błąd, a próbowałem wielu kombinacji i nic nie pomaga...
Na początku przepraszam bardzo, jeśli popełnię jakieś błędy, ale siedzę nad problemem już od rana non-stop i pewnie nie widzę czegoś prostego, a stopień mojej frustracji osiąga już granice bezpieczeństwa.
Ale do rzeczy:
Mam następujący kod odbierania RFM12B napisany w Bascom (gotowiec z forum):
Code: basic4gl
Współpracuje on idealnie z następującym kodem odbiornika:
Code: basic4gl
Z chęci obsługi RFM'a w języku C wziąłem datasheet do ręki, przestudiowałem komendy, porównałem założenia teoretyczne z danymi wysyłanymi do układu w przykładzie i spłodziłem takie oto kody:
Code: c
plik RFM12B_reg.h:
Code: c
I niestety kod C po wgraniu do procesora nie działa...
Fusebity niezmieniane (taktowanie wewnętrzny RC 8Mhz), połączenia elektryczne tym bardziej (wszystko zmontowane na płytce PCB, syganły idą do RFM'a przez translator, z niego bezpośrednio do uC, ale na sofcie z BASCOM działa, więc to nie kwestia układu.)
W załączniku posyłam zrzuty przebiegów na liniach MOSI MISO SCK i SS (do otworzenia potrzebny jest darmowy program http://www.saleae.com/downloads
---
Jedyną znaczącą różnicą w przebiegach jaką zauwazyłem to zachowanie linii MISO:
1. W programie BASCOM linia ta pozostaje cały czas w stanie wysokim, poza momentem odczytu rejestru statusu (komenda &H0000).
2. W programie C linia ta przechodzi w stan niski w momencie, w którym stan niski przyjmuje linia CS, i "pika" stanem wysokim w momencie odczytu rejestru statusu (0x0000) (co ciekawe kod w Bascom pokazuje, że ustawione są bity: gotowość na zapis do bufora TX i POR, tymczasem C pokazuje tylko POR - jakby nie rozumiał dobrze wszystkich komend)
---
Bascom:

C:

---
Z góry bardzo dziękuję za wszelką pomoc, gdyż już po prostu nie wiem gdzie popełniam błąd, a próbowałem wielu kombinacji i nic nie pomaga...