使用MCC,XC8的DATAEE操作

作者 b9015038 於 2018年01月02日 17:19:51
我用
XC8 1.44
MCC 3.36
MPLAB 3.65
PIC18F67K40

從MCC中選擇MEMORY,得到:

void DATAEE_WriteByte
(uint16_t bAdd, uint8_t bData)
uint8_t DATAEE_ReadByte(uint16_t bAdd)


然後從XC8說明裡,看到有:

#include <xc.h>
unsigned char eeprom_read(unsigned char address);
void eeprom_write(unsigned char address, unsigned char value);


其實目前問題是我想在程式執行中儲存外部參數,來變更Uart的baudrate,在剛上電時讀取此參數來初始化Uart (Uart也從MCC產生)

所以我把原產生的Init改為

void EUSART1_Initialize
(uint32_t _baud)

在裡面算出對應的SP1BRGL、SP1BRGH後套用

但現在發現只要在呼叫EUSART1_Initialize前使用DATAEE_ReadByte就會出錯(剛上電,進入while(1)前的初始化),
若不操作DATAEE_ReadByte,直接給固定值就會正常

試了半天,原本baudrate是放在uint24_t(因會到115200,大於65535),然後用atol來轉,因DATAEE_ReadByte一開始值是0xff,不確定這0xFFFFFF拿去轉會不會出事,因為看英文版論壇說uint24_t不是標準的,不建議使用,在header中也看到用#ifndef __CCI__包住,不知是幹麼的

想問一下:
- 正常想操作PIC內建的EE要用什麼操作?MCC產生的和XC8提供的有什麼不同?

- atol, atoi之類的function,因為看不到實作(只能追到header),如果輸入變數為0xfff...,會不會有異常?


用MCC產生完Code之後,實在不想去改裡面的內容,怕出怪問題,但生出的code又不符合需求得改,用得提心吊膽的...

來自: http://www.microchip.com.tw/newbb/viewtopic.php?forum=1&topic_id=22165&post_id=77640