Un dialogo difficile con m5450

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

Un dialogo difficile con m5450

Postby Reset » 27 Aug 2012, 10:27

Salve a tutti , bentornati dalle vacanze .
Mi ritrovo a far dialogare un m5450 con un atmel at90s8515
per visualizzare su 4 display dei dati .
Ho provato con il shiftout , spiout , un ciclo di for simulando
i 34 bit piu' lo start e l'ultimo bit di clock per il load
ma non riesco a farli dialogare .
Qualcuno puo' essermi di aiuto ? suggerimenti e esempi
sono ben accetti .

Saluti , grazie
Reset
 
Posts: 14
Joined: 27 Aug 2012, 10:16
Location: Napoli

Re: Un dialogo difficile

Postby deluca » 27 Aug 2012, 13:31

@reset,
salve e benvenuto nel forum ufficiale italiano di bascom.

il tuo problema è solamente legato alla comunicazione con l'm5450 o hai problemi con la conversione in cifre?
prova a postare il codice o parte di esso per una veloce risoluzione del problema indicando la tua versione di bascom.

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: Un dialogo difficile

Postby Reset » 27 Aug 2012, 15:54

Grazie , invio parte del listato ,
il compilatore e' versione 1.11.9.5 e utilizzo come programmatore
la demo board stk 500

----------------------------------
Clock Alias Portb.1
Dato Alias Portb.0
Enbl Alias Portb.3

Clock = 0
Dato = 0
Enbl = 0


' bit start
Waitms 50
Clock = 1
Dato = 1
Waitms 50
Clock = 0
Dato = 0
Waitms 50

'--------invio 32 bit 4 x 7 segmenti + 4 dp

Shiftout Dato , Clock , A , 1 [ , 32 , 50000 ]

' 2 bit 33 34
Waitms 50
Clock = 1
Dato = 1
Waitms 50
Clock = 0
Dato = 0
Waitms 50
Clock = 1
Dato = 1
Waitms 50
Clock = 0
Dato = 0

'---bit load -------------------
Waitms 50
Clock = 1
Waitms 50
Clock = 0

End


----------

saluti Ciro
Reset
 
Posts: 14
Joined: 27 Aug 2012, 10:16
Location: Napoli

Re: Un dialogo difficile

Postby deluca » 27 Aug 2012, 20:23

ciao, ciro
allora ti allego uno codice completo con le subroutine necessarie per gestire il controller m5450 che ho scritto ed utilizzato in molti miei progetti.
Il tuo codice non avrebbe potuto funzionare poichè ci sono molti errori sulla gestione del timing.

Code: Select all
'-----[ gestione M5450 by Giovanni De Luca - INFN-LNS ]--------------------------------------
$regfile = "8515DEF.DAT"
$crystal = 8000000
$hwstack = 64
$swstack = 16
$framesize = 50

Declare Sub Reset_m5450_d
Declare Sub Write_m5450_d
Declare Sub Bit_start_d

Ddrb.0 = 1                                                  'DOUT 5450
Ddrb.1 = 1                                                  'CLOCK 5450

  Dout1 Alias Portb.0
    Ck1 Alias Portb.1
'  enbl a gnd

Dim Y(4) As Byte                                            'valori da inviare al display
Dim X As Byte
'-------------------------------------------------------------------------------
Do
    'qui scrivi il tuo codice main
    'assegna a Y[] i tuoi valori

Loop
'-------------------------------------------------------------------------------
End

'-------------------------[ write segmenti su display ]-------------------------
Sub Write_m5450_d

  Reset_m5450_d
  Bit_start_d
    For X = 1 To 4                                          '4 se devi scrivere 4 cifre
      Shiftout Dout1 , Ck1 , Y(x) , 1 , 8 , 1         'oppure togli la matrice Y e assegna 32 bit
    Next X

    For X = 1 To 3
      nop:Ck1 = 1
      nop:Ck1 = 0
      nop
    Next X
End Sub

'-------------------------[ bit start display ]---------------------------------
Sub Bit_start_d

   nop:Dout1 = 1
   nop:Ck1 = 0
   nop:Ck1 = 1
   nop:Ck1 = 0
   nop:Dout1 = 0
   nop
End Sub
'--------------------[ RESET segmenti su M5450 display ]------------------------
Sub Reset_m5450_d

 Bit_start_d
 For X = 1 To 35
   nop:Ck1 = 1
   nop:Ck1 = 0
   nop
 Next X
End Sub


se imposti il clock del micro a 8 mhz devi introdurre dei nop tra il set/reset dei segnali
visto che l'm5450 ha tempi di scrittura pittosto bassi: Input Clock Frequency = 0.5 Mhz

ciao, fammi sapere
Attachments
m5450.jpg
m5450.jpg (46.84 KiB) Viewed 5869 times
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: Un dialogo difficile con m5450

Postby Reset » 28 Aug 2012, 09:57

Ciao , non ho parole per ringraziarti
effettuo le prove e ti faccio sapere
saluti
Reset
 
Posts: 14
Joined: 27 Aug 2012, 10:16
Location: Napoli

Re: Un dialogo difficile con m5450

Postby Reset » 31 Aug 2012, 13:03

Tutto ok, grazie al tuo valido suggerimento
Ho dovuto solo sostituire il NOP con una pausa
utilizzando l'istruzione WAITUS impostando
il tempo a circa 100 us , cosa strana che il
compilatore che utilizzo non riconosce l'istruzione
NOP . avevo anche , totalmente ignorato il fatto che
rispetto al tipo di cpu in uso l 'M5450 è alquanto lento
a immagazzinare i dati .
Ancora grazie ..... al prossimo post
Reset
 
Posts: 14
Joined: 27 Aug 2012, 10:16
Location: Napoli

Re: Un dialogo difficile con m5450

Postby deluca » 31 Aug 2012, 13:12

ti consiglio di aggiornare alla versione ultima 2.0.7.5 .....
visto che il compilatore è in continuo aggiornamento e vengono effettuati molti fix con relativo add-on di nuovi micro (vedi xmega).

per il NOP non riconosciuto puoi provare !NOP con il punto esclamativo davanti.
i 100uSec mi sembrano tanti prova ad abbassarli per ottimizzare la trasmissione.
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)


Return to BASCOM-AVR

Who is online

Users browsing this forum: No registered users and 5 guests

cron