AT89S52

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2563
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

AT89S52

Príspevok od používateľa maskrtnik01 » 20 Júl 2010, 16:42

Dobrý deň,

Mám zapojené ISP NE049 cez COM1 port do počítača a taktiež do čipu AT89S52. ISP mám napojené do prúdu cez 300mA adaptér nastavený na 12V.Prepojil som piny MISO,MOSI,SCK, RESET na RST(pin 9), prúd na VCC a j na VPP(piny 40 a 31), GND na GND(pin 20) . Medzi XTAL1(pin 19) a XTAL2(pin 18) mám kryštál, označený ako YIC12.000A0 , a od oboch vývodov 33pF kondenzátor smerom na zem.Vývod LED na ISP som nedal, pretože neviem, kde by mal ísť.

Keď zapnem ovládací program pre ISP a dam načítať typ čipu, píše, že to nevie. Keď ručne vyberiem AT89S52 a dám načítať Flash do súboru, tak tiež len BŁAD (error).

Nevedel by mi niekto poradiť, kde môže byť chyba ? Všetko, čo som objavil som už opravil a nefunguje to. Taktiež vôbec mi nesvietia LEDky na ISP, ale tam si niesom istý polaritou, stranu so zárezom som dal ako anódu.
0

Kofo

Príspevok od používateľa Kofo » 20 Júl 2010, 17:43

Dúfam, že k tomu adaptéru máš pre napájanie S52ky 5V stabilizátor...

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2563
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Ten je v programátori

Príspevok od používateľa maskrtnik01 » 20 Júl 2010, 17:55

Áno, na PCB programátora je 7805.
0

Používateľov profilový obrázok
enaxy
Pokročilý člen
Pokročilý člen
Príspevky: 503
Dátum registrácie: 31 Mar 2010, 00:00
Bydlisko: Zilina
Vek: 44
Kontaktovať používateľa:

Príspevok od používateľa enaxy » 20 Júl 2010, 17:56

To napajas ten procesor 12V? a to ti nehori :o

ok predbehol si ma s odpovedou takze ta moja otazka je irelevantna

moment ale programovany procesor je napajany z programatora?
0
Naposledy upravil/-a enaxy v 20 Júl 2010, 17:59, upravené celkom 1 krát.

Kofo

Re: AT89S52

Príspevok od používateľa Kofo » 20 Júl 2010, 17:59

maskrtnik01 napísal:Prepojil som piny MISO,MOSI,SCK, RESET na RST(pin 9)
Všetky štyri vodiče na jeden pin?

Ono to má ísť predsa takto
MOSI 6
MISO 7
SCK 8
RST 9

enaxy: áno, je.

Používateľov profilový obrázok
manik
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1044
Dátum registrácie: 19 Jan 2008, 00:00
Vek: 45

Príspevok od používateľa manik » 20 Júl 2010, 18:10

to bude asi 1 vodicove ISP...
0

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2563
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Príspevok od používateľa maskrtnik01 » 20 Júl 2010, 18:12

1.Opakujem:Na PCB programátora je 7805 a preto je to priamo robené na 12V.

2.
Samozrejme som to nedal všetko na 9. pin. Preto to bolo oddelené čiarkou.
Napojil som to presne tak ako boli piny označené v datasheete a ako to píšete.


Myslel som, že mi niekto fakt pomôže, počítal som aj s tým, že ma pokarháte za neskúsenosť, ale ani by ma nenapadlo, že si niekto pomyslí tieto blbosti, ako napr. že som dal priamo na čip 12V.
0

Kofo

Príspevok od používateľa Kofo » 20 Júl 2010, 18:17

Hm. Tak poďme pomaly.

Na procesore je 5V všade, kde má byť? Tzn jumper na programátore je spojený?

Sedí poradie vodičov z headera na procesore? Neprehodil si nejaké?

Nastavenia COM to nevyžaduje žiadne?

Používateľov profilový obrázok
manik
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1044
Dátum registrácie: 19 Jan 2008, 00:00
Vek: 45

Príspevok od používateľa manik » 20 Júl 2010, 18:22

a este jedna otazka
programoval si s tym programatorom niekedy nieco??

ja u elnec musim v softe nastavit aj ze aku mam hodnotu kristalu, nieco zo spozdenim
na reset mas nastavenu dobru polaritu? netreba tam pul up odpor?
0

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2563
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

AT89S52

Príspevok od používateľa maskrtnik01 » 20 Júl 2010, 18:26

No teda tak je to tým jumperom.Teraz to ide.Ale v dokumentácií k programátoru písali, že jumper netreba, ak to napájam z toho 12V konektora.

Citujem dokumentáciu, Z3 je ten 12V konektor, Z2 je konektor ku čipu, Z4 je jumper:

Napájanie stavebnice môžeme zabezpečiť dvoma spôsobmi. V prvom prípade pripojíme napätie cez konektor Z3, pričom napájacie napätie 5V zabezpečí stabilizátor 7805. V tomto prípade "jumper" na konektore Z4 nepripájame.


Manik: Neprogramoval som doteraz nič, tzn. ani s iným programátorom, ani s týmto.
0
Naposledy upravil/-a maskrtnik01 v 20 Júl 2010, 18:27, upravené celkom 1 krát.

Kofo

Príspevok od používateľa Kofo » 20 Júl 2010, 18:27

Sranda. Tak treba pozrieť schému a neveriť poliakom :)

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2563
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Príspevok od používateľa maskrtnik01 » 20 Júl 2010, 19:04

Až na to, že ja som to mal zo slovenska a teda ak aj neplus k tomu dáva akýkoľvek manuál, tak ja ho nemám.
0

Kofo

Príspevok od používateľa Kofo » 20 Júl 2010, 19:05

Tak neveriť nikomu a riadiť sa podľa schémy :D

Ale veľa šťastia...

Používateľov profilový obrázok
enaxy
Pokročilý člen
Pokročilý člen
Príspevky: 503
Dátum registrácie: 31 Mar 2010, 00:00
Bydlisko: Zilina
Vek: 44
Kontaktovať používateľa:

Príspevok od používateľa enaxy » 20 Júl 2010, 20:56

Takze predsa len napajanim. Prepac ak to vyznelo, ze ta robime neschopnym. V zivote sa stretne clovek so vselicim :) Inak ahoj.
0

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2563
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Príspevok od používateľa maskrtnik01 » 21 Júl 2010, 12:24

Zatiaľ ďakujem, ešte by som potreboval poradiť s programom.

Chcel by som z toho spraviť hodinky.
Ako prvé ma napadlo spraviť si návestia AM1,AM10,AH1,AH10,AD a pod, každé by pridalo určitý časový diel, s tým, že ak je v R0 a R1 uložené, že je 23:59, tak aby to prebublalo z AM1(ďalšia minúta) cez všetky až na AD(nový deň), ktoré by bolo zároveň úvodnou inicializáciou.
Ako zistiť, že treba mi nulovať a skočiť na iné, ma napadá, ale trebalo by mi niečo v zmysle skoč ak sa rovnajú. V inštrukčnej sade je ale iba CJNE(porovnaj, skoč ak sa nerovnajú). Žiadne CMP ani JE, ktorým by som to chcel spraviť. Napadá niekoho iné riešenie, napríklad cez bit prenosu ?
Ešte s tým že port 0 piny 0-3 bude čip 4511 a 7segmentovka a port 0 piny 4-7 bude ďalšie 4511, lenže to je dekóder pre 16kovú sústavu na 7segm. Na hodinách pre ľudí to musí byť desiatkovo.A ako nechať nastaviť bit prenosu ak tam je napr. 10010000, t.j. na 7segm. 09 ?


Taktiež časovanie. V jednom z programov priložených k mojmu(stiahol som ho, nie nieje mojej výroby) kompilátoru je uvedený príklad, kde je definované TIME EQU 8.
Následne dajú do R0 hodnotu tej konštanty, #TIME a pomocou DJNZ čakajú na nulu, následne to vyskočí a vraj prešla sekunda.
To potom keď si dám TIME EQU 480 a to do napr. R3 tak to naozaj za 480 vykonaní DJNZ prejde minúta ? Pri 12Mhz kryštáli sa mi to číslo zdá byť primalé.Prípadne ako čakať minútu a pritom kontrolovať ešte stav tlačidiel ?
0

Používateľov profilový obrázok
SMITH
Ultimate člen
Ultimate člen
Príspevky: 1659
Dátum registrácie: 29 Sep 2007, 00:00
Bydlisko: Púchov
Vek: 48

Príspevok od používateľa SMITH » 26 Júl 2010, 13:44

Už sa ti podarilo na programovať ten uP ?
0
:-) Nikdy neříkejte, že něco nejde, protože vždy se najde blbec, který neví, že to nejde, a udělá to ! :-)

kizmoo
Nový člen
Nový člen
Príspevky: 57
Dátum registrácie: 10 Júl 2010, 00:00
Bydlisko: Čadca

Príspevok od používateľa kizmoo » 26 Júl 2010, 14:53

