hunni
16.04.2009, 19:35
Hallo,
ich habe eine Frage zum Abspeichern auf das interne EEprom des Atmels.
Mal angenommen ich möchte jetzt 3000 Werte abspeichern. Wenn ich das alles auf ein Label speichern möchte, muss ich dann auch 3000 mal 0,0,0,0,0,0 usw. schreiben? Oder geht das auch anders?
'-----------------------------------------------------------------------------------------
'name : eeprom2.bas
'copyright : (c) 1995-2005, MCS Electronics
'purpose : shows how to use labels with READEEPROM
'micro : Mega48
'suited for demo : yes
'commercial addon needed : no
'-----------------------------------------------------------------------------------------
$regfile = "m48def.dat" ' specify the used micro
$crystal = 4000000 ' used crystal frequency
$baud = 19200 ' use baud rate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
'first dimension a variable
Dim B As Byte
Dim Yes As String * 1
'Usage for readeeprom and writeeprom :
'readeeprom var, address
'A new option is to use a label for the address of the data
'Since this data is in an external file and not in the code the eeprom data
'should be specified first. This in contrast with the normal DATA lines which must
'be placed at the end of your program!!
'first tell the compiler that we are using EEPROM to store the DATA
$eeprom
'the generated EEP file is a binary file.
'Use $EEPROMHEX to create an Intel Hex file usable with AVR Studio.
'$eepromhex
'specify a label
Label1:
Data 1 , 2 , 3 , 4 , 5
Label2:
Data 10 , 20 , 30 , 40 , 50
'Switch back to normal data lines in case they are used
$data
'All the code above does not generate real object code
'It only creates a file with the EEP extension
'Use the new label option
Readeeprom B , Label1
Print B 'prints 1
'Succesive reads will read the next value
'But the first time the label must be specified so the start is known
Readeeprom B
Print B 'prints 2
Readeeprom B , Label2
Print B 'prints 10
Readeeprom B
Print B 'prints 20
'And it works for writing too :
'but since the programming can interfere we add a stop here
Input "Ready?" , Yes
B = 100
Writeeeprom B , Label1
B = 101
Writeeeprom B
'read it back
Readeeprom B , Label1
Print B 'prints 1
'Succesive reads will read the next value
'But the first time the label must be specified so the start is known
Readeeprom B
Print B 'prints 2
End
Das ist nur das beispiel prog von Bascom. Das Prinzip habe ich verstanden, leider aber noch nicht die Details.
Hunni
ich habe eine Frage zum Abspeichern auf das interne EEprom des Atmels.
Mal angenommen ich möchte jetzt 3000 Werte abspeichern. Wenn ich das alles auf ein Label speichern möchte, muss ich dann auch 3000 mal 0,0,0,0,0,0 usw. schreiben? Oder geht das auch anders?
'-----------------------------------------------------------------------------------------
'name : eeprom2.bas
'copyright : (c) 1995-2005, MCS Electronics
'purpose : shows how to use labels with READEEPROM
'micro : Mega48
'suited for demo : yes
'commercial addon needed : no
'-----------------------------------------------------------------------------------------
$regfile = "m48def.dat" ' specify the used micro
$crystal = 4000000 ' used crystal frequency
$baud = 19200 ' use baud rate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
'first dimension a variable
Dim B As Byte
Dim Yes As String * 1
'Usage for readeeprom and writeeprom :
'readeeprom var, address
'A new option is to use a label for the address of the data
'Since this data is in an external file and not in the code the eeprom data
'should be specified first. This in contrast with the normal DATA lines which must
'be placed at the end of your program!!
'first tell the compiler that we are using EEPROM to store the DATA
$eeprom
'the generated EEP file is a binary file.
'Use $EEPROMHEX to create an Intel Hex file usable with AVR Studio.
'$eepromhex
'specify a label
Label1:
Data 1 , 2 , 3 , 4 , 5
Label2:
Data 10 , 20 , 30 , 40 , 50
'Switch back to normal data lines in case they are used
$data
'All the code above does not generate real object code
'It only creates a file with the EEP extension
'Use the new label option
Readeeprom B , Label1
Print B 'prints 1
'Succesive reads will read the next value
'But the first time the label must be specified so the start is known
Readeeprom B
Print B 'prints 2
Readeeprom B , Label2
Print B 'prints 10
Readeeprom B
Print B 'prints 20
'And it works for writing too :
'but since the programming can interfere we add a stop here
Input "Ready?" , Yes
B = 100
Writeeeprom B , Label1
B = 101
Writeeeprom B
'read it back
Readeeprom B , Label1
Print B 'prints 1
'Succesive reads will read the next value
'But the first time the label must be specified so the start is known
Readeeprom B
Print B 'prints 2
End
Das ist nur das beispiel prog von Bascom. Das Prinzip habe ich verstanden, leider aber noch nicht die Details.
Hunni