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

AT89S52

macias21 29 Wrz 2004 08:40 10465 58
  • #31 29 Wrz 2004 08:40
    ceder
    Poziom 12  

    kondensator przy resecie powinien byc podlaczony nozka MINUSOWA do RESET, a n. PLUSOWA do +VCC. Stad masz te 2.68V na resecie. Zmien polaryzacje kondensatora, tylko zmierz pozniej to napiecie, bo mogl sie uszkodzic. Albo lepiej: nie montuj go wogole, a uklad resetuj recznie.

  • #32 29 Wrz 2004 10:47
    h0nza
    Poziom 14  

    Witam
    Przedmówca ma rację (z przelutowaniem kondensatora bo z ręcznym resetem można polemizować) sądze że układ przeżył (skoro można go programować
    w roli ścisłości to układ jest resetowany stanem wysokim czyli takim od 2 V w górę - czyli teraz masz aktualny reset układ jest aktywny gdy na nodze masz 0
    ten układ resetu z drabinką rc polega na tym że jeśli kondensator jest rozładowany (czyli po jakiejś chwili od wyłączenia zasilania) włączając zasilanie jest rozładowany (różnica 0V) więc na node resetu pojawia się 5V - kondensator ładuje się przez rezystor - i gdy napięcie na nim osiągnie 5V-1.4V czyli 1.4V względem masy reset się wyłącza - czas trwania tego określa prosty wzór (w przybliżeniu) t=R*C - mnie teraz nie będzie życzę więc skutecznego samodzielnego dochodzenia do genialnych projektów :D

  • #33 29 Wrz 2004 13:28
    macias21
    Poziom 14  

    Witam!Probowalem juz wszystkiego ale to chyba juz wina uC :( .Najpierw zmienilem polaryzacje kondensatora przy resecie.NIC.Wywalilem kondensator i zostawilem rezystor 10K z VCC do resetu.W stanie niskim jest 0V a jak programowo resetuje uklad to jest 4,92V czyli dobrze.
    Kiedy pamiec uC jest wykasowana Napiecie na portach ma wartosc 4.92V.
    Pisze program aby dac stan niski na port P0:
    #include <c:/mide/sdcc/include/8051.h>
    sfr P_0 = 0x80;

    void main(void)
    {
    P_0 = 0;
    while(1);
    }
    To jest jeden z wielu testowanych.Wrzucam go do uC(proces przebiego ok),resetuj recznie oczywiscie po odlaczeniu programatora. I na wszystkich portach jest 0V czyli nie do konca tak jak mialo byc ale stan niski mozna powiedziec osiagniety tyle ze wszedzie;-) ale i tak dioda nie swieci :( .Oczywiscie na nozce EA jest prawidlowe 4,92V.
    Dioda podlaczona jest katoda(dluzsza nozka :) ) do uC a anoda przez rezystor 1,6K do VCC.Pisze zeby sie upewnic ale to tak mialo byc podlaczone!!
    Zczytalem hexa z uC i porownalem z oryginalnym oczywiscie po disassemblacji i teoretyczne jest to samo.
    Zamieszczam schmat,plik oryginalny p00.c, p00.hex i ten zczytany z uC p00z.hex oraz pliki (p00.d51 i p00z.d51 po disassemblacji).
    Jesli ktos ma chwilke to proce to zobaczyc.
    Ja chyba zaraz wybiore sie do sklepu po mowy AT89S51 :(

  • #34 29 Wrz 2004 17:32
    ceder
    Poziom 12  

    1.po pierwsze primo: RESET masz na stale podlaczony do VCC, robisz tak: nozka RESET procesora przez rezystor do GND. Przycisk resetujacy od nozki RESET do VCC,
    2. po drugie primo: nozka EA to n. nr 31, a Ty masz 32 podlaczone do VCC, zmien to bo tez nie bedzie dzialac :P,
    3. po trzecie primo. rezystory ograniczajace prad diody led daj 500 Ohm, zadne kilo!. Podlacz najpierw szeregowo led z rezystorem bezposrednio miedzy GND i VCC i zobacz czy swieci.

  • #35 29 Wrz 2004 17:49
    macias21
    Poziom 14  

    1.po pierwsze primo: RESET mam dobrze podlaczony czyli przez rezystor do masy.(TO BLAD NA RYSYNKU)
    2. po drugie primo: Nozka EA od poczatku byla prawidlowo podlaczona (31 do Vcc) a wystapil blad na rysunku.Gdyby nie byla podlaczona czy cokolwiek moglbym zaprogramowac.??CHYBA NIE!
    3. po trzecie primo. Rezystory mam 1,6K i wczesniej podlaczylem je szeregowo do Vcc i GND zeby sprawdzic czy beda swiecic.SWIECA I TO CALKIEM DOBRZE!O tym juz pisalem!
    DZIEKIE ZA WYLAPANIE BLEDOW NA RYSUNKU!

  • #36 30 Wrz 2004 17:36
    macias21
    Poziom 14  

    Witam wszystkich serdecznie!
    Chcialbym bardzo wam wszystkim podziekowac za pomoc w uruchomieniu tego zestawu szkoleniowego.SZCZEGOLNIE CEDROWI i ZUMKOWI ktory poswiecili mi swoj czas na GG :)

    Kupilem dzisiaj nowy ulkadzik uC i napisalem taki programik kozystajac z RIDA :
    #include <reg52.h>

    sbit Led1 = P0^0;
    sbit Led2 = P0^1;
    sbit Led3 = P0^2;

    sbit SW1 = P2^0;
    sbit SW2 = P2^1;
    sbit SW3 = P2^2;

    void main(void) {
    while(1){
    Led1 = SW1;
    Led2 = SW2;
    Led3 = SW3;
    }
    }

    Wszystko dziala :)
    Wczoraj na starym mimo hexow od CEDRA nie szlo i uC robil straszne jazdy ale dzis na nowym jest ok.NAJLEPSZE JEST TO ZE chcialem sprawdzic jak zachowa sie z tym programem stary uC i o dziwo dziala poprawnie :) .Da sie juz opanowac ;) stany na portach.TAKZE JESTEM 10,5zl w plecy ;) i mam teraz 2 dobre uC. Nie potrafie wytlumaczyc tego dlaczego dzis juz dzial,moze dlatego ze RAID wreszcie dobrze zkompilowal hexa dla tego uC,nie wiem...
    Jest jeszcze jeden problemik ale to juz sam do niego dojde.Mikro po zaprogramowaniu wykonuje tylko wtedy program gdy jest podlaczony do kompa ale przy wylaczonym programowo resecie.Kiedy odlacze reset (wyciagajac kabel uklad nie dzial).Wiec to juz tylko kwestia popracowania nad poprawnym resecikiem :).
    P.S.nie zmienilem programatora na STK-200,a dalej korzystam z tego od ISP programmera.

    DZIEKI WIELKIE ZA POMOC I POZDRAWIAM MCIEK :)

  • #37 01 Paź 2004 01:17
    macias21
    Poziom 14  

    Wiem ze pisanie postu pod swoim postem nie jest w dobrym smaku na forum ale chcialem zostaic ciaglosc tematu odnosnie AT89S52 :)

    Chcialbym zrobic interface (rs232) do polaczenia z komputerem.Chcilbym(jesli to jest mozliwe) przesylac np znak lub ciag znakow do komputera i wyswwietlic to np w jakims programie do komunikacji po rs232(W JAKIM ??).Chcialbym rowniez abym mogl odebrac znak i wyswietlic go na wyswietlaczu numerycznym.
    Prosilbym o jakis chcemacik odnosnie polaczenia uC z maxem 232 i komputerem(kabelek).Oraz jesli ktos posiada jakis schemacik podlaczenia wyswietlacz numerycznego(moze byc jeden segmencik) to bylbym wdzieczny :)
    Czy to jest dobrze polaczone?
    DZIEKUJE!

  • #38 01 Paź 2004 01:24
    ACULA
    Poziom 34  

    równolegle do swicha dałbym 10uF, reszta wygląda dobrze]

    nie wiem co z P0, czyżby brak pull-up

    PS ja upierałbym się, że zasilane układy działają lepiej

  • #39 01 Paź 2004 17:44
    macias21
    Poziom 14  

    Poprawilem resecik,zastosowalem kondensator i wreszcie reset dziala poprawnie:).
    Zamiescilem schemat ukladu w poprzednim poscie.Teraz widac caly uklad.
    Zmontowalem rs-a wedlug tego co tam jet i chyba jest dobrze.
    Jak mozna sprawdzic transmisje??Chcialbym przeslac jakpierw jakis znak do kompa??Jaki program moze dzialac jak terminal??
    P.S.macie moze jakis schcemacik z wyswietlaczem numerycznym??Chcialbym podlaczyc jeden segment.
    POZDRAWIAM MACIEK:-)

  • #40 01 Paź 2004 17:59
    zumek
    Poziom 39  

    Acula napisał:

    ...
    PS ja upierałbym się, że zasilane układy działają lepiej


    Macias21 :!:

    Zapomniałeś "nakarmić" MAX232 (podłącz VCC i GND)

    Pzdr.
    Piotrek Sz.

  • #41 01 Paź 2004 18:04
    ACULA
    Poziom 34  

    trzeba zrobić pętlę, jeżeli masz procka na podstawce to wyjmij go , w złaczu rs (wyjściowym) na płytce zewrzyj RXD TXD i sprawdź czy jak podasz pin 11)1 to na drugim pinie (10) masz 1 a jak 0 to 0

    daj elektrolit w zasilaczy

    zmniejsz rezystor przy diodzie w zasileczu, max 5k

    do komunikacji używaj terminala windows lub jest plik na elektrodzie termxxxx.exe xxx to numery wersji

  • #42 01 Paź 2004 18:06
    macias21
    Poziom 14  

    Widzialem kilka schematow gdzie ulkad byl zasilany tak jak ja zrobilem czyli VCC przez kondensator do nozki 2,a GND przez kondensator do nozki 6.
    Czy taki uklad dziala??

  • #43 01 Paź 2004 18:10
    ACULA
    Poziom 34  

    nie , tamte dwa są w obwodach przetwornicy podnoszącej napięcie max. Zasilanie musi być doprowadzone normalnie - Vcc i GND

  • #44 01 Paź 2004 18:12
    macias21
    Poziom 14  

    Witam!

    Dzieki za rady odnosnie RS-a :) .Poprawilem ukladzik i udalo mi sie wyslac znaki do koputera.Wszystko jest ok :) .

    Mam jeszcze prosbe.Zamieszczam schemacik i powiedzcie czy ten wyswietlacz zadziala z takim schemacikiem?
    Zastosowalem wyswietlacz 7-segmentowy SA03-11GWA: http://www.kingbright.com/download/pdf/Sx03(V1).pdf
    On jest ze wspolna anoda.
    Zastorowalem miedzy portem P0 a segmentami rezystory 620 ohm.Tranzystor BC 557 jest podlaczony przez rezystor 1,6K do portu P2.7 i ma sterowac zapalaniem anody,jest tez zalaczony do zasilania Vcc=5V.
    Czy to bedzie dzialalo.Czy tranzystor jest wlasciwy i czy wartosci resystorow sa odpowiednie??
    DZIEKI BARDZO :)

  • #45 02 Paź 2004 19:34
    macias21
    Poziom 14  

    Prosze powiedzcie czy to bedzie dzialo :) bo lutownica juz sie grzeje :)

  • #46 02 Paź 2004 19:45
    ACULA
    Poziom 34  

    dobry, ale to był prosty schemat, na drugi raz pamiętaj że nie jest konieczne podłączenie dwóch Anod bo i tak są połączone wewn. a upraszcza płytkę ;)

    1,6k zamieniłbym na 1k

  • #47 02 Paź 2004 19:48
    macias21
    Poziom 14  

    Dziekuje PORAZ KOLEJNY za szybka odpowiedz :)

  • #48 02 Paź 2004 19:58
    Dexter77
    Poziom 28  

    IMHO jezeli jest jeden wyswietlacz to tranzystor jest zbedny. Jezeli bedziesz podlaczal wiecej wyswietlaczy i multipleksowal je to jak najbardziej na kazdy wyswietlacz bedzie potrzebny jeden tranzystor.
    Pozdro
    Dexter

  • #49 20 Maj 2006 20:09
    notset
    Poziom 16  

    Witam,

    Robie podobny uklad do "wyswietlacz.jpg".. z tym ze mam wykonany tylko uklad zasilania (+reset), uklad rezonatora.. i podlaczenie do ukladu ISP.. poniwaz do P0.0 podlacze LED'ke poprzez 670Ω do VCC.. a do P2.0 podlacze mikroswitcha do masy (bez zadnego rezystora ani nic? doradzcie tez, pasuje pewnie tez dodac jakiegos 1µF elektrolita rownolegle ze switchem co?) i teraz w programie chce zrobic petle:

    PETLA:
    MOV P0, P2
    LJMP PETLA

    Czyli takie proste wlaczanie/wylaczanie LED'a switchem..

    I mam tez dalsze pytanie jak mu podawac napiecia podczas programowania i jak podczas normalnego uruchomienia? Poniewaz przy programowaniu przez ISP bedzie juz +5V (z LPT) wiec nie podpinac zadnego innego? A jak bede chcial uruchomic uklad to odpiac ISP i podlaczyc +5V np. z zasilacza AT (tak mam w planie)? Dobrze zrobie?

    Programowac bede ukladem STK200+/300 z:
    http://www.tehsystem.pl/ISPAVR/ofertaISP.php

    Dziekuje z gory za pomoc, odwdziecze sie punktami..
    Pozdrawiam serdecznie

  • #50 20 Maj 2006 21:25
    zumek
    Poziom 39  

    notset napisał:
    ...Poniewaz przy programowaniu przez ISP bedzie juz +5V (z LPT) wiec nie podpinac zadnego innego?...

    A gdzież to takie informacje wyczytałeś :?:
    Programator jest zasilany(jeśli wogóle potrzebuje zasilania) z układu , w którym znajduje sie programowany uC (pin nr.2 wtyku ISP).
    Zrtesztą popatrz: http://www.pg.gda.pl/~zbczaja/wyprawka.html

    Piotrek

  • #51 21 Maj 2006 12:04
    notset
    Poziom 16  

    Witam,

    Rzeczywiscie cos mialem nieodpowiednie informacje na ten temat.. :)
    Dziekuje.. czyli moge do ukladu podlaczyc +5V z zasialcza AT i miec wpiete gniazdo od ISP zarowno przy programowaniu jak i uruchomieniu ukladu tak?

    Aha.. mam jeszcze pytanie kwestii programowej.. czy jesli wgram program, kory napisalem wyzej to zadziala? Nie trzeba jeszcze inicjowac stosu itp? Jak tak to jak to zrobic..

    Pozdrawiam serdecznie

  • #52 21 Maj 2006 12:32
    zumek
    Poziom 39  

    notset napisał:
    ... Aha.. mam jeszcze pytanie kwestii programowej.. czy jesli wgram program, kory napisalem wyzej to zadziala? Nie trzeba jeszcze inicjowac stosu itp? Jak tak to jak to zrobic..
    Pozdrawiam serdecznie

    Dla tych dwóch instrukcji , nie musisz modyfikować wskaźnika stosu ;)

    Piotrek

  • #53 21 Maj 2006 14:14
    notset
    Poziom 16  

    Witam,

    OK uklad zmontowany.. uzylem ISPProg'a do programowania.. ustawilem parametry.. odczytalem orginalna zawarosc flasha.. odczytalem sygnature.. wszystko jest ok.. ale jak probuje wgrac wlasnego HEX'a.. skompilowanego np. SDCC..

    Code:
    #include <at89S8252.h>
    

    #define     SWITCH          P2_0
    #define     LED             P0_0
    #define     TRUE            1


    void main(void){
       
        while(TRUE){   
            LED=SWITCH;
        }
       
    }
       


    To ISPProg wypisuje ze nie powiodlo sie zapisywanie .. poniewaz probowal zapisac bajt np. 02h a odczytal FFh..

    A jak programuje ta orginalna odczytana wartosc flasha to ja programuje ok.. Verify check tez jest wtedy ok..

    Co moze byc nie tak? Chyba ze Wy mi skompilujecie dobrego HEX'a dla takiej petli.. bo to prawie to samo co kod ASM'a co napisalem wyzej.. zobaczymy czy bedzie dzialac..

    Pozdrawiam serdecznie

  • #54 21 Maj 2006 14:25
    zumek
    Poziom 39  

    Spróbuj ustawić w ISPprog-u częstotliwość mniejszą od tej , na jakiej faktycznie chodzi proc np. =<1MHz .

    Piotrek

  • #55 21 Maj 2006 14:32
    notset
    Poziom 16  

    Niestety nic to nie dalo.. po Twoim poscie probowalem wlasnie roznych "f" ale nadal to samo.. reszte mam ustawione na "AT89S53/8252", a w "Setup" na "STK200/300 Evaluation Board".. rezonator w ukladzie mam 12MHz.. ale skoro sie odczytuje to jest ok.. a padl zapis.. nie wiem co moze byc nie tak..

    --------------

    Aha.. a jak ustawie na "AT89S51/52" to widzi RESET na ON, a nie czyta sygnatury.. NOT KNOWN (FF, FF, FF)..

    --------------

    Proboje wlasnie PonyProg2000 i efekt ten sam.. czytac czyta.. ale nie moze zapisac..

    Jak dam odczyt Security and Configuration bits i "Read" to wszystkie 3 LB sa zaznaczone... moze to ma wplyw? Ale nie moze zapisac nowych wartosci.. :( W specyikacji jest napisane ze jak sa ustawione wszystkie 3 to jest pelna blokada przed zapisem i uruchimieniem.. teraz tylko pytanie jak to zmienic??? Skoro set nie zapisuje :(((

  • #56 21 Maj 2006 15:24
    zumek
    Poziom 39  

    notset napisał:

    Aha.. a jak ustawie na "AT89S51/52" to widzi RESET na ON, a nie czyta sygnatury.. NOT KNOWN (FF, FF, FF)..

    Nie pamiętam dokładnie jak to było z moim S52 , ale spróbuj odwrócić (Inverted Reset) polaryzację resetu i wybór proca ustawić oczywiście na S51/52.

    Piotrek

  • #57 21 Maj 2006 15:35
    notset
    Poziom 16  

    Hmm.. dalem Inverted Reset.. ustawilem nawet force na AT89S52.. stan jest ON.. ale dalej to samo.. w ISPprog lock bits tez sa ustawione i nie idzie ich zmienic.. :(((

    -------------

    Raczej chyba nie jest to przyczyna jesli polaczylem wszytskie piny GND z ISP z masa ukladu (w tym z masa zasilania)? I zasilam uklad z tego samego zasilacza, ktory mam w komputerze? Nie wiem.. moze cos musze tym mikroswitchem przy ukladzie resetu kombinowac? Bo zrobilem to jak na rysunku..

  • #58 04 Wrz 2006 15:59
    Marianekk
    Poziom 13  

    Hej notset czy już poradziłeś sobie z tym programowaniem. Ja miałem podobny problem i okazało się, że podpiołem złe kondensatory do rezonatora kwarcowego (zamiast 33p podpiołem 33n). A że byłem przekonany iż kondensatorki mają wartośc 33p trudno było mi znaleść przyczynę dlaczego żaden programator nie chce działać :)

  • #59 09 Lis 2006 12:42
    notset
    Poziom 16  

    Skonczylo sie na tym ze caly uklad wyladowal na dnie szuflady.. ;) Pomimo ze nadal chcialbym sie tym pobawic to nie znalazlem nikogo w mojej miejscowosci kto by mi chociaz do testow ukladu zaprogramowal kostke.. taki lajf.. :(