Jak si v dnešní době stojí čip AT90S8515? Existuje náhrada?

Zdravím
Sehnal jsem si tuto knihu ze zaměřeným na výuku programovacího jazyka C a popis popis a práce ve vývojovém prostředí CodeVisionAVR C tam jsou příklady na mikrokontrolér AT90S8515 tak se ptám jak si v dnešní době si stojí tento čip AT90S8515, a vůbec hierarchie u atmelů který byl první a který je nejlepší a jak si stojí AT90S8515 a tak dále? díky.

:arrow_right: administrator: přejmenováno z "Kniha Mikrokontroléry ATMEL AVR programování v jazyce C"

Má se to tak, že výroba konkrétně tohoto procesoru byla ukončena.
Ale nevěš hlavu. Jako náhradu vyrábí ATMega8515. :smiley:
Nevím však, zda tam nejsou nějaké rozdíly.
Chce to projít datasheety.

Prakticky musíš mít zkušenosti s nějakým mikrokontrolérem od atmelu , picu nebo podobného MC.Poté je velice snadné si odvodit odlišnosti od staršího typu a typu , který bys chtěl používat.Pak jen pomocí datasheetu vyhledáš odlišnosti.
Z té knihy , jak si naspal v příspěvku , jsem si rovněž zkoušel nějaké ty example kódy , které tam jsou napsané a použil jsem pro testování atmegu128.

Můžeš použít jakýkoliv AVR procesor - jen si musíš k němu stáhnout datasheet, abys věděl jak má vývody -v některých detailech se liší třeba ten 90S8515 a Atmega 16, který je ve stejném pouzdru - a chceš-li něco na pokusy - tak doporučuju právě tu mega16 - má víc paměti, 8mi kanálový AD převodník a možná nějaké další výhody - prostě takový universál na zkoušení

mega16 už je docela obstarožní kousek (ale na 90s ještě nemá :slight_smile:). Doporučil bych spíš megu88 případně bratříčky s více paměti (m168, m328). Vzhledem k výbavě má výbornou cenu (33,- v TME bez přihlášení). Tedy pokud nevadí jen 24 I/O. U výrobce se můžeš podívat na výbavu jednotlivých typů.
atmel.com/dyn/products/param … ection=ASC

Zdravím
Po krátké době se sem vracím a potřebuji se ujistit jestli mohu použít ty příklady které jsou v té knize bez úprav na typ který tady byl uveden ATmega162 a taky kde bych si je mohl stáhnout ?to doprovodné CD jsem asi kdesi pozbyl protože ho nemohu najít díky.
A ještě si chci zeptat jestli na to stačí programátor pier.own.cz/index.php?text=5-isp … vr-atmega8 s PonyProg2000

Díky bohu nemůžeš. S trochou štěstí tě to donutí jen neopisovat, ale i trochu přemejšlet a číst datasheety :wink:
Ponyprog megu162 umí. Pokud tedy programátor správně sestavíš, měl by fungovat. Potřebuje však úplný RS-232. Redukce do USB nemusí fungovat.

Já jsem začínal na PICích konkrétně s knihou Učebnice programování PIC od Václava Vacka a tam konkrétně PIC16F84 a já postupoval krok za krokem a na víc v asembleru, z jazykem C moc neumím tak jsem si říkal že se při tom naučím Céčko tak sháním něco tutového abych nehledal problém v atmelu přitom měl spatně napsanou špatnou syntaxi v céčku,tady jsem se dozvěděl že AT90S8515 neseženu tak co s tím?díky

