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

[AVR] I2C z Atmega32 i ADS1100 - sporadyczne przesyłanie 0 bitów

sorex86 05 Lut 2013 13:40 1059 5
  • #1 11891340
    sorex86
    Poziom 15  
    Układ: Uzywam zewnetrznego kwarcu 16Mhz. Atmega32 jest zasilana z 5V, a REF02 z 9V. Ze zrodla REF02 (4.97V) zasilany jest przetwornik ADS 1100 (A+ 4.97, A- AGND). Nogi przetwornika SDA/SCL sa podlaczone do Atmegi32 poprzez rezystory 4.7k i podciagniete do napięcia zasilania 5V. Nie ma zadnych kabli, wszystko jest zrobione na PCB. Kondesatory 100nF sa przed zasilaniem kazdego ukladu.

    http://www.ti.com/lit/ds/symlink/ads1100.pdf

    Mierzone napiecie jest zgodne z multimetrem, natomiast co jakis czas:

    243 bits 1267 voltage 192mV
    start
    datahtemp 4 dataltemp 243 bits 1267 voltage 192mV
    start
    datahtemp 4 dataltemp 245 bits 1269 voltage 192mV
    start
    datahtemp 4 dataltemp 244 bits 1268 voltage 192mV
    start
    datahtemp 0 dataltemp 0 bits 0 voltage 0mV
    start
    datahtemp 4 dataltemp 248 bits 1272 voltage 192mV
    start
    datahtemp 4 dataltemp 249 bits 1273 voltage 193mV


    po RS232 dostaje wartosc = 0. Sa to losowe zdarzenia. Czasem 10 minut nie ma zadnego 0, a czasem w ciagu minuty sa z 2-3.

    Oczywiscie moge to programowo wyciac. Napisac petle gdzie bede sprawdzal czy jest 0, a nastepnie ignorowal ten wynik. Jednak dla pewnosci prosze kolegow o sprawdzenie mojego kodu:


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


    biblioteki do I2C uzywam z ksiazki.
  • #2 11892381
    Mol
    Poziom 30  
    Niestety nie znam się na C , " 0 " dostajesz tylko po RS-ie , czy na LCD jest to samo w tym samym czasie ?
  • #3 11892738
    sorex86
    Poziom 15  
    To samo.
  • Pomocny post
    #4 11892915
    krru
    Poziom 33  
    Może czytaj po 3 bajty i wyświetlaj ten trzeci bajt też. Zobaczymy co jest w rejestrze statusowym.

    Edit:

    Jeszcze jedna uwaga - nie wiem z jakiej książki masz tą bibliotekę I2C, ale sprawdzaj gdzie się da wyniki funkcji I2C, tam mogą pojawiać się jakieś błędy.
  • Pomocny post
    #5 11893321
    Mol
    Poziom 30  
    Możesz jeszcze spróbować na czas transmisji po I2C wyłączać przerwania jeżeli z nich korzystasz ( nie wiem czy to jest listing całego programu ) , ale przerwania włączasz na początku , żeby się nie okazało że ci się w trakcie transmisji jakieś zgłasza i robi kaszanę.
  • #6 11894562
    sorex86
    Poziom 15  
    Zamienilem elektrolit 10uF na tantal i pomoglo na wyjsciu AREF.
REKLAMA