<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>8-bit MicrocontrollersのトピックPrgramming HCS08 Flash - Help Needed</title>
    <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Prgramming-HCS08-Flash-Help-Needed/m-p/140092#M5518</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;I am creating some code to save configs in Flash on a HCS908QG8.&amp;nbsp; Single byte writes are fine. I created the code from scratch, but find it is locking-up the micro.&amp;nbsp; I then lifted the code from AN2496 and I get the same result. The problem occurs as soon as I issue the program command.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Any help is appreciated.&amp;nbsp; The code is listed below.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;byte_pgm:&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;Command to program a single byte&lt;/DIV&gt;&lt;DIV&gt;; bit position masks&lt;BR /&gt;mFCBEF:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp; %10000000&amp;nbsp;&amp;nbsp; ;flash command buffer empty flag&lt;BR /&gt;mFCCF:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp; %01000000&amp;nbsp;&amp;nbsp; ;flash command complete flag&lt;BR /&gt;mFPVIOL:&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp; %00100000&amp;nbsp;&amp;nbsp; ;flash protection violation&lt;BR /&gt;mFACCERR:&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp; %00010000&amp;nbsp;&amp;nbsp; ;flash access error&lt;BR /&gt;mFBLANK:&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp; %00000100&amp;nbsp;&amp;nbsp; ;flash verified as all blank (erased =$ff) flag&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;sei&lt;/DIV&gt;&lt;DIV&gt;* Flash Routines Initialisation&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;#!45&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;rFCDIV&amp;nbsp;&amp;nbsp;&amp;nbsp;;Set the flash clock divider register to produce 186kHz clock&lt;BR /&gt;&amp;nbsp;&amp;nbsp;ldhx&amp;nbsp;#vNVStorageStart&amp;nbsp;;Set up an address pointer&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sthx&amp;nbsp;wAddrFlashWrite&amp;nbsp;&amp;nbsp;; "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;#'a'&amp;nbsp;&amp;nbsp;&amp;nbsp;;Create some test data&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;yFlashByte&amp;nbsp;&amp;nbsp;; "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;jsr&amp;nbsp;COP_Reset&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;ProgFlashByte&amp;nbsp;lda&amp;nbsp;#mFPVIOL|mFACCERR&amp;nbsp;;error flag bits to clear if set&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;rFSTAT&amp;nbsp;&amp;nbsp;&amp;nbsp;;clear any error flags&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;ldhx&amp;nbsp;wAddrFlashWrite&amp;nbsp;&amp;nbsp;;Get address to program&lt;BR /&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;yFlashByte&amp;nbsp;&amp;nbsp;;Store the byte in flash&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;,X&amp;nbsp;&amp;nbsp;&amp;nbsp;; "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;aix&amp;nbsp;#1&amp;nbsp;&amp;nbsp;&amp;nbsp;;Save address of next free config space in flash&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sthx&amp;nbsp;wAddrFlashWrite&amp;nbsp;&amp;nbsp;; "&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;#byte_pgm&amp;nbsp;&amp;nbsp;;page write command&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;rFCMD&amp;nbsp;&amp;nbsp;&amp;nbsp;;initiate the programming sequence&lt;BR /&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;rFSTAT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;ora&amp;nbsp;#mFCBEF&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;rFSTAT&amp;nbsp;&amp;nbsp;&amp;nbsp;;launch the command&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;burn bus cycs before chking status&lt;BR /&gt;&amp;nbsp;&amp;nbsp;nop&lt;BR /&gt;&amp;nbsp;&amp;nbsp;nop&lt;BR /&gt;&amp;nbsp;&amp;nbsp;nop&lt;BR /&gt;&amp;nbsp;&amp;nbsp;nop&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;rFSTAT&amp;nbsp;&amp;nbsp;&amp;nbsp;;look at status register for errors&lt;BR /&gt;&amp;nbsp;&amp;nbsp;and&amp;nbsp;#mFPVIOL|mFACCERR&amp;nbsp;;error flag bits&lt;BR /&gt;&amp;nbsp;&amp;nbsp;bne&amp;nbsp;flash_error&amp;nbsp;&amp;nbsp;;check for programming errors&lt;BR /&gt;pgm_loop:&amp;nbsp;lda&amp;nbsp;rFSTAT&amp;nbsp;&amp;nbsp;&amp;nbsp;;wait around unil prog'ing complete&lt;BR /&gt;&amp;nbsp;&amp;nbsp;and&amp;nbsp;#mFCCF&amp;nbsp;&amp;nbsp;&amp;nbsp;;command complete yet?&lt;BR /&gt;&amp;nbsp;&amp;nbsp;beq&amp;nbsp;pgm_loop&amp;nbsp;&amp;nbsp;;not done yet..loop until complete&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 14 Jul 2007 18:38:12 GMT</pubDate>
    <dc:creator>Davo</dc:creator>
    <dc:date>2007-07-14T18:38:12Z</dc:date>
    <item>
      <title>Prgramming HCS08 Flash - Help Needed</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Prgramming-HCS08-Flash-Help-Needed/m-p/140092#M5518</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;I am creating some code to save configs in Flash on a HCS908QG8.&amp;nbsp; Single byte writes are fine. I created the code from scratch, but find it is locking-up the micro.&amp;nbsp; I then lifted the code from AN2496 and I get the same result. The problem occurs as soon as I issue the program command.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Any help is appreciated.&amp;nbsp; The code is listed below.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;byte_pgm:&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp;&amp;nbsp; $20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;Command to program a single byte&lt;/DIV&gt;&lt;DIV&gt;; bit position masks&lt;BR /&gt;mFCBEF:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp; %10000000&amp;nbsp;&amp;nbsp; ;flash command buffer empty flag&lt;BR /&gt;mFCCF:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp; %01000000&amp;nbsp;&amp;nbsp; ;flash command complete flag&lt;BR /&gt;mFPVIOL:&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp; %00100000&amp;nbsp;&amp;nbsp; ;flash protection violation&lt;BR /&gt;mFACCERR:&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp; %00010000&amp;nbsp;&amp;nbsp; ;flash access error&lt;BR /&gt;mFBLANK:&amp;nbsp;&amp;nbsp;&amp;nbsp; equ&amp;nbsp;&amp;nbsp; %00000100&amp;nbsp;&amp;nbsp; ;flash verified as all blank (erased =$ff) flag&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;sei&lt;/DIV&gt;&lt;DIV&gt;* Flash Routines Initialisation&lt;BR /&gt;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;#!45&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;rFCDIV&amp;nbsp;&amp;nbsp;&amp;nbsp;;Set the flash clock divider register to produce 186kHz clock&lt;BR /&gt;&amp;nbsp;&amp;nbsp;ldhx&amp;nbsp;#vNVStorageStart&amp;nbsp;;Set up an address pointer&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sthx&amp;nbsp;wAddrFlashWrite&amp;nbsp;&amp;nbsp;; "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;#'a'&amp;nbsp;&amp;nbsp;&amp;nbsp;;Create some test data&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;yFlashByte&amp;nbsp;&amp;nbsp;; "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;jsr&amp;nbsp;COP_Reset&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;ProgFlashByte&amp;nbsp;lda&amp;nbsp;#mFPVIOL|mFACCERR&amp;nbsp;;error flag bits to clear if set&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;rFSTAT&amp;nbsp;&amp;nbsp;&amp;nbsp;;clear any error flags&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;ldhx&amp;nbsp;wAddrFlashWrite&amp;nbsp;&amp;nbsp;;Get address to program&lt;BR /&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;yFlashByte&amp;nbsp;&amp;nbsp;;Store the byte in flash&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;,X&amp;nbsp;&amp;nbsp;&amp;nbsp;; "&lt;BR /&gt;&amp;nbsp;&amp;nbsp;aix&amp;nbsp;#1&amp;nbsp;&amp;nbsp;&amp;nbsp;;Save address of next free config space in flash&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sthx&amp;nbsp;wAddrFlashWrite&amp;nbsp;&amp;nbsp;; "&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;#byte_pgm&amp;nbsp;&amp;nbsp;;page write command&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;rFCMD&amp;nbsp;&amp;nbsp;&amp;nbsp;;initiate the programming sequence&lt;BR /&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;rFSTAT&lt;BR /&gt;&amp;nbsp;&amp;nbsp;ora&amp;nbsp;#mFCBEF&lt;BR /&gt;&amp;nbsp;&amp;nbsp;sta&amp;nbsp;rFSTAT&amp;nbsp;&amp;nbsp;&amp;nbsp;;launch the command&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;;burn bus cycs before chking status&lt;BR /&gt;&amp;nbsp;&amp;nbsp;nop&lt;BR /&gt;&amp;nbsp;&amp;nbsp;nop&lt;BR /&gt;&amp;nbsp;&amp;nbsp;nop&lt;BR /&gt;&amp;nbsp;&amp;nbsp;nop&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;lda&amp;nbsp;rFSTAT&amp;nbsp;&amp;nbsp;&amp;nbsp;;look at status register for errors&lt;BR /&gt;&amp;nbsp;&amp;nbsp;and&amp;nbsp;#mFPVIOL|mFACCERR&amp;nbsp;;error flag bits&lt;BR /&gt;&amp;nbsp;&amp;nbsp;bne&amp;nbsp;flash_error&amp;nbsp;&amp;nbsp;;check for programming errors&lt;BR /&gt;pgm_loop:&amp;nbsp;lda&amp;nbsp;rFSTAT&amp;nbsp;&amp;nbsp;&amp;nbsp;;wait around unil prog'ing complete&lt;BR /&gt;&amp;nbsp;&amp;nbsp;and&amp;nbsp;#mFCCF&amp;nbsp;&amp;nbsp;&amp;nbsp;;command complete yet?&lt;BR /&gt;&amp;nbsp;&amp;nbsp;beq&amp;nbsp;pgm_loop&amp;nbsp;&amp;nbsp;;not done yet..loop until complete&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 Jul 2007 18:38:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Prgramming-HCS08-Flash-Help-Needed/m-p/140092#M5518</guid>
      <dc:creator>Davo</dc:creator>
      <dc:date>2007-07-14T18:38:12Z</dc:date>
    </item>
    <item>
      <title>Re: Prgramming HCS08 Flash - Help Needed</title>
      <link>https://community.nxp.com/t5/8-bit-Microcontrollers/Prgramming-HCS08-Flash-Help-Needed/m-p/140093#M5519</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;Hi Davo,&lt;BR /&gt;&lt;BR /&gt;You didn't mention code location in your post, but code that programs flash memory locations must run in RAM.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt;&lt;BR /&gt;Frank&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 15 Jul 2007 06:56:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/8-bit-Microcontrollers/Prgramming-HCS08-Flash-Help-Needed/m-p/140093#M5519</guid>
      <dc:creator>thisobj</dc:creator>
      <dc:date>2007-07-15T06:56:02Z</dc:date>
    </item>
  </channel>
</rss>

