Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 4 lut 2026, o 01:05


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 7 gru 2013, o 10:19 
Offline
Nowy

Dołączył(a): 07 gru 2013
Posty: 11
Pomógł: 0

Witam,

próbowałem stworzyć prosty przykład transmisji z użyciem sieci CAN opierając się na gotowej bibliotece stworzonej przez Atmel'a oraz na płytce AVR-CAN z Olimexa.
Do podsłuchiwania wiadomości krążących po sieci posiadam konwerter CAN-USB.
Konwerter posiada 2 diody - RX oraz TX, które zapalają się na czerwono gdy wystąpi błąd w próbie odebrania czy też transmisji danych.
Kierując się owymi diodami mogę stwierdzić, że obecnie błędy nie występują, jednak monitor CANa nic mi nie pokazuje, żadnych ramek nie odbiera.

Stąd moja prośba do Was o weryfikację tego prostego kodu, czy też pomoc w rozwiązaniu problemu.

Kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


PS: jak trzeba, to mogę załączyć projekt z kodem z AVR Studio 5

Dzięki za pomoc :)

pozdr.

Kody wklejamy przy pomocy syntax=c - Różowy J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2013, o 15:34 
Offline
Nowy

Dołączył(a): 07 gru 2013
Posty: 11
Pomógł: 0

Programuje przez JTAG'a, ale bez możliwości debuggowania.

Zrobiłem prosty test:
Kod:
while (can_cmd(&message) != CAN_CMD_ACCEPTED) {}   //nie wyjdzie dopoki ramka danych nie jest OK
   LED1_ON;   //zapal diode
   
   while (can_get_status(&message) == CAN_STATUS_NOT_COMPLETED) {}   //nie wyjdzie, dopóki transmisja nie będzie OK   
   _delay_ms(5000);
   LED1_OFF;   //zgas diode


Dioda się zapaliła, później zgasła, więc niby drugi while zwraca CAN_STATUS_COMPLETED, czyli transmisja przebiegła OK.

Jednak próbując wsadzić kod w pętlę nieskończoną niby dioda zaczyna migać, czyli teoretycznie wszystko jest ok, jednak na konwerterze zaplaca się czerwona dioda RX ;/

Oczywiście CAN Monitor nie widzi żadnych informacji :(




Jakieś pomysły co może być nie tak :P ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 14:43 
Offline
Nowy

Dołączył(a): 07 gru 2013
Posty: 11
Pomógł: 0

Dobra, problem rozwiązany :P Okazało się, że od początku było dobrze, tylko producent w dostarczanym do konwertera oprogramowaniu ma błąd - należu ustawić 2razy większą prędlkość transmisji, a niżeli w AVRce :P

Miałbym teraz nową prośbę - sprawdzenie kodu do pomiaru napięcia, bo właśnie do tego chcę wykorzystać CANa :)

config.h:
Kod:
#define FOSC           8000        // 8 MHz
#define F_CPU          (FOSC*1000)
#define CAN_BAUDRATE   250        // kbps


Natomiast cały kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Proszę o sprawdzenie, ponieważ tym razem monitor CANa się wiesza :P

Kody wklejamy przy pomocy syntax=c - Różowy J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO