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

Atmega8, C, ds1990A - program z książki nie działa, kompilacja w WinAVR

KRZAG 18 Sie 2006 18:25 1483 6
REKLAMA
  • #1 2928487
    KRZAG
    Poziom 12  
    Posty: 82
    Ocena: 1
    Witam wiem ze sporo jest postow nt 1 wire i pastylek iButton, na moje nieszczescie wiele z nich dotyczy BASCOMA wiec pogrzebalem po ksiazkach i googlach i odnalazlem to co chcialem ale czy aby napewno?
    W czym rzecz, otóż program z książki programowanie mikrokontolerow w C nie dziala jak jest to napisane w ksiazce, tak wlasciwie to wogole nie dziala
    doszukuje sie przyczyny i oto co mi przyszlo do glowy:
    -przy kompilacji w winavr wyrzucane sa warningi dotyczace dziwnego sposobu wstawiania zer i jedynek oraz ich sprawdzania dla pinow
    dziwne jest to ze gdy zwieram czytnik iButtona to reaguje on poprawnie wiec ten blad wykluczylem (uznajac ze ksiazka madra jest)
    -urzywam wewnetrznego rezonatora tu moze byc haczyk i klu calego zamieszania, ale w procedurze opozniajacej zmniejszam czas 8x w ksiazce uzyto 8Mhz a wewnetrzny jest 1Mhz w przyblizeniu powinno byc ok, ale czy pastylka jest bardzo wrazliwa na wewnetrzy kwarc ktory podobno nie jest idealny?
    -trzecia opcja zarowno ksiazka jak i to wszystko jest do d... i powinienem zajac sie BASCOMEM skoro on taki latwy i zawsze dziala :)
    bylbym wdzieczny za wasze opinie, byc moze ktos tez mial podobny problem, byc moze jednak konieczny jest kwarc? Choc z drugiej strony rozebralem kiedys centralke alarmowa z immobilajzerem i nie miala ona kwarcu....

    W zalaczniku podaje kod mojego (a wlasciwie ksiazkowego programu, jedyna modyfikacja to wywalenie obslugi wyswietlacza lcd co upraszcza czytanie i analize)

    Dzięki za życzliwą pomoc

    PS. Jesli ktos ma zamiarr napisac mi "poszukaj odpowiedzi w googlach" to niech lepiej nic nie pisze bo w googlach wlasnie odnalazlem to forum!
    Załączniki:
    • pastylka_przykl.c (6.56 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 2928882
    migod
    Poziom 21  
    Posty: 462
    Pomógł: 29
    Ocena: 8
    Hej,

    może to oczywista rzecz, ale 1wire jest bardzo ale bo bardzo wrażliwy na odstępstwa czasowe.
    Poszukaj miarodajnego sposobu odliczania zwłoki czasowej - np. na którymś z dwóch timer-ków wbudowanych w ATmege.

    pozdrawiam,
    --
    michal
  • REKLAMA
  • #3 2928919
    Tdv
    Poziom 34  
    Posty: 2237
    Pomógł: 150
    Ocena: 55
    Zmień sobie ustawienia i fusebity na conajmniej 4MHz. 1wire z z AVR gonionymi z wewnętrznych rezonatorów poniżej 4MHz lubi nie działać.
  • REKLAMA
  • #4 2929008
    flapo213
    Poziom 21  
    Posty: 566
    Pomógł: 35
    Ocena: 10
    Witam. Słuchaj ja napisałem program do mikrokontrolera At89C2051 i natrudziłem się co niemiara. Książkami się nie sugeruj, choć uważnie czytaj co tam jest napisane. Powiem Ci tak trzeba mieć dobrą publikację pastylki DS1990A bo te ogólne nie są za dobre. Jak chcesz sprawdzić sobie czasy to proponuje program Atmela AVR studio 4 (na przykład). Wszystko Ci wyjdzie jak jest z czasami. Ogólnie zwróć uwagę funkcję odbierającą ona jest kluczowa i najtrudniejsza. A co do "warning-ów" to muszę spojrzeć dokładnie w twój program. Myślę że cosik się wymyśli. Nie ekranuj żadnych linii przesyłowych i najkrótsze przewody i rez. podciągający do plusa 3.3kOhm. Narazie

    Dodano po 19 [minuty]:

    Ok w załączniku zamieszczam Ci funkcje odczytującej informację z pastylki wystarczy ją delikatnie przerobić na AVR i po sprawie trochę wprawy i dasz sobie radę onwire jest przypiasne do któregoś portu w AVR musisz to #define zrobić (tech. RISC). Przeanalizuj dokumentację producenta i moją funkcję i wszystko będziesz wiedział
    Załączniki:
    • Odczyt.txt (370 Bajtów) Musisz być zalogowany, aby pobrać ten załącznik.
  • #5 2930468
    KRZAG
    Poziom 12  
    Posty: 82
    Ocena: 1
    Kolejne pytanka moje to:
    czy mozliwe jest ustawienie 4Mhz na wewnetrznym rezonatorze??
    Myslalem ze mozna tylko 1Mhz,
    jesli tak to jak to zrobic?
    Jak zmierzyc tym AVR studio 4 czas opoznienia?
    Czy rezystor podciagajacy musi byc koniecznie 3,3Kohm?
    ja dalem 5kilo (tzn rownolegle 2 10k ale to akurat malo wazne)
  • REKLAMA
  • #7 2931151
    KRZAG
    Poziom 12  
    Posty: 82
    Ocena: 1
    no i sie okazalo faktycznie po ustawieniu wewnetrznego rezonatora na 8MHz działa bez problemu,
    dzięki za pomoc

Podsumowanie tematu

LABEL_AI_GENERATED
Problem dotyczył nieprawidłowego działania programu do obsługi interfejsu 1-Wire i pastylki iButton DS1990A na mikrokontrolerze Atmega8 kompilowanym w WinAVR. Program z książki o programowaniu mikrokontrolerów w C nie działał poprawnie, mimo że czytnik reagował na podłączenie pastylki. Przyczyną były różnice w taktowaniu – używany był wewnętrzny oscylator o częstotliwości około 1 MHz, podczas gdy w książce założono 8 MHz. Interfejs 1-Wire jest bardzo wrażliwy na precyzję czasową, a wewnętrzny oscylator o niskiej częstotliwości i niestabilności powodował błędy w komunikacji. Zaleceniem było ustawienie fuse bitów mikrokontrolera na wewnętrzny oscylator 8 MHz, co rozwiązało problem. Dodatkowo zwrócono uwagę na konieczność stosowania odpowiednich rezystorów podciągających (zalecane 3,3 kΩ) oraz na precyzyjne odmierzanie opóźnień czasowych, np. za pomocą timerów wbudowanych w Atmegę. Wskazano także na potrzebę dokładnej analizy funkcji odbierającej dane z pastylki i korzystania z dokumentacji producenta DS1990A.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA