Dobrý den,
pracuji na zařízení s mikroprocesorem AT89C2051, ale mám jeden problém. Sestavil jsem si základní zapojení s tímto mikroprocesorem. Zapojení mi funguje, ale bohužel ne vždy. Po připojení napájení procesor někdy začne vykonávat program (blikání LED diody) bez problému, ale při dalším zapnutí zůstane dioda zhasnutá nebo svítí. Nevíte prosím, kde by mohla být chyba?
Děkuji za odpověd...
Fórum › Assembler
Problém s AT89C2051
Možná by pomohlo hodit sem schéma, popř. program. Příčin může být víc. Nejprve bych asi hledal okolo krystalu nebo bych zkontroloval spoje.
Kondenzátor na RST by měl zpozdit reset do doby, než naběhne krystal a ostatní obvody. Že to s ním nefunguje, je divný. Jinak doufám, že máš program umístěn ve správném segmentu (až za adresami přerušení), popřípadě ošetřené vstupy externího přerušení (čítače). Je totiž možné, že právě tyto vstupy chytají rušení a vyvolávají přerušení. Ale jen tipuju. Nic jiného mě nenapadá.
Ehm nejsem si jist al enamá být reset připojen ještě odporem na zem, ??
Víc by asi prozradil datasheet...
Takze to moze byt viacero dovodov.
1. Niektore krystaly maju problem sa rozkmitat pri takomto zapojeni, takze by som to riesil cez invertory ako zdoj hodinoveho signalu (max 24MHz).
2. v programe nevidim prikaz ORG 0 ten urcuje od kadial sa ma program spustit pri resete.
3. ked som si vsimol program tak on sa to na jednoduchsie preco tam je nav2: nop tento tam nemusel byt ale v programe nie je chyba az na to ORG 0.
A podla chybu ti to robi napr.
po dlhsom vypati ked si to zapal tak ti to islo normalne (C = 10uF bol vybity) ale potom ako akonahle si to vypal a potom nasledne zapal kondik sa nestihol vybit.
Zdravím,
jsem neznalý v oblasti programování. Mám zařízení s tímto mikrokontrolérem, ale zbytek obvodu, se kterým pracuje je v "havarijním stavu". Dá se přes programátor "vytáhnout" program, který je do něho vložený a nahrát do nového mikrokontroléru na nově sestaveném obvodu?
Předem díky za odpověď
To Tomáš :
Ano, pokud nejsou nastaveny v mikrokontroleru bity, ktere zakazuji cteni. Tyto bity obvykle nastavuji profesionalni vyrobci HW/SW, pokud nechteji, aby doslo vyzrazeni programu a naslednemu kopirovani jejich vyrobku. Takze to zbyva jen zkusit.
Prikladam kopii souvisejiciho anglickeho textu z datasheetu AT89C2051:
On the chip are two lock bits which can be left unprogrammed (U) or can be programmed (P) to
obtain the additional features listed in the Table 8-1.
Note: 1. The Lock Bits can only be erased with the Chip Erase operation.
Table 8-1. Lock Bit Protection Modes(1)
Program Lock Bits
LB1 LB2 Protection Type
1 U U No program lock features
2 P U Further programming of the Flash is disabled
3 P P Same as mode 2, also verify is disabled
Email:vyhnaz1@fel.cvut.cz
To Hohy :
niesom neaky skuseny clovek v tychto veciach, ale skus odpojit kondenzatory, ktore su pripojene nedzi Xtal1 (Xtal2) a zem. Su to tie male, pikofaradove. Kamarat mal rovnaky problem, chcel vyskusat tie kondiky vymenit za neake s inou kapacitou, ale spustil to, ked ich mal odpajkovane, a funguje mu to stale, tak ako ma. tak ich tam potom ani nedaval, i ked podla datasheet-u od vyrobcu by tam maly byt. Vyskusaj
To Hohy : místo jednoduchého zapojení s krystalem a dvěma kondíky radši použij zapojení s invertory jak již někdo psla výše, toto zapojení používám a nikdy jsem s ním neměl problémy, kdosi tu zmínil přerušení - tím to pravděpodobně nebude protože se musí nejdříve zapnout. Nejpravděpodobněji bude chyba v resetovacím obvodu, přidej tam ten odpor a nastav časovou konstantu tak na cca 200-500ms, jde někomu zobrazit to schéma?
To xp : K Hardware:
Obvod oscilátoru je jednoduchý a spolehlivý, pokud se zapojí krystal mezi piny 4 a 5 a oba piny se navíc připojí přes keramický kondenzátor 33pF na zem napájení (pin 10 čipu). Krystal nesmí mít frekvenci vyšší než 24MHz.
Resetovací obvod funguje spolehlivě, je- li pin 1 připojen přes elektrolytický kondenzátor 10uF na VCC (pin 20 čipu) a zároveň přes rezistor cca 10Kohm na zem napájení (pin10 čipu). Pozor na polaritu kondenzátoru, kladným pólem připojit na VCC.
K software:
Na adrese 0 by měla být instrukce skoku za část programové paměti, která je určena pro vstupní body rutin ošetřujících přerušení. U tohoto čipu stačí skákat na adresu 30h a vyšší. Je dobré všechny vektory přerušení, které se nepoužívají, ošetřit prázdnou rutinou, tedy instrukcí RET.
K výsledkům práce:
To, že LED svítí, ještě nemusí být pravda. Může totiž blikat vysokou frekvencí, takže se to jeví, jako že svítí. Smyčka "nav1" má 3 strojní cykly opakované 200x, což je 600 cyklů. Tato smyčka se přes "nav2" opakuje zase 200x, tedy perioda je 120000 cyklů. Při frekvenci krystalu 24 MHz trvá jeden stojní cyklus 0,5 us. Smyčka je tedy dlouhá 60 ms, což je doba, po kterou LED svítí, stejnou dobu je zhasnutá. Jinými slovy cca 8x za sekundu blikne.
Jsem na tomto fóru poprvé, tedy něco o mě: Zabývám se profesionálně návrhy zařízení s jednočipovými mikrokontroléry rodiny MSC51 pro různé účely, např. pro distrubuované periferie CNC systémů, vyhodnocovací a indikační jednotky měřících zařízení, řídící jednotky spalovacích motorů aj.
těch důvodů proč ti to nefunguje muže bejt víc.
1/ jestli máš starou verzi AT89C2051 tak to nebyl procesor ale programovatelný logický pole. firma si to v počátcích takhle zjednodušila. a bohužel byly poněkud nestabilní při "nestabilním" napájení a hlavně i při malých přepětích a kolísání napětí a pak to blblo. zasekával se a resetoval se
2/ kondenzátory u krystalu musí být keramické a ideálně 15pF. Nedávej tam 33pF !!!. kondenzátory mohly odejít pokud si použil nějaký méně kvalitní a pak to takhle blbne. jestli máš 24MHz krystal tak použij 15 nebo lépe 10pF kondenzátory.
tady je manuál
https://ww1.microchip.com/downloads/en/DeviceDoc/doc0368.pdf
strana 4.
3/ stáhnout program z procerosu se dá pokud procesor není uzamčený. já mám stařičký programátor od téhle firmy: https://www.elektro-obecnice.cz/ ale je to pro MSDOS a na připojení na LPT1: port. funguje to ok. Není to InSystemProgrammable. Viz obrázek níže. Firma ho dnes vyrábí už jen na žádost.
4/ Procesor se spustí i bez resetovacího obvodu ale pro reset ho potřebuješ. tady je schéma:
https://ww1.microchip.com/downloads/en/Appnotes/doc1489.pdf
reset vyvoláš připojením kladného napájecího napětí.
5/ moderní náhradou za stařičký AT89C2051 je AT89S2051. Bohužel je rychlejší a bude nutné upravit program, což se nevyplatí.
6/ Jinak AT89C2051 je klasická 8051 architektura se vším všudy.
7/ Moderní programátory na USB pod Win10 se daj sehnat všude možně ale sou docela drahý. levnější sou na Aliexpress. otázka je jestli k nim číňani dodávaj i programovací software.
Má smysl reagovat na téměř 16 let staré vlákno? Myslím, že buď problém vyřešil, nebo šel od toho a problém upadl v zapomnění.
hu
#18 JerryM
To tak nevadí, že vlákno začalo před 16 roky. Čas je relativní. Pro lidi, kterým je dnes 20 let, vlákno začalo v jejich "pravěku". Pro mne, když mi je dnes 70, vlákno začalo nedavno.
Porouchal se mi zdroj v počítači, který jsem koupil v květnu 2004. Počítač běžel 20 let non-stop ve dne v noci. Celých 20 let. Byly na něm XP a sloužil jako server pro úložiště. Počítač měl zdroj 450 Watt, který je 3x menší nerž dnešní 450 watt zdroje. Počítač jsem tedy zatím odstavil a vytahnul jsem jiný starší počítač, pomalejší z roku 1998. Má ještě paralelní port. Ale funguje :) a to je důležitý.
Mimochodem, těch procesorů, které se dělají formou hradlových polí je docela dost. Stává se z toho jakási móda. V Číně existuje firma Western Digital Corporation, která parazituje jménem na původní americké firmě Western Digital Corp. Tato čínská WDC vyrábí většinu součástek formou hradlových polí a to i starých , dávno nevyráběných součástek. Jsou to novodobé náhražky, bohužel ne vždy kompatibilní.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
AT89c2051 a PRESTO — založil mvlach
ATMEL AT89C2051 — založil stepaivo
AT89C2051-kopie programu — založil Pavel-H
AT89C2051 regulace PWM — založil Hopr2
Nokia 3310 LC display VS. AT89C2051 — založil bond005