Bascom xmega adat eeprom

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2005. április 22. péntek, 6:00

Bascom xmega adat eeprom

Hozzászólás Szerző: Csuhas »

Szervusztok!

Régi működő atmega programom konvertálom xmega procira.(bascom 2,0,7,6)
A következő hibát találtam az eeprom kezelésben.
A jelek szerint eram változó nem szerepelhet feltételes utasításban,
illetve a print eramváltozó utasítás már le sem fordítódik.
Mindezek jól működtek amega procin.

Szóval a programrészlet:

Kód: Egész kijelölése

$regfile = "xm256a3def.dat"
$crystal = 32000000
$hwstack = 64
$swstack = 40
$framesize = 40

$lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014

Config Osc = Enabled , 32mhzosc = Enabled , 32khzosc = Enabled

Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1       '--> 32MHz

Config Eeprom = Mapped
'Config Eeprom = Quick

'Serial Interface to PC
Config Com1 = 115200 , Mode = Asynchroneous , Parity = None , Stopbits = 1 , Databits = 8
Open "COM1:" For Binary As #1
Dim B1 As Byte
Dim B2 As Byte
Dim E1 As Eram Byte
Waitms 100

Print #1 , "Start"

B1 = 2
E1 = B1
Waitms 100
B2 = E1
Print #1 , "B1: " ; B1 ; " B2: " ; B2

'Print #1 , E1"    'Ez a sor le sem fordul !!!!
If E1 <> 2 Then Print #1 , "Error if"

Select Case E1
   Case 2 : Print #1 , "OK case"
   Case 0 : Print #1 , "Error case 0"
   Case Else Print #1 , "Error case"
End Select

For B1 = 4 To E1 Step -1
   Print #1 , B1
Next B1

B1 = E1
Print #1 , "E1: " ; B1
Print #1 , "Stop"
End        


A program kimete:

Start
B1: 2 B2: 2
Error if
Error case 0
4
3
2
1
0
E1: 2
Stop

Mi lehet a hiba? Én hibázom, vagy a bascom?
A hozzászólást 2 alkalommal szerkesztették, utoljára Csuhas 2013. február 15. péntek, 14:34-kor.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Bascom xmega adat eeüprom

Hozzászólás Szerző: kapu48 »

Lesdmeg ezt:
http://avrhelp.mcselec.com/index.html?dim.htm
$EEPROM
Talán segít?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Bascom xmega adat eeüprom

Hozzászólás Szerző: kapu48 »

Szívás!

Nekemse fogadja el az értékadást:

Kód: Egész kijelölése

$regfile = "M64def.dat"                                     'Chip    

' 7 segmes LED Const Tömb to EEPROM
Dim Segmens_et(8) As Eram Byte
Et(1) = 64                                                  '&B01000000                                          ' a
Et(2) = &B00100000                                          ' b
Et(3) = &B00010000                                          ' c
Et(4) = &B00001000                                          ' d
Et(5) = &B00000100                                          ' e
Et(6) = &B00000010                                          ' f
Et(7) = &B00000001                                          ' g
Et(8) = &B10000000                                          ' dp
Bascom2.0.7.3
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Bascom xmega adat eeüprom

Hozzászólás Szerző: kapu48 »

Különben ilyen már van: belső eeprom
viewtopic.php?f=1&t=307&start=30

És körüljártuk alaposan a problémát!

Légy szíves máskor keresgélj kicsit, mielőtt új lapot nyitsz!
:roll:
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2005. április 22. péntek, 6:00

Re: Bascom xmega adat eeprom

Hozzászólás Szerző: Csuhas »

Köszönöm a figyelmeztetést!

Azért nyitottam új topikot mert a probléma kifejezetten Xmega proci esetén jelentkezik.
A mellékelt program ( a fejlécet értelemszerűen átírva ) hibátlanul fut Amega procin.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Bascom xmega adat eeprom

Hozzászólás Szerző: Robert »

Az XMEGA topic tényleg kell, mert egyre több helyen használják. Nálam is készül az XMEGA alapú Arduino lap :).
És lehetnek szép eltérések a normal MEGA és az xMEGA chipek közt...

Fontos! Az xMega chipek támogatása nem érhető el a BASCOM DEMO verzióban!


Mellékelt program lemaradt :)

Ami az EEPROM adatoknál belefutható:
- 0. cím probléma (adatsérülés lehet, így ide egy nemhasznált változó definiálandó)
- komplex utasításoknál / soroknál az ERAM típusú változó nem megy. Pl. IF ERAMA=1.... (ha ERAMA nem más, mint a DIM ERAMA as byte ERAM definiálása). Ekkor egy segéd SRAM alapú változóva kiolvasni az ERAMos változót és úgy használni a komplex utasítást.
- $bigstring esetén hiba lehet (ha egy string hosszabb, mint 254 karakter)
- nagy tömb esetén vegyes a visszajelzés (>255 elemszámú tömb esete)
Avatar
Csuhas
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2005. április 22. péntek, 6:00

Re: Bascom xmega adat eeprom

Hozzászólás Szerző: Csuhas »

A mellékelt program érdemi része azonos a vitaindítóval.
De legyen itt az atmega változat is.

Kód: Egész kijelölése

$regfile = "m128def.dat"
$crystal = 11059200
$baud = 115200
$baud1 = 115200
$hwstack = 64
$swstack = 40
$framesize = 40



'Serial Interface to PC
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Open "COM2:" For Binary As #1


Dim B1 As Byte
Dim B2 As Byte
Dim E1 As Eram Byte

Waitms 100

Print #1 , "Start"

B1 = 2
E1 = B1

Waitms 100

B2 = E1
Print #1 , "B1: " ; B1 ; " B2: " ; B2

If E1 <> 2 Then Print #1 , "Error if"

Select Case E1
   Case 2 : Print #1 , "OK case"
   Case 0 : Print #1 , "Error case 0"
   Case Else Print #1 , "Error case"
End Select

For B1 = 4 To E1 Step -1
   Print #1 , B1
Next B1

B1 = E1

Print #1 , "E1: " ; B1
Print #1 , "Stop"


End                                   
A kimenet ez esetben megfelel az elvárásomnak:

Start
B1: 2 B2: 2
OK case
4
3
2
E1: 2
Stop

Lényeg hogy eram változó nem lehet feltételes utasításokban xmega proci esetén szemben az sima megaval.

Köszi hogy írtad a 0. byte hibalehetőségét, erre ezentúl odafigyelek.
Nagy tömböt, hosszú stringet még nem használtam eepromban.
Válasz küldése