Kan ik het programma geheugen van de PIC als EEPROM?

B

BasePointer

Guest
Hallo, ik ben het ontwikkelen van een project bij PIC18F452 met PICC18 v8.35PL1. Ik heb een heleboel gratis programma geheugen en ik wil daar gebruiken om de waarden van een aantal variabelen die ik gebruik op te slaan. Ik vraag me af dat als het mogelijk is om te lezen / schrijven programmageheugen van de PIC byte per byte? Wat zijn de voor-en nadelen van deze methode tegen een externe EEPROM als 24C16? 10x
 
voor de hand liggende nadeel van het gebruik van een externe eeprom is dat het zal gaan een aantal van de pinnen van de controller. controleren of het programma het geheugen van de pic is niet vluchtig. het
 
Hallo BasePointer, dit is van de 8,30 handleiding, ik hoop dat het ook geldig voor 8.35PL1: 4.2.5 EEPROM en Flash Access Runtime EEPROM en flash-geheugen macro's worden gedefinieerd voor het gemak en zijn beschikbaar voor chips die EEPROM of flash-geheugen. De vooraf gedefinieerde EEPROM en flash-geheugen macro's kan worden gebruikt op de volgende manier. Naar een byte-size waarde aan een adres in EEPROM-geheugen schrijven: EEPROM_WRITE (adres, waarde); Om een ​​byte aan gegevens lezen van een adres in EEPROM-geheugen, en bewaar het op een variabele: variabele = EEPROM_READ (adres); Voor het gemak , EEPROM_SIZE stelt vooraf de totale grootte van de data EEPROM beschikbaar zijn op de chip. Om een ​​blok van de code / data naar een gebied in flash-geheugen te kopiëren: flash_write (source_pointer, lengte, dest_pointer); Om een ​​byte aan gegevens lezen van een adres in flash-geheugen, en op te slaan in een variabele: variabele = FLASH_READ (adres); Ik heb nog nooit gebruikte programma geheugen voor opslag als ik kon alle benodigde gegevens passen in de ingebouwde EEPROM door nu. Een groot nadeel zou kunnen zijn dat flash minder schrijf cycli dan EEPROM. hoop dat dit helpt en vriendelijke groeten
 
[Quote = BasePointer] Hallo, ik ben het ontwikkelen van een project bij PIC18F452 met PICC18 v8.35PL1. Ik heb een heleboel gratis programma geheugen en ik wil daar gebruiken om de waarden van een aantal variabelen die ik gebruik op te slaan. Ik vraag me af dat als het mogelijk is om te lezen / schrijven programmageheugen van de PIC byte per byte? Wat zijn de voor-en nadelen van deze methode tegen een externe EEPROM als 24C16? 10x [/quote] Ik heb altijd preffer externe eeprom wat ik denk dat de gebruikte interne EEPROM of prog mem gebruikt als eeprom kan het minimaliseren van de levensduur van de controller vinden rond dit is ik ben goed of fout?
 
[Quote = C-Man] Om een ​​blok van de code / data naar een gebied in flash-geheugen te kopiëren: flash_write (source_pointer, lengte, dest_pointer) [/quote] Ik weet niet precies zeker dat als parameter length van flash_write ()-functie kan worden ingesteld op 1.
 
Ook de meeste belangrijke verschillen lijkt het schrijven van cyclus. - 100.000 wissen / schrijf-cyclus Enhanced FLASH programma geheugen typische - 1000000 wissen / schrijf-cyclus Gegevens EEPROMmemory
 
Waarom geen gebruik maken van de interne EEPROM in plaats van FLASH om waarden op te slaan? Of is het omdat er niet genoeg ruimte in het interne EEPROM PIC? Normaal gesproken kunt u schrijven 10x zo vaak in het interne EEPROM als je kunt in de FLASH. Meestal rond de 100.000 keer in EEPROM versus 10.000 keer in FLASH. De intenal EEPROM in microcontrollers zijn excactly gemaakt voor het doel waarvoor u vragen, dus waarom niet gebruiken? Is het omdat de Sze? De PIC18F452 heeft 256 bytes interne EEPROM.
 
