logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega32 - Komunikacja PC (USART) Atmega32 (SPI) ADE7758, #c

tobi1807 29 Lip 2015 23:54 1485 5
  • #1 14885629
    tobi1807
    Poziom 9  
    Witam,

    Wykonuję projekt który ma polegać na pomiarze mocy biernej za pomocą układu ade7758. Następnie pomiar ma być przesłany za pomocą SPI do mikrokontrolera Atmaga32 a następnie za pomocą USART-u do komputera przez RS-232. Dodam że programowanie nie jest moja mocną stroną:/ Mam przykładowy kod do komunikacji przez usart wgrałem go to atmegi i komunikacja działa w porządku. Mam też przykładowe programy w c do komunikacji mikrokontrolera z układem peryferyjnym za pomocą SPI. Wiem że to już staje się coraz bardziej skomplikowane , ale w jaki chciałbym na początek się zapytać osób znających się na tego typu komunikacjach jak powinno wyglądać komunikacje żeby w trybie ciągłym pomiar z układu ADE7758 był przesyłany do atmegi a następnie do komputera pc. Na co trzeba zwrócić uwagę? Przeszukałem trocha internet jest sporo napisane a USARCie i SPI ale nie znalazłem za wiele materiałów z punktu widzenie programowania. Czy ktoś może ma jakieś materiały z przykładowymi listingami w c, albo gdzie jest to opisane z punktu widzenia programu?

    pozdrawiam
  • #2 14885688
    w1941s
    Poziom 14  
    Nie wiem czy dobrze rozumiem o co koledze chodzi :). Można zrobić to tak: tworzymy flagę, kiedy pobierzesz dane od ade "zapalasz" flagę, jesli flaga zapalona to wysylasz dane do pc i "gasisz" flagę.

    Biblioteka do obsługi uart'u na PC napisana w C Link, sam jej używam.
  • #3 14886025
    dondu
    Moderator na urlopie...
    Jeśli dobrze zrozumiałem, chodzi Ci o sposób komunikacji z ADE7758. Tutaj niestety muszę Ciebie zmartwić, bo skoro programowanie nie jest Twoją mocną stroną, a będziesz musiał napisać bibliotekę obsługi tego układu, to może być to bardzo trudne. Takie biblioteki pisze się na podstawie dokumentacji układu i w zależności od stopnia jego skomplikowania i jakości opisu w dokumentacji może to zająć sporo czasu nawet biegłemu projektantowi.

    Może uda Ci się znaleźć jakąś gotową bibliotekę - poszukaj w sieci.
  • #4 14968166
    tobi1807
    Poziom 9  
    Trocha mi zeszło ale nawiązałem komunikacje z tym układem poprzez uart i interface spi, ogólnie mówiąc działa w porządku. Teraz pracuje nad konfiguracją tego układu i tutaj natrafiłem na przeszkodę. Siedzę od długiego czasu i nie wychodzi mi konfiguracja bitów w poszczególnych rejestrach ade7758. Z wysłaniem odpowiedniej wartości adresu żeby odczytać wynik pomiaru napięcia, prądu czy częstotliwości nie ma problemu tylko w kilka rejestrach konfiguracyjnych potrzeba ustawić odpowiednie bity aby układ poprawnie działa i skończyły mi się pomysły jak z atmegi32 wysłać konfiguracje bitów do tego układu. Nizej przedstawiam kawałek kodu może Komuś nasunie gdzie robię błąd.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #5 14968538
    BlueDraco
    Specjalista - Mikrokontrolery
    Błędy są w procedurze SPI_cośtam:
    - kompilator krzyczy na nagłówek w starym stylu, a Ty to ignorujesz
    - przyjrzyj się uważnie temu, co wysyłasz - zgaduję, że jest to błędna wartość (jeden bajt polecenia i dwa zera, a zapewne chciałeś wysyłać dwa bajty)
    - wysyłasz 2 bajty nie opróżniając rejestru danych przychodzących

    Konofigurację najlepiej wysyłać tak, jak każe producent. Z czym dokładnie masz problem?
  • #6 14968720
    tobi1807
    Poziom 9  
    Mam trudność gry próbuje zaktualizować stany bitów w poszczególnych rejestrach. W ten sposób że pierwsze wysyłam przez spi do układu ade7758, 8-bitowa wartość rejestru, a następny bajt, to aktualizacja poszczególnych bitów. W programie powinno mi zwrócić wartość taką jaki dany rejestr miał zaktualizowane a dostaję inne wartości niż powinienem. niżej podaje bardziej czytelniejszy kod są już nie wiem co może być nie tak?

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA