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

Problem z odczytaniem wartości przetwornika MCP 3221

nouki 27 Lis 2012 19:32 2427 9
REKLAMA
  • #1 11581950
    nouki
    Poziom 25  
    Witam.

    Posiadam układ oparty o przetwornik jak w temacie.
    Próbuje go odczytać lecz wartość zawsze wynosi 65280


    Kod: text
    Zaloguj się, aby zobaczyć kod



    Układ podczas poszukiwania zgłasza mi się pod adresem 113

    Czy bawił się ktoś w/w układem pod Bascomem?

    Dzięki za wszystkie rady.
    Pozdrawiam Nouki
  • REKLAMA
  • #2 11582521
    zumek
    Poziom 39  
    nouki napisał:
    ...Układ podczas poszukiwania zgłasza mi się pod adresem 113

    Problem z odczytaniem wartości przetwornika MCP 3221


    nouki napisał:

    Dzięki za wszystkie rady.

    Taka moja rada:
    Jak chcesz wykorzystać jakieś urządzenie, to wypada zajrzeć do jego dokumentacji :idea:
  • REKLAMA
  • #3 11584856
    nouki
    Poziom 25  
    Witam.

    Szukałem adresu programem
    Kod: text
    Zaloguj się, aby zobaczyć kod



    I wyszedł taki.

    Czyli wychodzi b'10011011' (9b) czyli 155.



    Witam.

    Błąd z odczytem adresu spowodowany był uszkodzonym układem ADUM1250 po wymianie zgłosił się pod adresem 154,155,156.
    Adres 154 - nie działa
    Adres 155 - Odczyt nie jest płynny tylko skokowy czyli czyta 256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072...3840 czyli odczytuje co 256. Co robie nie tak?
    Adresie 156 - czyta od 0 do 255 , 0 do 255... i tak chyba 14 razy na pełen zakres

    znalazłem niby działający w c ale na tyle nie znam c by przerobić na bascoma
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #4 11795473
    george2002

    Poziom 21  
    Witam, czy udało się coś ruszyć z układem :) ? mam dokładnie te same problemy, dziwne odczyty wartości z układu z przedziału 0 do 65535 :( oznaczenie na przetworniku GA9Y czyli jak dobrze rozumiem adres układu do odczytu to:
    1001101 czyli 77, czyli w kodzie powinienem dać:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    taki kod niestety daje losowe odczyty, zresztą jak zmienię adres na całkiem inny to rónież śmici dostaję :(

    Ktoś wie może o co chodzi i podzieli się wiedzą :) ?

    Pozdrawiam
    George2002

    PS
    Już wszystko ok, adres układu ma być155 czyli &H9B :) zjadło Mi się z adresu jeden bit czyli podawałem 1001101 a powinno być 10011011 :)
  • REKLAMA
  • #5 11857675
    nouki
    Poziom 25  
    Witam.

    Rozwiązanie odczytu
    Adres 155 - Odczyt nie jest płynny tylko skokowy czyli czyta 256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072...3840 czyli odczytuje co 256. Adresie 156 - czyta od 0 do 255

    Reasumując:
    adres 155 wynik odczytu : 0...256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072...3840
    adres 156 wynik odczytu 0 -255

    Czyli adres 155 + adres 156 = wynik
    Pozdrawiam
  • REKLAMA
  • #6 11857832
    george2002

    Poziom 21  
    nouki napisał:
    Witam.

    Rozwiązanie odczytu
    Adres 155 - Odczyt nie jest płynny tylko skokowy czyli czyta 256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072...3840 czyli odczytuje co 256. Adresie 156 - czyta od 0 do 255

    Reasumując:
    adres 155 wynik odczytu : 0...256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072...3840
    adres 156 wynik odczytu 0 -255

    Czyli adres 155 + adres 156 = wynik
    Pozdrawiam


    Witam, tak jak wspominałem już poradziłem sobie z tematem :) poniżej działający kod dla potomnych:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    PS
    Jak za przetwornik ADC 12 Bitowy który kosztuje ~5-6zł to działa rewelacyjnie, jedyny minus że musi mieć bardzo dobre/dokładne źródło zasilania,w moim przypadku zakres do 5V więc zasilanie idealne 5,000V i tyle przetwornik dokładnie pokazuje :)

    Pozdrawiam
    George2002
  • #7 11858253
    BlueDraco
    Specjalista - Mikrokontrolery
    No patrz, a ja używam mikrokontrolera za 4 zł, który 12-bitowy przetwornik ma w środku... ;)

    A poza tym - niehumanitarnie mordujesz procesor obliczeniami zmiennopozycyjnymi, a to samo możesz policzyć w miliwoltach na liczbach całkowitych.
    mV = adcval * 5000 >> 12

    lub, jak kto woli
    mV = adcval * 625 >> 9
  • #8 11862223
    BlueDraco
    Specjalista - Mikrokontrolery
    Co do mikrokontrolera z przetwornikiem 12-bitowym - np. M054 lub STM32F05x.

    Zastanów się, ile takich obliczeń w zmiennym przecinku ATmega może wykonać w ciągu sekundy. W wielu zastosowaniach program praktycznie stanie w miejscu, bo Twoje mnożenie i dzielenie zmiennopozycyjne zajmie tysiące cykli procesora oraz kilka KiB pamięci. Dla ATmega8 to może być kwestia tego, czy prosty program wejdzie do pamięci, czy nie - ze zmiennym przecinkiem nie wejdzie.

    Jeżeli coś można zrobić kilkadziesiąt razy szybciej i zajmując kilkadziesiąt razy mniej pamięci - to należy tak to zrobić.
  • #9 11862451
    nouki
    Poziom 25  
    Witam.

    A jak Kolega BlueDraco poradzi sobie gdy warunki wymagają optycznej izolacji wszystkiego? Ja sobie biorę Adum 1250 i już mam przetwornik MCP 3221 izolowany
  • #10 11862612
    BlueDraco
    Specjalista - Mikrokontrolery
    Ja też biorę ADUM i izoluję np. UART mikrokontrolera :)

    Oczywiście zawsze znajdzie się projekt wymagający jakichś szczególnych własności, np. izolacji. Robiłem kiedyś taki, który miał izolację z dwóch stron - i przetwornika (24 bity, SPI) i interfejsów (UART, VCOM). W innym miałem mikrokontroler z wbudowanym przetwornikiem 24-bitowym i izolowany VCOM, właśnie na ADUM1250.
REKLAMA