Aiuto per registerfile.dat in BASCOM-8051

Sezione dedicata al sistema di sviluppo BASCOM-AVR per i micro AVR
At90s, Attiny, Atmega e Xmega

Aiuto per registerfile.dat in BASCOM-8051

Postby Henk » 21 Oct 2013, 08:55

Buongiorno a tutti,
devo fare un cambio componente e passare, con stessi codice e PCB, da un P89CV51 obsoleto ad un AT89C51RC2RLTUM.
Ho realizzato quindi un registerfile ma ho poca esperienza nel settore e non riesco a venirne a capo.
In pratica:
* seguendo le istruzioni dell'help (sezione Internal Registers) ho dato un indirizzo corretto a tutti i registri indicati in tabella (quelli del file Reg51.dat) ma il micro non funziona (si muove solo il quarzo...)
* ho quindi rifatto il file di configurazione con tutti gli SFR bit-addressable e non, presi dal datasheet del componente ed ho ottenuto il file che ho incollato di seguito; purtroppo però il Bascom non termina la compilazione, si blocca sulla linea ENABLE INTERRUPTS ed esce con errori vari (Illegal asm-command, Internal assembler error, ecc..)!
* se però, in quest'ultimo file, sostituisco solo IEN0=A8,00 con IE=A8,00 allora il file diventa compilabile senza errori ...ma una volta caricato sul micro non funziona comunque!

Qualcuno può aiutarmi a risolvere questo problema?
Grazie
Buona giornata

Code: Select all
[BIT]

B = F0 , 00
ACC = E0 , 00
CCON = D8, 00
PSW = D0 , 00
T2CON = C8 , 00
IPL0 = B8 , 00
P0 = 80 , FF
P1 = 90 , FF
P2 = A0 , FF
P3 = B0 , FF
IEN0 = A8 , 00
SCON = 98 , 00
TCON = 88 , 00

[BYTE]
CH = F9 , 00
CL = E9 , 00
CMOD = D9 , 00
FCON = D1 , 00
T2MOD = C9 , 00
SADEN = B9 , 00
IEN1 = B1 , 00
SADDR = A9 , 00
SBUF = 99 , 00
TMOD = 89 , 00
SP = 81 , 07
CCAP0H = FA , 00
CCAP0L = EA , 00
CCAPM0 = DA , 00
RCAP2L = CA , 00
IPL1 = B2 , 00
AUXR1 = A2 , 00
BRL = 9A , 00
TL0 = 8A , 00
DPL = 82 , 00
CCAP1H = FB , 00
CCAP1L = EB , 00
CCAPM1 = DB , 00
RCAP2H = CB , 00
SPCON = C3 , 14
IPH1 = B3 , 00
BDRCON = 9B , 00
TL1 = 8B , 00
DPH = 83 , 00
CCAPL2H = FC , 00
CCAPL2L = EC , 00
CCAPM2 = DC , 00
TL2 = CC , 00
SPSTA = C4 , 00
KBLS = 9C , 00
TH0 = 8C , 00
CCAPL3H = FD , 00
CCAPL3L = ED , 00
CCAPM3 = DD , 00
TH2 = CD , 00
SPDAT = C5 , 00
KBE = 9D , 00
TH1 = 8D , 00
CCAPL4H = FE , 00
CCAPL4L = EE , 00
CCAPM4 = DE , 00
WDTRST = AE , 00
KBF = 9E , 00
AUXR = 8E , 00
IPH0 = B7 , 00
CKCON1 = AF , 00
WDTPRG = A7 , 00
CKRL = 97 , FF
CKCON0 = 8F , 00
PCON = 87 , 10

[MISC]
I_TIMER2 = 2B
I_PCA = 33
up = AT51RC2
IRAM = 256
org = 36
clockdiv=12
Henk
 
Posts: 12
Joined: 21 Apr 2013, 10:51

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby Fagos » 21 Oct 2013, 14:48

salve Henk e benvenuto al forum.
Vista la natura del problema ti consiglio di allegare oltre che al file .dat anche il sorgente, se possibile.
Quella è sempre la strada più semplice se cerchi aiuto concreto.
User avatar
Fagos
 
Posts: 100
Joined: 31 Aug 2011, 15:01

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby deluca » 21 Oct 2013, 17:50

@HENK, benarrivato, la tua iscrizione risale ad aprile 2013 e posti solo adesso? te la sei presa comoda... :D

quale versione di Bascom-8051?
quale programmatore?, potresti postare lo schematico delle connessioni del chip?

e come già anticipato da fagos, poter dare uno sguardo al sorgente potrebbe essere di grande aiuto.
sera
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby Henk » 21 Oct 2013, 22:55

Ciao. ...in realtà ero convinto di aver già postato qualcosa al momento dell'iscrizione, ma probabilmente ho solo pensato di farlo! :?