Dovolím si nesouhlasit - úplně klidně můžeš - já jsem začínal se stejnou knihou na mega8 jediné co změníš je příslušný header (#include <mega162.h>) a v configure project/chip zadáš ten typ který potřebuješ.
Ještě pak musíš - ale to platí pro všechny typy s JTAG interfacem ve fuse bitech zakázat JTAG - jinak ti nebudou fungovat výstupy PC4-PC7.

Se vším ostatním co pityy ale do puntíku souhlasím :wink:

Co se týče programátoru - asi by stačil- ale já jsem radši postavil STK 200/300 z lancos.com/prog.htm - podporuje ho i Codevision - nemusíš přepínat na Ponyprog - jenom klikneš na “švába” na liště.

Jinak na zkoušení si radši pořiď alespoń megu32 - kdysi mi to radil Martin - a já jsem ho neposlechl - ale teď s odstupem vidím, že jsem měl - stejně se časem k takovým procesorům dostaneš protože ti 16k paměti přestane stačit.

A toho CD nemusíš litovat - ono tam stejně není skoro nic co by sis (v novějších verzích) nestáhl z internetu.

Chceš tvrdit, že mega162 má stejné registry jako prehistorická 90S8515?
Kdyby psal v AVR studiu, nemusel by řešit hlavičkový soubor podle procesoru, stačil by mu jen “#include <avr/io.h>” a mimo jiné by se neučil ne-ansi C “vychytávky”, se kterýma bude mít později pouze problémy a nic jiného.

K tomu programátoru já mám panický strach něco připojovat na paralelní port kdybych si odpálil tak nemám kde připojit tiskárnu a řešit to přes převodník USB<>LPT1 to je pro mě komplikované,tak jak budou mi ti příklady fungovat na mega162? mimochodem mám doma Atmegu8-16PU s toto by nebylo možné použít do začátků? díky

Jak už jsem psal s mega8 jsem si kdysi ty příklady zkoušel a bez problémů.
Jediný problém ATmega 8 je v tom, že má málo vývodů má jen plnohodnotný portA a B a necelý portC proti třeba té 162 -portA,B,C,D + 2piny portE ale pozor nemá na rozdíl od mega 16 (32,34,64…) AD převodník ale jenom komparátor - určitě to budeš někdy potřebovat - tak si pořiď procesor ,který ADC má - i když je pravda , že mega8 k nim patří.
Taky je dobré mít SPI piny(MOSI,MISO,SCK+RST) rezervované jen pro programátor (nutné to samozřejmě není) a při použití LCD a maticové klávesnice (jeden z příkladů) to ani u megy8 nejde.
Takže abych to shrnul:

  1. ATmega8 kterou máš použít můžeš - za cenu přepisování části kódu.
  2. Místo té 8515 můžeš bez obav dát jakýkoli jiný typ, který má 4 plné porty a alespoň dva timer/countery z čehož jeden je 16 bitový- což jsou vlastně všechny sehnatelné v pouzdru DIL40 a ani nemusí být vývodově stejné -pokud už nemáš hotovou desku.

Ten první program jsem si opsal s tima Ledkami pouze jsem přepsal místo původního

#include <mega8.h>
#define xtal 8000000
#include <Delay.h>

unsigned char vystupLED1;
unsigned char vystupLED2;
void main(void)
{
DDRC=0xff;
vystupLED1=0x55;
vystupLED2=0xAA;
while (1)
  {
    delay_ms(500);
    PORTC=vystupLED1;
    delay_ms(500);
    PORTC=vystupLED2;
   }
}

ale teď vidím že je to připojeno na PortC a ty píšeš že není celý můžu to vrazit na B a druhá věc tam v té knize není vůbec zmínka o fuces v Pony Prog2000 jak mám je nastavit abych si nezamkl tu megu8 nastavení oscilátoru a tak podobně?díky

Utohoto příkladu je to jedno- jen tam budeš mít o 1 ledku míň to je všechno.
S těma fuse bitama pro začátek vůbec nic nedělej - problém je jenom v tom,že defaultně je tam nastavený vnitřní oscilátor 1MHz -tak přepiš to #define xtal na 1000000 jinak by ti to blikalo 8x pomalejc.
A jinak v Ponyprogu stačí kliknout na “visací zámek” a okno s fuse a lock bity se ti otevře - když budeš připojený na procesor tak to zrovna načte ty které jsou nastavené.

Abych odpověděl i pityymu:
Alespoň ty co jsou potřeba k příkladům uvedeným v té knize určitě.
Pak nevím, jaký je rozdíl mezi napsáním direktivy pro jeden konkrétní typ a mezi užitím (pravděpodobně všeobjímající- neznám GCC) “#include <avr/io.h>” - ale pokud vím tak i ten má headery pro jednotlivé typy.

A docela by mě zajímalo co myslíš těma ne-ansi C “vychytávkama” - myslíš to na co si stejně každý vytvoří svoje makra, nebo fukce? Nikdo tě nenutí je používat a i v CV můžeš použít tvoje oblíbené x = PINA& (1<<PINA1); místo tak “nepochopitelného” x=PINA.1;.

Né že by to nebylo pochopitelné, ale jinde než CVavr mu to nebude chodit a bitové operace se tím nenaučí. Těch nestandartních operací je tam více, ale musel bych hledat.

Registrů u M162 je stejná jen velká část(když neuvažuji ty co má m162 navíc), ale ne všechny. Porty a základní funkce časovačů, které umí 90s8515 by měly chodit i na m162. Třeba s uartem už možná nepochodí.
Zatím je u blikání, tak věřme, že až bude odlišné funkce procesoru, tak si už dokáže domyslet kde je chyba.

Jednotlivé headery GCC má také, jen tam není nutné ho určovat ručně, právě io.h vybere ten správný dle nastavení projektu.

Jen tak pro zajímavost - je možnost se v CV podívat do výsledného asm jesli přeloží manipulaci s jedním pinem pomocí PORTx |= 1<<Pxn; jako “sbi” nebo in, ori, out?

Problém je v tom že jsem už něco nahrával a tudíž nejsou nastaveny fuces od výroby ale mám to takto jak to mám přenastavit? a vůbec není to někde popsané co která ta pojistka nastavena ale v češtině!!!? :blush:a ještě něco u toho příkladu nejsou hodnoty těch rezistorů dále není uvedeno jaké led jestli klasické nebo nízko příkonové neposlední řadě napájení jestli stačí jedno nebo jak je to při programování dvě? díky.
fuces.JPG

Tohle by mělo být tovární nastavení, tedy interní RC oscilátor 1MHz.
S úpravou jak psal lou by ti to mělo běhat(bliká celej port C mimo pin PC6).
Pokud bys zrušil zaškrtnutí u CKSEL2 a zaškrtnul CKSEL0, pojede ti procesor na 8MHz. Význam pojistek je popsán v datasheetu, v angličtině samozřejmě. Jesli nemáš popsané pojistky v knížce, tak máš asi smůlu.

Stáhni si

rapidshare.com/files/315196879/Prace_s_mikrokontrolery_Atmel_AVR_ATmega16_-4.dil__David_Matousek.pdf

Je to tam popsáno v češtině.

zápis v C:
while (1)
{
PORTC |= 1<<PORTC1;
PORTC.1=1;
};

a překlad asm:
; 0000 0068 while (1)
_0x3:
; 0000 0069 {
; 0000 006A PORTC |= 1<<PORTC1;
00004d 9aa9 SBI 0x15,1
; 0000 006B PORTC.1=1;
00004e 9aa9 SBI 0x15,1
; 0000 006C };
00004f cffd RJMP _0x3
; 0000 006D }