Problem med ADuc831 og externe adresser

Jeg håber, at det er den rette gruppe!

Jeg har en ADuc831, som driller mig lidt.

For at skrive til et LCD-display har jeg lavet noget adresse- og datadekodning på P0 og P2. Ligemeget hvad jeg skriver ud til adressen F0xx er alle portben høje, men der er aktivitet på ALE.

Som jeg har forstået det, skal der ikke indstilles til externe data ved hjælp af nogle ben på IC-en! Hvad skal jeg gøre for at læse/skrive data vha en extern adresse?

Mvh Kurt

Reply to
Kurt G
Loading thread data ...

Hej Flash/EE Program Memory

The ADuC831 provides 62 kBytes of Flash/EE program memory

to run user code. The user can choose to run code from this

internal memory or run code from an external program memory.

If the user applies power or resets the device while the EA pin is

pulled low, the part will execute code from the external program

space, otherwise the part defaults to code execution from its

internal 62 kBytes of Flash/EE program memory. Unlike the

ADuC812, where code execution can overflow from the internal

code space to external code space once the PC becomes greater

than 1FFFH, the ADuC831 does not support the rollover from

F7FFH in internal code space to F800H in external code space.

Instead the 2048 bytes between F800H and FFFFH will appear

as NOP instructions to user code.

Du skal enten køre dit display med alm. I/O pins, eller bruge extern flash også.

Jeg vil foreslå du bruger I/O pins til at kontrollere displayet, hvis du har lyst, har jeg kode der må passe rimelig godt, den kører i al fald på aduc848 og 836

Kasper

Reply to
Kasper

"Kasper" skrev i en meddelelse news:474ef270$0$90273$ snipped-for-privacy@news.sunsite.dk...

Det var dog irriterende! Så vil jeg vælge at bruge portene i stedet, jeg har eller snøret al hardvaren til dekodningen op på protoboard, men det kan da pilles af igen.

Og jatak, du må gerne sende mig din kode; man siger vel aldrig nej til gratis hjælp.

Tak for hjælpen. Kurt

Reply to
Kurt G

Hej Kurt.

"Kurt G" skrev i en meddelelse news:474e8bda$0$90275$ snipped-for-privacy@news.sunsite.dk...

Jo, det tror jeg det er.

Sådan kan det jo gå.

Det lyder underligt. Har du sat en latch på port 0 ? Hvordan måler du denne spænding (voltmeter/scop) ?

Sådan mener jeg også det er.

Jeg mener at 8051's arkitektur gør at hvis du addresserer extern RAM, skal du bruge:

(koden her kopierer fra et sted i ekstern RAM til et andet) void io2ram(xdata U8 *dst, xdata U8 *src, U16 size) { while(size--) { *dst++ = *src++; } } Det der er vigtigt her er at du bruger xdata. (jeg kan ikke huske hvordan man gør det med Keil) Du kan læse om de forskellige områder her:

formatting link

Dokumentationen kommer fra SDCC, der er en gratis compiler til 8051. Jeg har selv haft meget glæde af denne compiler, da den er gratis og laver noget fornuftig kode. - du kan evt læse dens dokumentation igennem.

formatting link

Mvt Toke

Reply to
Toke Dupont Koustrup

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.