Allora: Bascom-8051 V.2.0.14.0 e come programmatore uso FLIP V.3.4.7.
In allegato c'è:
1) la parte di schema con micro NXP P89CV51RD2 che funziona perfettamente; la versione con l'AT89C51RC2 è identica e la sua programmazione avviene via seriale e non ISP chiudento JM1.
2) l'immagine della schermata Bascom con l'errore di compilazione che si ottiene usando il fileregister.dat già postato stamani: come si vede si blocca sull'ENABLE INTERRUPT. Come scrivevo, sostituendo nel fileregister.dat IEN0 con IE l'errore non si verifica più ...ma poi non funziona lo stesso.
3) un pezzo di codice molto semplice che già non funziona (mi aspetto la stampa di un CIAO).

Cosa si può fare??? :?:
Grazie
Ciao
Attachments
test_AT.BAS
(5.71 KiB) Downloaded 444 times
N89CV51RD2sch.GIF
N89CV51RD2sch.GIF (31.61 KiB) Viewed 11512 times
errore AT.GIF
errore AT.GIF (13.22 KiB) Viewed 11512 times
Henk
 
Posts: 12
Joined: 21 Apr 2013, 10:51

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby deluca » 22 Oct 2013, 11:31

Come mai non hai provato ad utilizzare il file dat 89C51RC ?

Ho provato a compilare il tuo sorgente includendo questo dat e il codice funziona perfettamente come vedesi dal capture.
img1.jpg
img1.jpg (82.14 KiB) Viewed 11508 times

Quali altri particolari registri hai necessità di manipolare, visto che hai già a disposizione il file dat?
PS. Funziona anche l' handler int0, che scrive SALVA sul display, anche se non ho postato l'immagine.
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby deluca » 22 Oct 2013, 13:17

Cmq,
anche usando il tuo dat-file, ma sostituendo IEN0 con IE il tutto funziona correttamente
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby Henk » 27 Oct 2013, 12:44

Ciao
grazie della risposta e scusa il ritardo ma sono fuori sede per lavoro e per qualche giorno sarò ancora limitato nella possibilità di fare test.
Rispondo:
sì, ho provato fin da subito a compilare con 89C51RC.dat ma non funzionava e per questo motivo ero passato a scrivere quello personalizzato (AT51RC2 che avevo allegato).
Non riesco a dare una spiegazione... vedo che in simulazione funziona, ma all'atto pratico il micro dorme alla grossa nonostante si lasci programmare...
Per assurdo resta ancora da capire se uso correttamente FLIP: carico l'hex, RUN nella colonna Operation Flow e quindi START APLICATION con Level0. Oppure sia proprio dovuto alla tipologia del micro AT89C41RC2RLTUM??? :?
Posso ancora chiedere questo al forum: avevo provato a liberarmi di tutti i fronzoli per fare la cosa più semplice del mondo cioè un'onda quadra a 50Hz sulla linea P1.7 e basta, ma non la fa. Al mio rientro mi dedicherò alla cosa full immersion ...ma se qualcuno avesse voglia di provarlo praticamente su una sua scheda (il file è allegato) sarebbe interessante vedere se funziona! E' stato compilato con il .DAT allegato.
Grazie
Attachments
TEST_AT1.HEX
(373 Bytes) Downloaded 411 times
test_AT1.BAS
(256 Bytes) Downloaded 420 times
Henk
 
Posts: 12
Joined: 21 Apr 2013, 10:51

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby deluca » 27 Oct 2013, 14:39

ciao Henk,
purtroppo non ho a portata di mano una scheda con quel particolare micro.
Posso solo dirti che l'hex in emulazione hardware funziona perfettamente generando l'onda quadra.

Hai provato con altri chip?
Sei certo che tutte le connessioni sul pcb siano corrette?
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby Henk » 30 Nov 2013, 16:40

Ciao,
finalmente, dopo alcune trasferte ho potuto ritornare a lavorare sulla scheda e fare i dovuti test. Avevi ragione ...funzionava tutto, bastava accorgersi che si era subdolamente strappata la pista del RST! Riattivata la pista ho potuto confermare ciò che hai scritto.
Ma purtroppo non è ancora finita, anche se in linea di max il programma funziona quasi per intero. Ha solo un difetto: alla riaccensione perde i dati memorizzati nella extRAM nonostante sia dotata di backup (come da schema all'inizio della discussione).

Il problema è diverso ma più localizzato e accade solo per partenza a freddo.
Il mini programma che permette di dimostrare questo è in allegato (estratto dal programma principale) e lo descrivo:
1) dichiaro come Byte due variabili in extRAM: Tot_utenze e Tipo_lingua. Tali variabili vanno a localizzarsi nelle locazioni 0 e 1 (vedi file .RPT allegato)
2) stampo sulla prima riga del display il valore di Tipo_lingua (alla prima accensione mi aspetto un numero casuale) e, per controllo, estraggo lo stesso dato anche con Inp e lo stampo sulla seconda riga.
3) incremento Tipo_lingua in RAM e poi mi fermo

