XMega
Re: XMega
Xmega kontrollerhez szeretnék egy PDI programozót. Tudom lehet venni is de láttam a neten rajzot AT90USB162-vel azt építeném meg csak nem találtam hozzá hex file-t.
Re: XMega
A LUFA projekt része. Abban van HEX is.
Az AT90USB162 chip megszűnt gyártásban lenni...
Az AT90USB162 chip megszűnt gyártásban lenni...
Re: XMega
Helyette van új mert most fogtam panelgyártásba ami erre a csippre épül (nem a programozó) lehet még kell később is több, a boltban nem írják hogy kifutó típus.
Re: XMega
Ami a helyettesítő: ATMega16U2.
De ezekben van némi szoftveres eltérés (vö: AT90S2313 / ATTiny2313).
Viszont a 16U2 sok helyewn csak MLF tokban érhető el:(
De ezekben van némi szoftveres eltérés (vö: AT90S2313 / ATTiny2313).
Viszont a 16U2 sok helyewn csak MLF tokban érhető el:(
Re: XMega
"Xmega kontrollerhez szeretnék egy PDI programozót. Tudom lehet venni is de láttam a neten rajzot AT90USB162-vel azt építeném meg csak nem találtam hozzá hex file-t."
Megtaláltam a hex filet, készen is van, az AVR Studio látja is valószínűleg működik is (még nincs meg az xmega tqfp-dip adapter), csak nem értem hogy a Bascom-hoz hogyan kell beállítani hogy működjön vele.
Megtaláltam a hex filet, készen is van, az AVR Studio látja is valószínűleg működik is (még nincs meg az xmega tqfp-dip adapter), csak nem értem hogy a Bascom-hoz hogyan kell beállítani hogy működjön vele.
Re: XMega
A programozónak válaszd ki és a avrdude-s hex kell bele....
Re: XMega
Sziasztok!
Egy xmega32a3u vezérlővel küzdök. Azaz bármelyik spi buszt szeretném hw-ben használni, a program a print,input utasításnál kifagy. A clk-n nincs jel, és az "an#192" ben található progival is ez a helyzet.
mintaprogramok:
saját:
hackelt az an192-ből:
Egy xmega32a3u vezérlővel küzdök. Azaz bármelyik spi buszt szeretném hw-ben használni, a program a print,input utasításnál kifagy. A clk-n nincs jel, és az "an#192" ben található progival is ez a helyzet.
mintaprogramok:
saját:
Kód: Egész kijelölése
$regfile = "xm32a4udef.dat"
$crystal = 32000000
$hwstack = 128
$swstack = 128
$framesize = 120
$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014
Config Osc = Enabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
Config Priority = Static , Vector = Application , Lo = Enabled , Hi = Enabled
Config Com5 = 9600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
Open "COM5:" For Binary As #5
Dim S1 As Integer
Dim S3 As Long
Dim S2 As Long
Dim S4 As Long
Dim B As Byte
Dim F As Integer
Dim K As Byte
Dim Szinusz As Single
Dim Adat(100) As Word
Dim Ertek(100) As Word
'------------------------------------------------------------------------------------------------------------------
'---------------------------------------------------------------------------------------------
Dim Spiadat As Byte
Dim Spi_send_byte As Byte
Enc_cs Alias Porte.0
Config Porte.0 = Output
Enc_cs = 1
Config Spid = Hard , Master = Yes , Mode = 0 , Clockdiv = Clk128 , Data_order = Msb , Ss = None
Waitms 10
Open "SPID" For Binary As #12
Waitms 100
Cls
Do
Waitms 10
Reset Porte.0
Spi_send_byte = &HFE
Print #12 , Spi_send_byte
Set Porte.0
Print #5 , "szia"
Waitms 1
Loop
End
Kód: Egész kijelölése
' XMEGA SPI MASTER
' xmega_spi_master.bas
' This example should be used with xmega_spi_slave.bas or with xmega_spi_slave_interrupts.bas
$regfile = "xm32a4udef.dat"
$crystal = 32000000 '32MHz
$hwstack = 50
$swstack = 50
$framesize = 200
$lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014
'-------------------CLOCK CONFIGURATION-----------------------------------------
Config Osc = Disabled , 32mhzosc = Enabled ', 32khzosc = Enabled '32MHz and 32KHzenabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1 'CPU Clock = 32MHz
'Init and enable the DFLL (Digital Frequency Locked Loop) for automatic run-time calibration of theinternal 32MHz Oscillator
Osc_dfllctrl = &B00000000 'The internal 32.768 KHz Oscillator is used forcalibration
Set Dfllrc32m_ctrl.0 'Enable DFLL and auto calibration
'-------------------------------------------------------------------------------
Config Priority = Static , Vector = Application , Lo = Enabled 'Interrupt Setup
'---------------------CONFIGURE TIME, DATE AND RTC FOR SECOND TICK--------------
Config Date = Dmy , Separator = .
Config Clock = Soft , Rtc = 1khz_int32khz_rcosc 'Internal 32KHz
'COM Interface to PC (COM5 is PINE.6 and PINE.7)
Config Com5 = 9600 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
Open "COM5:" For Binary As #1
config porte.4 = output 'Slave Select Pin
set porte.4
Dim Select_bit As Bit
Reset Select_bit 'We start with 0
'CONFIG SPI MASTER on Port E
Config Spie = Hard , Master = Yes , Mode = 0 , Clockdiv = Clk32 , Data_order = Msb , Ss = None
Open "SPIE" For Binary As #10
Dim Array(10) As Byte
'Array(1) = incremented
Array(2) = 2
Array(3) = 3
Array(4) = 4
Array(5) = 5
Array(6) = 6
Array(7) = 7
Array(8) = 8
Array(9) = 9
Array(10) = 10
Const Start_of_frame = 111
Wait 3
Do
Print #1 , "szia"
'Second Tick from RTC
If Rtc_intflags.1 = 1 Then
Set Rtc_intflags.1 'Clear the Flag
Incr Array(1)
'SEND 10 BYTE ARRAY TO SLAVE
Reset Porte.4 'Select Slave
'SEND Start Byte then ARRAY WITH 10 BYTES
Set Porte.4 'Deselect Slave
Print #1 , Array(2) 'Print B to Serial PC connection
End If
Loop
End
Port-olvasás
XMEGA, portbit beolvasása érdekesen vacakol:
Naszóval amint hozzáérek a PIN0CTRL regiszterhez, onnantól nem jön be a port értéke. A CTRL regiszter írása jól működik, látom a fel/lehúzó/lebegő állapotokat a portlábon. Már minden variációt végigpróbáltam, adat befelé semmi... Elméletileg más regiszter nem tartozik (az INT kivételével) a porthoz.
Állítgatnom kellene a portok stílusát, ezért nyúlnék bele. Hol van a kutya elásva?
Kód: Egész kijelölése
const d_input_up = &b0001_1111
config pinb.0=input
'config portb= &b0000_1110
PORTb_PIN0CTRL=d_input_up 'io0 digit bejárat felhúzóval
do
if pinb.0=1 then
Lcdat 1 , 1 , "11111111"
else
Lcdat 1 , 1 , "00000000"
end if
wait 1
loop
Állítgatnom kellene a portok stílusát, ezért nyúlnék bele. Hol van a kutya elásva?
Re: XMega
Sziasztok!
Sokat szippantottam az MPU6050 gyro-val. Végre találtam egy használható kódot.
Íme:
Remélem tudjátok használni!
Sokat szippantottam az MPU6050 gyro-val. Végre találtam egy használható kódot.
Íme:
Kód: Egész kijelölése
' Source: www.roboternetz.de THX!!!
' Ez a kód Pro mini 328P-re készült (kínai)
' Benne van az eredeti, és amit én mókoltam hozzá (megjelenítés).
' Ez egy MPU6050 gyroscope kezelő program. (kínai)
' Az "Ugrik1" csak azért van benne, mert nem volt kedvem az összes sort kikommentelni.
' Használd egészséggel!
' Üdv:GomySoft
$regfile = "m328pdef.dat"
$crystal = 16000000
$baud = 19200
$hwstack = 200
$swstack = 200
$framesize = 400
'Config Portd.7 = Output
Config Sda = Portc.4
Config Scl = Portc.5
Config Twi = 100000
Declare Sub Read_gyro
Declare Sub Read_acc
Dim Tmp_gyrox(2) As Byte
Dim Tmp_gyroy(2) As Byte
Dim Tmp_gyroz(2) As Byte
Dim Giro_x As Integer
Dim Giro_y As Integer
Dim Giro_z As Integer
Dim Tmp_accx(2) As Byte
Dim Tmp_accy(2) As Byte
Dim Tmp_accz(2) As Byte
Dim Accel_x As Integer
Dim Accel_y As Integer
Dim Accel_z As Integer
'Sound Portd.7 , 400 , 450
'Sound Portd.7 , 400 , 250
'Sound Portd.7 , 400 , 450
'Wait 2
I2cinit
'--- (25) Sample Rate Divider = 1 ---
I2cstart 'start condition
I2cwbyte &HD0 'write adress of MPU-6050
I2cwbyte 25 'Register 25 Sample Rate Divider (1..8 kHz)
I2cwbyte &B00000000 'Divider set to 1 (soll)
I2cstop 'stop condition
'--- (26) DLPF = 42/44 Hz ---
I2cstart 'start condition
I2cwbyte &HD0 'write adress of MPU-6050
I2cwbyte 26 'Register 26 DLPF_CFG (digital lowpass filter) Configuration
I2cwbyte &B00000011 'Bits 0..2 = 011 (3) - ACC:44Hz, 4.9ms; Gyro:42Hz, 4.8ms
I2cstop 'stop condition
'--- (27) Gyro Full Range = +-2000°/s ---
I2cstart 'start condition
I2cwbyte &HD0 'write adress of MPU-6050
I2cwbyte 27 'Register 27 Gyro Configuration
I2cwbyte &B00011000 'Bits 3+4 = 11 - Full Scale Range: +/-2000°/s
I2cstop 'stop condition
'--- (28) ACC Full Range = +-2g ---
I2cstart 'start condition
I2cwbyte &HD0 'write adress of MPU-6050
I2cwbyte 28 'Register 28 ACC Configuration
I2cwbyte &B00000000 'Bits 3+4 = 00 - Full Scale Range: +/-2g / No High Pass Filter
I2cstop 'stop condition
'--- (107) Power Management 1 ---
I2cstart 'start condition
I2cwbyte &HD0 'write adress of MPU-6050
I2cwbyte 107 'Register 107 Power Management 1
I2cwbyte &B00001011 'No Reset / No Sleep / No Cycle / Temp_Sens: Dis / Clock Source: Z-Gyro
I2cstop
Goto Ugrik1
Do
Call Read_gyro
' Print "Tmp_gyrox(2) :" ; Tmp_gyrox(2) ; "-" ; "Tmp_gyrox(1) :" ; Tmp_gyrox(1)
' Print "Tmp_gyrox(1) :" ; Tmp_gyrox(1)
Print "X: ";Giro_x
Print " "
Waitms 20
' Print "Tmp_gyroy(2) :" ; Tmp_gyroy(2); "-" ; "Tmp_gyroy(1) :" ; Tmp_gyroy(1)
' Print "Tmp_gyroy(1) :" ; Tmp_gyroy(1)
Print "Y: " ; Giro_y
Print " "
Waitms 20
' Print "Tmp_gyroz(2) :" ; Tmp_gyroz(2); "-" ; "Tmp_gyroz(1) :" ; Tmp_gyroz(1)
' Print "Tmp_gyroz(1) :" ; Tmp_gyroz(1)
Print "Z: " ; Giro_z
Print " "
Print "*******************************"
Print " "
Waitms 100
Call Read_acc
' Print "Tmp_accx(2) :" ; Tmp_accx(2)
' Print "Tmp_accx(1) :" ; Tmp_accx(1)
Print "X: " ; Accel_x
Print " "
Waitms 20
' Print "Tmp_accy(2) :" ; Tmp_accy(2)
' Print "Tmp_accy(1) :" ; Tmp_accy(1)
Print "Y: " ; Accel_y
Print " "
Waitms 20
' Print "Tmp_accz(2) :" ; Tmp_accz(2)
' Print "Tmp_accz(1) :" ; Tmp_accz(1)
Print "Z: " ; Accel_z
Print " "
Print "*******************************"
Print "*******************************"
Wait 3
Loop
Ugrik1:
Do
Print "*******************************"
Call Read_gyro
Print " "
Print "GX: " ; Giro_x ; " * " ; "GY: " ; Giro_y ; " * " ; "GZ: " ; Giro_z
Call Read_acc
Print " "
Print "AX: " ; Accel_x ; " * " ; "AY: " ; Accel_y ; " * " ; "AZ: " ; Accel_z
Print " "
Print "*******************************"
Wait 3
Loop
End
Sub Read_gyro()
I2cstart
I2cwbyte &HD0
I2cwbyte 67
I2crepstart
I2cwbyte &HD1
I2crbyte Tmp_gyrox(2) , Ack
I2crbyte Tmp_gyrox(1) , Ack
I2crbyte Tmp_gyroy(2) , Ack
I2crbyte Tmp_gyroy(1) , Ack
I2crbyte Tmp_gyroz(2) , Ack
I2crbyte Tmp_gyroz(1) , Nack
I2cstop
Giro_x = Tmp_gyrox(2) + Tmp_gyrox(1)
Giro_y = Tmp_gyroy(2) + Tmp_gyroy(1)
Giro_z = Tmp_gyroz(2) + Tmp_gyroz(1)
'Gyrox = Gx
'Gyroy = 0 - Gy
'Gyroz = 0 - Gz
End Sub
Sub Read_acc()
I2cstart
I2cwbyte &HD0
I2cwbyte 59
I2crepstart
I2cwbyte &HD1
I2crbyte Tmp_accx(2) , Ack
I2crbyte Tmp_accx(1) , Ack
I2crbyte Tmp_accy(2) , Ack
I2crbyte Tmp_accy(1) , Ack
I2crbyte Tmp_accz(2) , Ack
I2crbyte Tmp_accz(1) , Nack
I2cstop
Accel_x = Tmp_accx(2) + Tmp_accx(1)
Accel_y = Tmp_accy(2) + Tmp_accy(1)
Accel_z = Tmp_accz(2) + Tmp_accz(1)
'Accx = Ax
'Accy = Ay
'Accz = Az
End Sub
Re: XMega
Lehet, hogy nem jó helyre dobtam a cuccot?
Bocs!
Bocs!
Re: XMega
Üdv!
XMegát programoznék, a fordító lefut rendesen, de a szimulátor ezt üzeni:
"Write outside memory area : &HFFFFFFFF"
Vajon miért?
Remélem tud valaki segíteni.
Előri is köszönöm.
XMegát programoznék, a fordító lefut rendesen, de a szimulátor ezt üzeni:
"Write outside memory area : &HFFFFFFFF"
Vajon miért?
Remélem tud valaki segíteni.
Előri is köszönöm.
Re: XMega
2.0.7.5
korábbival nem próbálkoztam.
korábbival nem próbálkoztam.
Re: XMega
Közben meglett a megoldás.
A szimulációban nem szabad bekapcsolni az lcd panelt.
Így lefut a progi.
Sajnos ekkor nem látszik a portok állapota.
Az összefüggést nem igazán értem.
A szimulációban nem szabad bekapcsolni az lcd panelt.
Így lefut a progi.
Sajnos ekkor nem látszik a portok állapota.
Az összefüggést nem igazán értem.
Re: XMega
Hogy mások ne küzdjenek vele sokat: Nem helyes egy két byteon tárolt 16 bites értékből úgy számot képezni hogy simán összeadod az alsó és felső byteot !gomy írta: Sokat szippantottam az MPU6050 gyro-val. Végre találtam egy használható kódot.
....
Giro_x = Tmp_gyrox(2) + Tmp_gyrox(1)
Giro_y = Tmp_gyroy(2) + Tmp_gyroy(1)
Giro_z = Tmp_gyroz(2) + Tmp_gyroz(1)
....
Accel_x = Tmp_accx(2) + Tmp_accx(1)
Accel_y = Tmp_accy(2) + Tmp_accy(1)
Accel_z = Tmp_accz(2) + Tmp_accz(1)
A helyes megoldás ezzel analóg:
Kód: Egész kijelölése
Giro_x = Tmp_gyrox(2) * 256
Giro_x = Giro_x + Tmp_gyrox(1)