[Quote = ME] Waarom geen gebruik maken van de interne EEPROM in plaats van FLASH om waarden op te slaan? Of is het omdat er niet genoeg ruimte in het interne EEPROM PIC? Normaal gesproken kunt u schrijven 10x zo vaak in het interne EEPROM als je kunt in de FLASH. Meestal rond de 100.000 keer in EEPROM versus 10.000 keer in FLASH. De intenal EEPROM in microcontrollers zijn excactly gemaakt voor het doel waarvoor u vragen, dus waarom niet gebruiken? Is het omdat de Sze? De PIC18F452 heeft 256 bytes interne EEPROM. [/Quote] Ja, ik heb ongeveer 2048 Byte. Interne EEPROM van de PIC is niet genoeg voor mijn huidige project.
 
Van een snelle blik op de datasheet, kan het lezen een byte per keer, maar bij het programmeren, maar blokken van 8 bytes zijn slechts mogelijk zijn. Dus als je vroeg, denk ik niet dat het geschikt is voor uw doel, tenzij u een 8 byte te lezen, en dan opnieuw schrijven het blok met uw wijzigingen (byte of bytes). Cheers sda
 
[Quote = BasePointer] Ja, ik heb ongeveer 2048 Byte. Interne EEPROM van de PIC is niet genoeg voor mijn huidige project. [/Quote] Dan kun je ook overwegen een upgrade van PIC18F452 naar Atmel ATmega64 of ATmega128 AVR's. ATmega64 is 2048 bytes van het interne EEPROM en de prijs is ongeveer hetzelfde als voor de PIC18F452. Als u nog meer EEPROM, kan je dit gebruiken ATmega128, het heeft 4096 bytes van het interne EEPROM. Atmel AVR selectie tabel: Microchip PIC heeft geen toestellen met meer dan 1024 bytes interne EEPROM.
 
[Quote = sda] Van een snelle blik op de datasheet, kan worden gelezen een byte per keer, maar bij het programmeren, maar blokken van 8 bytes zijn slechts mogelijk zijn. Dus als je vroeg, denk ik niet dat het geschikt is voor uw doel, tenzij u een 8 byte te lezen, en dan opnieuw schrijven het blok met uw wijzigingen (byte of bytes). Cheers sda [/quote] Ik heb net controleerde de flash-programmageheugen gedeelte van het gegevensblad. En ik helaas zag dat je gelijk hebt. De minimale programmering blok is vier woorden of 8 bytes. Word of byte programmering is niet ondersteund: (
 
[Quote = BasePointer] [quote = sda] Van een snelle blik op de datasheet, kan worden gelezen een byte per keer, maar bij het programmeren, maar blokken van 8 bytes zijn slechts mogelijk zijn. Dus als je vroeg, denk ik niet dat het geschikt is voor uw doel, tenzij u een 8 byte te lezen, en dan opnieuw schrijven het blok met uw wijzigingen (byte of bytes). Cheers sda [/quote] Ik heb net controleerde de flash-programmageheugen gedeelte van het gegevensblad. En ik helaas zag dat je gelijk hebt. De minimale programmering blok is vier woorden of 8 bytes. Word of byte programmering is niet ondersteund: ([/quote] Maar dat is niet echt een probleem, waarom dont schrijf je je eigen routine die 8 bytes leest op het eerste werk vervolgens de gewenste byte en de rug van de 8 bytes blok schrijven moet worden? gemakkelijk te doen kun je gewoon gebruik maken van de bibliotheek routines in uw eigen functie om precies dat te doen ... groeten
 
[Quote = C-Man] Maar dat moet niet echt een probleem, waarom dont schrijf je je eigen routine die 8 bytes leest op het eerste werk vervolgens de gewenste byte en de rug van de 8 bytes blok schrijven? [/Quote] Natuurlijk, Het is mogelijk. Thnk jullie voor uw steun.
 
Met 18F452 kunt u tabel lezen / schrijven-functies te schrijven naar het flash-geheugen. Je hoeft alleen het begin adres weten, kunt u uw programma overschrijven veroorzaken. Wat je kunt doen is om je programma te compileren zonder data in flash, dan zien wat er de laatste ROM-adres van uw programma gebruikt en vervolgens start het invullen van uw flash-vanaf dat adres.
 
Hoe zit het met het idee van het gebruik van een AVR in plaats daarvan? Dit zou je probleem opgelost, omdat het heeft veel meer EEPROM ruimte en het is niet duurder.
 

Welcome to EDABoard.com

Sponsor

Back
Top