I risultati sono 3, a seconda del tipo di start effettuato:
*) All'accensione (cold start) mi aspetto di vedere il valore precedente di Tipo_lingua incrementato di uno ed INVECE compare quasi sempre 109 (talvolta 45). Il dato della seconda riga conferma che in RAM c'è proprio quel numero.
**) Se faccio semplicemente un RST del micro (warm start) il valore di Tipo_lingua incrementa regolarmente di un punto e così via per ogni altro RST seguente. Cioè ha senso.
***) Se faccio una serie di RST e porto regolarmente Tipo_lingua ad es. a 200 e poi spengo, alla riaccensione c'è il solito 109.
E' come se la RAM non avesse la batteria, ma c'è e funziona!

Altre info:
A) non cambia nulla anche se uso Out per scrivere direttamente alla locazione 1
B) se uso una variabile che ha diversa locazione in RAM (es. indirizzo 724) tutto funziona! Questo escluderebbe problemi di backup di RAM.
C) il file è stato compilato con 89C51RC.dat
D) Lo stesso mini programma caricato sul vecchio P89CV51RC2 non ha problemi.

Cosa ne pensi? E' assurdo oppure ha un senso logico?
Grazie
Ciao

Code: Select all
$crystal = 22118400
$regfile = "89C51RC.dat"
$baud = 9600
$large
$default Xram

Config Lcd = 20 * 2
Config Lcdpin = Pin , Db4 = P2.4 , Db5 = P2.5 , Db6 = P2.6 , Db7 = P2.7 , E = P3.4 , Rs = P3.3
Cursor Off                                                    'spengo il cursore

Dim B1 As Iram Byte
'************** variabili da mappare in XRAM
Dim Tot_utenze As Byte
Dim Tipo_lingua As Byte

Locate 1 , 1 : Lcd "lingua=" ; Tipo_lingua

B1 = Inp(1)
Locate 2 , 1 : Lcd "ram=" ; B1
Tipo_lingua = Tipo_lingua + 1
End
Attachments
TEST_AT3.BAS
(627 Bytes) Downloaded 407 times
Henk
 
Posts: 12
Joined: 21 Apr 2013, 10:51

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby deluca » 30 Nov 2013, 20:21

Ciao Henk,
prova a non usare il "$default Xram",
dimensiona le variabili usando banalmente la direttiva Xram
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby Henk » 01 Dec 2013, 12:28

Ciao,
grazie per la risposta.
Ho provato a remmare "$default XRam" e a dimensionare le variabili come "Dim ...as XRam byte" ma non cambia nulla.

Con un analizzatore di stati ho però finalmente scoperto l'inghippo: fino all'indirizzo 255 incluso il micro non parla con la RAM esterna!!!!!
Per determinarlo, molto semplicemente ho scritto:
for k = 1 to 1000
out k, 5
next k
e il primo dato che passa all'esterno è quello all'indirizzo 256.
E' ovvio quindi che la XRAM con backup dimenticava i dati ...in realtà restavano in internal RAM!

Ora il problema è ben più delineato e la domanda pure: come si fa a far lavorare il uP con la XRAM fin dall'indirizzo 0??

Grazie
Buona domenica
Henk
 
Posts: 12
Joined: 21 Apr 2013, 10:51

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby deluca » 01 Dec 2013, 12:42

Salve Henk,
mi sembrava tutto scontato....
l'8051 ha mappato in memoria tutte le periferiche tra cui la memoria ram interna.....
alcune vecchie versioni avevano solamente 127byte altre 255...

Ora se tu vuoi scrivere sulla Xram devi configurare l'inizio della prima locazione esterna e la quantita di locazioni dedicate alla Xram.

$RAMSTART = valore
$RAMSIZE = &H1000

prova a modificare il valore nella direttiva $RAMSTART secondo tue necessità e vedrai che risolverai il prb.

ciao
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby Henk » 02 Dec 2013, 00:17

EVVIVA!!!
Non mi sembra vero: con $RAMSTART=$H0100 finalmente tutto funziona!

In ogni caso ho ancora qualche curiosità da soddisfare ...ne parliamo nei prossimi giorni.
Per ora ancora GRAZIE
Ciao
Henk
 
Posts: 12
Joined: 21 Apr 2013, 10:51

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby deluca » 02 Dec 2013, 08:09

Benissimo Henk,
sono contento di averti aiutato a risolvere il prb :)
Ciao
Il mio sito: http://www.delucagiovanni.com ......e la chat: chat/
User avatar
deluca
Site Admin
 
Posts: 1104
Joined: 19 Jun 2011, 10:44
Location: 95123 - Catania (Italy)

Re: Aiuto per registerfile.dat in BASCOM-8051

Postby pier » 02 Dec 2013, 13:33

Non ho esperienza di Xram ma effettivamente avevo avuto subito l'impressione che il problema fosse legato al RAMSTART. Quel che mi aveva un po' lasciato perplesso erano i risultati "ballerini" dei test del 30/11. Specialmente quel 109 e 45...
pier
 
Posts: 115
Joined: 11 Aug 2013, 22:05


Return to BASCOM-AVR

Who is online

Users browsing this forum: No registered users and 20 guests

cron