Forum: Mikrocontroller und Digitale Elektronik PIC18 RAM Assembler


von David M. (mic_dave)


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

von Philipp F. (philipp5054)


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

von Peter D. (peda)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.