PIC18 RAM Assembler

OP #2851561
Lesenswert?

Ich muss nochmal nevern :)
Und zwar geht es um den RAM des PIC's. Ich möchte sogesehen einen 
dynamischen Speicher erstellen, der 256 Byte groß werden kann(1 Bank). 
Dies ist notwendig, da ich nicht weiß, was der Benutzer nacher für 
eingaben macht. Mein QT sieht bis jetzt so aus:
1
  CALL res_memory
2

3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4
;;         Init values in ram            ;;
5
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6

7
loop1
8
  MOVFF  WREG, POSTINC0
9
  INCF   WREG, f
10
  DECFSZ TEMP, f
11
BRA loop1
12

13
  MOVLB 0x01                              ; Hier wird ausgelesen
14
  MOVF  0x07, 0
15
  MOVWF TEMP
16
  MOVLB 0x00                              ; Auslesen Ende
17

18
loop                                      ; endeless loop
19
    GOTO get_usart                        ; read from eusart
20
  get_eusart_end
21
    CALL set_eusart                       ; set to eusart
22
GOTO loop
23

24
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
25
;;       Reserve dynamic memory          ;;
26
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
27

28
res_memory
29
  LFSR  FSR0, 0x500                         ; chose bank 1
30
  MOVLW 0x00
31
  MOVFF WREG, TEMP
32
  MOVLW 0x00
33
RETURN

Zu Testzwecken lasse ich die 256 Byte des RAM's mit Inkrementierten 
Werten volllaufen. Aber irgendwie will das auslesen nicht gelingen. Habe 
ich da irgendwas vergessen? Ich benutze das Experentierboard von 
Franzis(der Bootloader nimmer die Adressen von 0x000 bis 0x400 für sich 
in Anspruch).

Und noch ein Frage. Gibt es eine möglichkeit, den Ram zu erweitern? Mit 
Bausteinen per I2C? Wie sieht es dann mit den lese und 
schreibgeschwindigkeiten aus?

Danke schonmal im vorraus.

David
#2853169
Lesenswert?

Guten Abend/Morgen David,
generell wäre es wohl möglich Daten "auszulagern" nun kommt es natürlich 
darauf an wie schnell du auf diese zugreifen können musst. Ein I2C 
EEProm wäre natürlich möglich aber nich sehr Performant.
Ist es denn nötig "jeden Müll" was der Benutzer eingibt auch einzulesen 
und zu speichern?
Wenn nicht dann lese maximal soviel ein wie in deiner Anwendung Sinn 
macht. Wenn mehr kommt wird es ignoriert.

Gruß Philipp
#2853392
Lesenswert?

David M. schrieb:
> Und zwar geht es um den RAM des PIC's.

Welcher PIC18?

David M. schrieb:
> Ich möchte sogesehen einen
> dynamischen Speicher erstellen, der 256 Byte groß werden kann(1 Bank).

Geht nicht.

Ich hab mal ins PIC18F886 Datenblatt gesehen. Der hat 4 Bänke mit je max 
96Byte SRAM.
256Byte kann man also nicht linear adressieren.


Benutzereingaben, die 256 Zeichen lang sein können, da verlangst Du aber 
dem Benutzer viel ab.
Nimm einen realistischen Wert und schmeiße alles darüber weg.
Testen müßtest Du eh auf Pufferüberlauf, auch bei 256 Zeichen.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren