Elektroda.pl
Elektroda.pl
X
Elektroda.pl
flexghzflexghz
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

bascom - pcf 8583 poraz kolejny :(

13 Gru 2011 13:52 2927 12
  • Poziom 16  
    Witam. Jak wiadomo tematów na temat tego pcf-a było już pełno. Jednak po przeszukaniu neta tylko jeden temat na forum był prawie taki sam , lecz tamte "posty" nie pomogły mi w moim przypadku , a mianowicie problem mam taki:
    dla prób pobrałem z neta kod "zegara" (oczywiście w bascomie) , oto on:

    [code
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
    ][/code]

    owy zegarek chodzi na układzie atmega32/8MHz + wyświetlacz 20*4(podłączony do portuC.2-7 (przy czym JTAG z tego wzglętu wyłączyłem by mi działał lcd). Sda i Scl podłączone odpowiednio do portów C.0-1 i "podciągnięte" rezystorami 3,3kom do plusa(5V). Atmega podłączona prawidłowo , INT mam "wolne" , adres i kondensator przy kwarcu(330p - bo tak było na schemacie w necie)przy pcf-ie mam podpięte do plusa. Cały układ zachowuje się tak:



    odłączenie lub zmiana kondenastora przy kwarcu na inną pojemność nic nie daje. Proszę o pomoc i wyrozumiałość (ponieważ pcf8583 był już chyba ze 100razy wałkowany , ale nic co "zasałem" z neta mi nie pomogło).
  • flexghzflexghz
  • flexghzflexghz
  • Poziom 16  
    Witam i dziękuję za zainteresowanie się tematem. Jak wcześniej pisałem kondensator (ten 330p-przy kwarcu) zmieniałem na różne wartości od 3p wzwyż (jakie miałem) do 100n , z tym że przy tym ostatnim układ mi nie wystartował. Co to schematu to narysowałem tak na szybko(ale bez baterii (3V) która jest podłączona do "VDD"(nóżka 8 układu PCF) przez diodę 1N4148), ponieważ nie mieściło mi się "rozmiarowo". Prosiłeś o schemat jak mam to podłączone to proszę bardzo-oto on:

    bascom - pcf 8583 poraz kolejny :(

    wg. mnie jest wszystko dobrze podłączone , ale mogę się mylić (wiadomo nikt nie jest idealny).
  • Poziom 21  
    Nie wnikam w program, ale sprzętowo na pewno zapomniałeś o:
    VCC powinno być filtrowane prze kondensator 100nF
    RSEST przez 10KΩ do zasilania
  • Poziom 16  
    Vix napisał:
    VCC powinno być filtrowane prze kondensator 100nF


    cały układ mam "prototypowo" na "uniwersalnej płytce" i dałem tam na każdą "linie zasilającą" po 4-ry kondensatory ceramiczne 100n(w sumie 12 sztuk) + po 3-rzy elektrolity 1000u(w sumie 9 sztuk). Jest też 1 monolit 470n przy wejściu zasilania z programatorka. Nie rysowałem tego ponieważ to należy do "układu zasilania" , a miałem podać tylko schemat jak jest podłączony PCF z atmegą.

    Vix napisał:
    RSEST przez 10KΩ do zasilania


    fakt tego nie zrobiłem , ale na schemacie jaki miałem rezystora tam nie było - ale przetestuje wariant z nim i dam znać jak co

    Dodano po 27 [minuty]:

    Właśnie sprawdzałem wersje z rezystorem od "resetu" i sprawa ma się tak: po podłączeniu rezystora jak kolega wyżej wspomniał do plusa powoduje że nic się nie wyświetla na lcd , po odłączeniu tego rezystora od "resetu" na wyświetlaczy pojawia się to co na filmiku w pierwszym poście.
  • Poziom 21  
    Cytat:
    cały układ mam "prototypowo" na "uniwersalnej płytce" i dałem tam na każdą "linie zasilającą" po 4-ry kondensatory ceramiczne 100n(w sumie 12 sztuk) + po 3-rzy elektrolity 1000u(w sumie 9 sztuk). Jest też 1 monolit 470n przy wejściu zasilania z programatorka. Nie rysowałem tego ponieważ to należy do "układu zasilania" , a miałem podać tylko schemat jak jest podłączony PCF z atmegą.


    Trochę przesadziłeś z tą ilością kondensatorów. Nie będę się rozpisywał teoretycznie. Robię pewien wesoły projekt spójrz jak na nim jest podłączony Uc. Masz mieć tak samo. To jest Atmega8, ale w 32 będzie podobnie. Z tym resetem prawdopodobnie żeśmy się gdzieś nie zrozumieli. Podłącz tak jak na poniższym obrazku.

    bascom - pcf 8583 poraz kolejny :(
  • Poziom 16  
    Vix napisał:
    Trochę przesadziłeś z tą ilością kondensatorów


    może i tak , ale powsadzałem ich tyle bo wcześniej próbowałem sterowania IR , ale są takie zakłócenia(dlatego tyle tych kondów) że zrezygnowałem choć szkoda bo by się przydało - ale zakłócenia są nawet jak zasilam odbiornik (z diodą led na wyj.) baterią i wyłączam prąd w domu "różnicówką"(dla wyeliminowania zakłóceń) - ale to nie pomogło no i tak się kondy te zostały na płytce bo ich nawet nie wyjmowałem.

    Dodano po 10 [minuty]:

    Vix napisał:
    Robię pewien wesoły projekt spójrz jak na nim jest podłączony Uc. Masz mieć tak samo.


    znów przyznaje że pośpiech nie wskazany bo na schemacie który podałem nie narysowałem kwarcu z kondensatorami podciągniętymi do masy (kwarc 8MHz (nóżki uC 12 i 13) + kondensatory 27p między nóżki uC 12 i 13) ale można się domyśleć z 1-go postu

    Dodano po 3 [minuty]:

    Vix napisał:
    Z tym resetem prawdopodobnie żeśmy się gdzieś nie zrozumieli. Podłącz tak jak na poniższym obrazku.


    tak właśnie podłączyłem i jest jak pisałem wcześniej (sprawdzałem też wariant z podłączeniem rezystora do masy ale to samo)
  • Poziom 21  
    Jeśli masz czas to narysuj ten układ DOKLADNIE tak jak masz podlaczony.

    Sprawa wyglada tak jakby, jakies czynniki zewnetrzne wplywaly na prace po pewnym czasie. Gdyby to byl blad programu to pewnie odrazu byloby to widac. Mozliwe, ze sa jakies zaklocenia na I2C


    ps nie dziala mi alt w tym oknie przez to nie mam polskich znakow :(

    edit: Już wiem w czym problem. Prędkość transmisji danych. Układ zegarka nie powinien mieć większej jak 100 kHz. Zgodnie z dokumentacją i obecnymi parametrami układu, obecna prędkość to.
    http://www.atmel.com/dyn/resources/prod_documents/doc2503.pdf
    8 000 000 / (16+(2*0)*4^1) = 500 kHz
    Zatem potrzebna wstawka assemblerowa, która odpowiednio skonfiguruje rejestr TWBR, oraz ustawi odpowiednio preskaler złożony z dwóch bitów TWPS0:1. Jak dobrać preskaler to na stronie 179. Zegarek po prostu nie nadąża (:
    Nie zmienia to faktu, że coś jest nie tak w konstrukcji Twojego układu skoro RESET podciągnięty do zasilania przez rezystor wyłącza układ, więc mimo to powinieneś forumowiczom pokazać jak masz to wszystko posklejane.
  • Poziom 16  
    Co to tego jak mam to wszystko podłączone to w wolnym czasie to po robię parę fotek jak to "siedzi" na tej "płytce uniwersalnej" no i jeszcze będę musiał mieć szczęście by je zamieścić na forum bo miewam ostatnio duże problemy z internetem(zrywa połączenie a czasem jest go brak cały dzień nawet dwa :( ). Ale chodzi mi od dłuszego czasu taka myśl , czy przypadkiem nie mam źle ustawionych fuse bitów , bo często mi "blokuje" atmegę i muszę wyciągać kwarc z kondensatorami przy nim i gen. go "odblokowywać". Dodam że z innymi "produktami" na tej atmedze typu sterownik CO itp. , to atmegi nie blokowało (blokuje tylko na tym zegarze). Jak by kotś chciał zerknąć na nie to podaje:

    bascom - pcf 8583 poraz kolejny :(

    tak wyglądają zaraz po zablokowaniu atmegi
  • Poziom 16  
    Witam po raz kolejny. Jak "kolega" prosił zrobiłem parę fotek jak to "siedzi" na tej płytce(ale jakość jest b.kiepska bo foty robione tel.(aparatu tymczasowo nie mam)) , jeśli to zadowoli to fotki zarzucam na forum. Aby zminimalizować i uprościć całość to zbudowałem tak na szybko odręcznie taki "moduł" z tym układem PCF8583(układ ten sprawdzałem wiele razy i wykluczam pomyłkę , jedynie co zmieniłem to rodzaj "podtrzymania" bateryjnego , który pod patrzyłem na płycie gł. od PC (starego)). Poza tym układ działa jak na początku , oto parę fotek:

    bascom - pcf 8583 poraz kolejny :(

    może to trochę opiszę:
    przewody "lecące" od dołu idą z programatorka kolejno:
    czerwony to plus (+5V) i "leci"na "linię" zasilającą(w płytce) a z niej do uC na nogę 10

    biały(przybrudzony i na białego nie wygląda) to minus(GND) i "leci" na "linię" zasilającą(w płytce) a z niej do uC na nogę 11 i 31
    pomarańczowy to RESET i idzie do uC na nogę 9
    czarny to SCK i idzie do uC na nogę 8
    zielony to MISO i idzie do uC na nogę 7
    brązowy to MOSI i idzie do uC na nogę 6
    obok w "linię"zasilającą podłączony jest kondensatorek 100n
    kwarc 8MHz wpięty pomiędzy nogi 12 i 13 uC
    dwa kondensatorki 27p podpięte pomiędzy GND (noga 11 uC) a nogi 12 i 13 uC
    ("linie" zasilające są łączone ze sobą (+ do + , - do -) z drugiej strony płytki)

    dalej:

    bascom - pcf 8583 poraz kolejny :(

    przewody od dołu(od prawej):

    pomarańczowy - plus (lcd)
    biały z pomarańczowym - GND (lcd)
    ten żółty to GND i idzie z "lini"zasilającej do uC na nogę 31
    niebieski - D7 (lcd) idzie z nogi 29 uC
    biały z niebieskim - D6 (lcd) idzie z nogi 28 uC
    biały z brązowym - D5 (lcd) idzie z nogi 27 uC
    brązowy - D4 (lcd) idzie z nogi 26 uC
    biały z zielonym - RS (lcd) idzie z nogi 25 uC
    zielony - E (lcd) idzie z nogi 24 uC
    kondensator ten przy uC (od prawej) to 100n i jest podłączony między AREF(noga 32 uC) a GND(noga 31 uC)
    kondensatorek ten po środku (ten pod niebieskim kabelkiem) to 100n i jest podłączony między AVCC(noga 30 uC) a GND(noga 31 uC)
    plus na przetwornik ADC idzie z "lini"zasilającej przez cewkę 10uH do AVCC(noga 30 uC)
    jeszcze po prawej widać leżącego konda 100n
    od lewej kondensator 470u
    przewody od lewej (te grubsze) to:
    pomarańczowy - SDA (noga 23 uC)
    niebieski - SCL (noga 22 uC)
    przewody (te cieńsze) to:
    pomarańczowy - plus
    biały - GND
    "piny" wychodzące z modułu PCF (od prawej):
    1: GND
    2: INT (u mnie jest wolne)
    3: SCL
    4: SDA
    5: plus

    jak by ktoś chciał zerknąć na moduł to proszę:
    - ps. moduł wykonany "odręcznie" pisakiem tak na szybko i elementy smd zalane są super glue , więc wygląda to koszmarnie więc proszę się nie śmiać

    bascom - pcf 8583 poraz kolejny :(

    na dole między baterią a układem jest kondensator 3300u/6,3V wyjęty z płyty gł. od PC. Obok niego po lewej jest zworka z trzema pinami i ustala się nią "adres" układu PCF czyli tą zworką łączę nogę 3 układu PCF z plusem lub minusem (ustawione na plus).
    obok jest kwarc 32,768KHz podłączony jest on do nóg 1 i 2 układu. Znajduje się też tam kondensator (dałem w tym module 33p) , jest on podłączony jedną nogą do nogi 1 układu a drugą do zworki (obok układu po lewej) gdzie za pomocą zworki kondensator łączę do plusa lub minusa (ustawione na plus).
    Tuż nad zworką od kondensatora jest zworka do tzw. sprawdzenia układu
    a mianowicie podłączam nią do INT (przez rezystor i diodę (separującą)) diodę led która przy tzw. teście (po założeniu zworki) dioda miga ok.1sek - normalnie jest zworka zdjęta (INT wolne). Obok tej zworki (z prawej) jest dioda "separująca" diodę led od INT. Nad tą diodą są 4-ry rezystory 2x10k i 2x3,3k które idą na "podwójną"-sklejoną zworkę którą się wybiera którymi rezystorami czy 10k czy 3,3k mają być "podciągnięte" linie SCL i SDA. A między tą "podwójną" zworką a baterią , u góry jest jeszcze zworka służąca tak samo jak na pł.gł PC do "czyszczenia" PCF-a. Reszta części typu rezystor i diody służą do zasilania-separacji układu i baterii

    tu jest moduł od str. ścieżek choć nie wiem czy komuś to pomoże:

    bascom - pcf 8583 poraz kolejny :(

    dioda ta pod rezystorem jest podłączona między plus a minus i ma za zadanie częściowo chronić układ przed przypadkowym odwróconym zasilaniem , rezystor służy do "rozładowania" kondensatorów w celu "wyczyszczenia" układu. Kondensator 100n jest podłączony bez pośrednio do nogi 4 i 8 układu w celu "likwidacji" zakłóceń , są jeszcze dioda led , rezystory i kondensatory SMD , ale w układzie ładowania baterii i w tym układzie tzw. testu (z tą diodą led).

    tak wygląda bez tego modułu:

    bascom - pcf 8583 poraz kolejny :(

    jeśli ktoś to rozszyfrował i wie co i jak z czym się je , to proszę o odpowiedź
  • Poziom 21  
    Próbowałeś zmienić tą częstotliwość transmisji na I2C ?
    Teraz jest ona równa.
    8 000 000 / (16+(2*0)*4^1) = 500 kHz
    A ma być nie więcej jak 100kHz.
    Uc 5x szybciej wymaga danych niż w stanie jest podać PC :!: Zmień to
    koniecznie.
    W TWBR ma być wartość (według wzoru z noty).

    8 000 000 / 16 + 8x = 100 000
    16 00 000 + 800 000x = 8 000 000
    x = 8
    x = TWBR = 8


    Wstawka assemblerowa
    Cytat:

    $asm
    ldi r16 , 8
    out TWBR , r16
    $end asm

    Wstawka ma być, przed główną pętlą programu.
    8 jest wartością minimalną, ale możesz zacząć od niej wg. noty. Wstawiając 9 prędkość transmisji spadnie do 90kHz.
  • Poziom 16  
    Witam. Niestety "wstawka" asem. nic nie pomogła(z nią w zależności jaką cyfrę wpisałem począwszy od tej "8" wzwyż , to różnica polegała tylko na tym że częściej lub mniej lcd "świrował". Zauważyłem że najlepiej ,(bo najdłużej działa zegarek) chodzi bez tej wstawki asemb. , poza tym przypadkowo odkryłem że jak podmieniłem kwarc na inny (ale też 8MHz) to układ działa z rezystorem 10k na "RESECIE" (reset a plus) ale nierobi to żadnego znaczenia i układ działa ja działał wcześniej. W wolnym czasie dam jeszcze trymer pomiędzy konda przy kwarcu koło PCF-a i sprawdzę jak to będzie chodzić i jak co to dam znać
  • Poziom 16  
    Witam po raz kolejny i już ostatni ponieważ problem już rozwiązałem. Jak wcześniej pisałem , sprawdzałem układ z trymerami przy kondensatorze obok kwarcu przy układzie pcf , ale bez skutku - jak było przed tak było i po. Natomiast "oświeciło" mnie ponieważ wymiana kwarcu na inny obok uC pomogła "częściowo" bo układ zaczął działać z rezystorem przy "resecie" , to postanowiłem podmienić kwarc obok pcf-a i o dziwo pomogło po części ponieważ jeszcze w stopniu minimalnym było widać takie krótko trwałe mało zauważalne "świrowanie" lcd. Ale i z tym sobie poradziłem bo wystarczało zasilanie(+5V) na pcf-a podać przez cewkę-dławik 10uH i dać konda 100n (tak jak jest podłączone zasilanie ADC uC) no i wszystko śmiga aż miło. Bardzo dziękuję wszystkim za zainteresowanie się tym tematem i pomoc. Temat można zamknąć.