Ak ti mozem poradit a ak nechces pisat program vyslovne v assembleri, tak vyskusaj programovanie v jazyku C. Pre procesory c51(52) a ich klony odporucam KEIL uVision, ktory si mozes stiahnut zdarma a zdarma pouzivat do dlzky programu tusim 2kB.

Pre tvoju aplikaciu je vhodne vyuzit jeden z casovacov procesora, ktory bude v definovanych intervaloch vyvolavat prerusenie (napr. kazde 2ms). V obsluhe prerusenia budes spocitavat prerusenia, kym nedostanes celu sekundu, no a ked uz mas sekundu, mozes lahko pocitat minuty a hodiny. V hlavnej slucke uz budes iba posielat cas na segmenty, napriklad zakazdym ked uplynie sekunda.

tu som narychlo (ilustracne) potlapal obsluhu prerusenia a hlavnu slucku v C:

#include <regx52.h>

unsigned char PocetPreruseni;
unsigned char Sekunda;
unsigned char Minuta;
unsigned char Hodina;


void Int_Casovac2( void ) interrupt 5
{
if ( ++PocetPreruseni >= 20 ) {
PocetPreruseni = 0;
Sekunda++;
}
if ( Sekunda >= 60 ) {
Sekunda = 0;
Minuta++;
}
if ( Minuta >= 60 ) {
Minuta = 0;
Hodina++;
}
if ( Hodina >= 24 )
Hodina = 0;
}

void ZobrazCas( void )
{
// funkcia pre vypis casu na segmentovky
return;
}

void main( void )
{
unsigned char StaraSekunda = 0;

Sekunda = 0;
Minuta = 0;
Hodina = 0;

T2MOD = 0x00; /* T2OE=0;DCEN=0; */
EXF2=0; /* reset flag */
TCLK=0;RCLK=0; /* disable baud rate generator */
EXEN2=0; /* ignore events on T2EX */
TH2=0x3C; /* Init msb_value */
TL2=0xB0; /* Init lsb_value */
RCAP2H=0x3C;/* reload msb_value */
RCAP2L=0xB0;/* reload lsb_value */
C_T2=0; /* timer mode */
CP_RL2=0; /* reload mode */
EA=1; /* interupt enable */
ET2=1; /* enable timer2 interrupt */
TR2=1; /* timer2 run */

while( 1 ) {
if ( StaraSekunda != Sekunda ) {
StaraSekunda = Sekunda;
ZobrazCas();
}
}
}
Prílohy
main.c
(1.5 KiB) 65 stiahnutí
0
Naposledy upravil/-a kizmoo v 29 Júl 2010, 16:30, upravené celkom 5 krát.

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2563
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

AT89S52

Príspevok od používateľa maskrtnik01 » 29 Júl 2010, 11:27

Ďakujem, už mám kompletne obsluhu tlačidiel aj segmentovky, teraz už len ako nastaviť ten časovač. Kryštál ma keď sa nemýlim 12Mhz.A ešte keď mám všetko natrepané do prerušenia, tak v main treba nejaký cyklus aby sa to neukončilo alebo to pôjde aj po dokončení main ?
0

kizmoo
Nový člen
Nový člen
Príspevky: 57
Dátum registrácie: 10 Júl 2010, 00:00
Bydlisko: Čadca

Príspevok od používateľa kizmoo » 29 Júl 2010, 16:11

Trochu som upravil program, bude sa pouzivat 16 bitovy Timer 2 v autoreload mode. Ak som spravne vypocital reload hodnotu pre 12Mhz tak by mal vyvolat prerusenie kazdych 50ms.

Program bezi tak, ze sa na zaciatku spusti funkcia main, zaciatok funkcie nakonfiguruje timer a povoli prerusenie, tato cast programu sa vykona iba raz po zapnuti, pretoze program uviazne v nekonecnom cykle "while(1)". Kedze je povoleny timer a prerusenie, tak sa bude kazdych 50ms prerusovat nekonecny cyklus prerusenim od timera. Prerusenie nesposobi ukoncenie programu, ten si iba odskoci vykonat obsluhu a pokracuje dalej v cykleni.
0

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2563
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

AT89S52

Príspevok od používateľa maskrtnik01 » 29 Júl 2010, 16:38

Tak teraz už to mám skompilované, ale čo z toho je pre čip ? Nikde nie je nič s príponou hex je tam bez prípony, .lnp, .M51, .Opt, .plg, .Uv2, .Bak, .c, .LST a .OBJ .

A okrem toho, predtým som už chcel z toho spraviť niečo iné, dal som tam program, nešlo to a čo je horšie, od vtedy programátor vôbec nevie čo za čip tam mám. Dá sa z toho vyhrabať, alebo treba úplne nový čip?
0

Napísať odpoveď