Page 1 of 1

Come configurare ATxMega128A1

PostPosted: 11 Jul 2012, 11:12
by filosofo
Scusate,
fino ad adesso ho realizzato qualche progettino con Atmega328, quello montato su arduino.
Vorrei passare alla famiglia XMega di Atmel, c'è qualcuno che potrebbe dirmi come configurare l'hardware, almeno le cose
fondamentali, tipo cristallo, baud, memoria ?
Purtroppo ho visto che è molto più sofisticato degli atmega normali e ci sono molti più registri da configurare. :shock:

Ho a disposizione il modello Xmega128a1 che mi sembra tra i più performanti.... giusto?

vi ringrazio
ciao

Re: Come configurare ATxMega128A1

PostPosted: 11 Jul 2012, 11:29
by flz47655
Purtroppo ho usato solo AtMega, ti conviene partire dal datasheet e da qualche schema online secondo me..

Ciao

Re: Come configurare ATxMega128A1

PostPosted: 17 Jul 2012, 08:39
by deluca
Se ti può essere di aiuto, (visto il ritardo nel risponderti) ecco un esempio su come configurare un ATxmega128a1.
Il codice configura l'adc, acquisisce e spedisce i dati sulla seriale.

Code: Select all
$regfile = "xm128a1def.dat"
$crystal = 32000000
$hwstack = 64
$swstack = 64
$framesize = 64

'abilita l'oscillatore
Config Osc = Enabled , 32mhzosc = Enabled

'configura il systemclock
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1

Config Com1 = 19200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8

Print "ADC test"

'configura l' ADC-A
Config Adca = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , Reference = Int1v , Event_mode = None , Prescaler = 32 , Ch0_gain = 1 , Ch0_inp = Single_ended , Mux0 = &B000_00 , _
Ch1_gain = 1 , Ch1_inp = Single_ended , Mux1 = &B1_000 , Ch2_gain = 1 , Ch2_inp = Single_ended , Mux2 = &B10_000 , Ch3_gain = 1 , Ch3_inp = Single_ended , Mux3 = &B11_000

Dim W As Word , I As Byte , Mux As Byte
Do
  Mux = I * 8                                             
  W = Getadc(adca , 0 , Mux)                               
  Print "RES:" ; I ; "-" ; W
  Incr I
  If I > 3 Then I = 0
  Waitms 500
Loop Until Inkey(#1) = 27

End                                                         'end program



PS. Il codice non usa il DMA, dai un'occhiata al DMA e vedrai i vantaggi che esso può dare.