Hjälp med Intel 87C196 MCU

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Hillman
Inlägg: 64
Blev medlem: 25 januari 2006, 09:22:20
Ort: Västerås

Hjälp med Intel 87C196 MCU

Inlägg av Hillman »

Sitter på en Intel 87C196CB microcontroller som jag har problem att få igång.

Har ett kort med en fungerande 87C196CA och har skrivit en enkel kod som bara blinkar dioder. -CB såg ut att vara så gott som pinkompatibel förutom ett par extra pinnar, främst för utökad adressering av externa minnen, vilket jag inte behöver. Största skillnaden var chip select som flyttats från AD15 på -CA till A19 på -CB eftersom 8-bits system används mot de externa minnena. Har inte hittat några egentliga skillnader i registerna heller som jag tror ska påverka.
Har självklart ändrat delar av koden som har med val av microcontroller att göra.

All kod körs från ett externt flashminne.
Kör tasking Software 80C196 program builder v4.0 r6 kompilator. Får ut en *.abs fil som konverteras till Intel HEX som i sin tur konverteras till Motorola S-record och på -CA var det även nödvändigt att ändra adresseringen för att det skulle fungera med externt minne, troligen behövs detta på -CB med.
Bränner sedan filen med Elnec MEMprog på ett AM29F010 minne.

På -CA lades hela programmet mellan 0x01A000-0x01FFFF. Har testat ett par olika adresseringar på -CB men får inget att fungera. Kan ju tillägga att det var en del problem med konverterarna som inte stödde Motorolas S2 och S3-format fullt ut trots att de hävdade detta. Det fungerade till -CA eftersom all adressering från början var 16-bitars men ballade ur på -CB när addresseringen var 16-bitars i början av koden och sedan blev 24-bitars.
Jag har förhoppningsvis rättat till detta men om någon är bra på det området får ni gärna dubbelkolla att det är rätt.

Letar alltså efter någon som tror sig veta hur man får igång en 87C196CB från ett externt minne.
Användarvisningsbild
Icecap
Inlägg: 26654
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Hjälp med Intel 87C196 MCU

Inlägg av Icecap »

Oj då, den gamla häck...

Jag byggde en trippdator till bilen med den processor i sin tid men då med en 80C196 där minnet var externt från början. Jag antar att det är ett gammalt projekt du pysslar med, processorn har ju varit ur produktion sedan runt '92.

Och jag minns tyvärr inte inställningarna men jag vet att det var lite pyssligt att få till dom första gången.

Jag testade med en Dataman S4 som "fusk"-EPROM, när allt väl fungerade var det bara att bränna en riktig.

Men få se nu... 87C196 är den med inbyggd programminne efter vad jag minns, den kunde ha externt OCKSÅ men den bootar på det interna (fortfarande enl. minnet). Alltså måste du antingen lägga in en snudd som bootar och sedan går till det externa minne för att exekvera eller också måste du dela upp programmet till att köra delvist på det interna och delvist på det externa.
ds77
Inlägg: 2460
Blev medlem: 24 juli 2008, 09:38:07
Ort: småland

Re: Hjälp med Intel 87C196 MCU

Inlägg av ds77 »

Sidan 4-6 i detta dokumentet verkar ha lite information om att boota från externt minne: http://notes-application.abcelectroniqu ... -46398.pdf

Men jag har aldrig jobbat med dessa så jag har ingen erfarenhet.
Hillman
Inlägg: 64
Blev medlem: 25 januari 2006, 09:22:20
Ort: Västerås

Re: Hjälp med Intel 87C196 MCU

Inlägg av Hillman »

Stämmer att det är gamla grejor i ett gammalt projekt. -CA:n går inte att få tag i längre men vi har fått tag i en batch -CB som ska räcka produktens livslängd. Såg enkelt ut från början att byta men fanns tydligen en del på vägen som kunde ställa till problem. Som vanligt med gamla grejor så har alla som var med från början försvunnit och dokumentation är ganska bristfällig.

Ja det är helt riktigt att det som skiljer mellan 80 och 87 är det interna minnet, men det är inget som används här. Det ska räcka med att hålla #EA låg så bootar den direkt från det externa minnet.

Står att -CA startar från 0x2080 vid reset och -CB från 0xFF2080 (internt minne) eller 0x0F2080 (externt minne).
När man kompilerar koden till -CA hamnar all kod från 0x2080 som sedan flyttas upp i minnet till 0x01A000 och det fungerar bra.
När man kompilerar koden till -CB får man en snutt kod på 0x2000, vilket man inte får till -CA, och sedan kommer resten av koden på 0xFF2080.
Det fungerar inte med adresserna som kommer ut från kompilatorn och jag har testat att flytta runt både 0x2000 och 0xFF2080 till ett otal adresser utan framgång.

Programmeraren klarar att bränna intels hex-filer också men jag antar att man konverterar till Motorolas format för att göra omadresseringen enklare. Det kan ju möjligen bli fel i konverteringen eller omadresseringen fortfarande, eller så kanske jag inte klurat ut rätt adresser än. Kan till och med vara så illa att det är nåt knas på pcb-nivå men jag har inte hittat nåt när jag mätt.

Ska kolla den länkade pdf:en och gå igenom allt igen och se om man hittar nåt nytt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hjälp med Intel 87C196 MCU

Inlägg av sodjan »

> När man kompilerar koden till -CB får man en snutt kod på 0x2000, vilket man inte
> får till -CA, och sedan kommer resten av koden på 0xFF2080.

Kan det vara så att kompilatorn behöver veta hur man tänker köra
med den där #EA pinnen ? Det verkar ju logiskt om den skapar ett
"boot-block" intern *om*man tänker starta från interna minnet.
Och det *kan* ju vara default läget...

Kolla switcharna till kompilatorn ifall det finns något som verkar
påverka detta.

Nu så ar väl detta en skillnad mellan 80 och 87, inte mellan CA
och CB, men i alla fall... :-)
Skriv svar