[問題]請問PIC的PWM訊號調整的問題
|
||||
---|---|---|---|---|
新會員
|
各位板友好:
我想用PIC16F628A產生 週期: 1 msec DutyCycle: 0.5 msec 的訊號, 依DataSheets的說明做,確實OK了, 但是在約 10 msec後, 就會有 7.5 msec的時間訊號是完全 在Low的狀態,然後照這個情形一直循環, 請問是什麼原因呢? (振盪器是用內部的振盪器: 4MHz) 我用的是CCS,主程式程式碼如下: void main(){ CCP1CON = 0x0c; PR2 = 62; CCPR1L = 31; set_tris_b(0x02); T2CON = 0x06; while(1); } 謝謝各位的指教~~^^
發表於: 2006/2/16 15:19
|
|||
|
Re: 請問FSR and page select(status<5,6>)的差異??
|
||||
---|---|---|---|---|
新會員
|
這兩個都跟Data memory的定址有關,
只是status<5,6>,只針對記憶體Bank的切換, 切換後,可對所切換的Bank直接做資料存取。 而透過FSR,只要位址正確一樣可以存取到所有的 Data Memory,這是屬於間接定址的應用。 這些暫存器的說明在DataSheet中Memory Organization 都有詳細的說明。 在下也還是個新手~~剛用PIC四個月而已~^^,多多指教。
發表於: 2005/12/28 13:21
|
|||
|
Re: 請問PIC的UPPER語法與TBLPTRU暫存器是什麼作用?
|
||||
---|---|---|---|---|
新會員
|
用來取得跟儲存UPPER Byte位址。
以PIC18F2320為例,它的程式記憶體是21bit定址, 所以其位址結果就像 UpperByte+HighByte+LowByte 所以upper的語法,就是用來取得UpperByte部份的位址。 而TBLPTRU自然就像TBLPTRH,TBLPTRL一樣的功能了。 (參考DataSheets P.74) 以上若有錯誤,請多指教了~^^。
發表於: 2005/12/27 17:14
|
|||
|
Re: 請問PIC的Programmer有能燒錄SMD包裝的機種嗎?
|
||||
---|---|---|---|---|
新會員
|
嗯,我明白了,謝謝Ryang版主~^^。
發表於: 2005/12/22 17:57
|
|||
|
請問PIC的Programmer有能燒錄SMD包裝的機種嗎?
|
||||
---|---|---|---|---|
新會員
|
Hi,everyone:
我在Microchip的網站上,看到的Programmer好像都只能 燒錄DIP的包裝,請問有適用於SDM包裝的機種嗎?
發表於: 2005/12/22 14:42
|
|||
|
Re: 請教一下平方和開根號..
|
||||
---|---|---|---|---|
新會員
|
檢查看看是否在include之前就使用到這兩個函數,
這種情形就可能會有找不到函數定義的可能。 我試過,math.h,可以使用這兩個函數。 附帶一提我用的是CCS C-compiler&PIC18F2320作測試。
發表於: 2005/11/11 17:19
|
|||
|
Re: [問題]請教關於CCS語法的問題
|
||||
---|---|---|---|---|
新會員
|
嗯~~了解。
我有試著看過它在PROGRAM MEMORY裡的程式了,的確如此,在宣告的變數時,會把所設定的初值複製到DATA MEMORY(難怪我宣告越大的陣列,PROGRAM MEMORY就會減少...)。 而STRCPY使用的效果也比起自己用MEMCPY()寫CODE處理好多了,程式碼還較短,又能傳字串常數。 看樣子,自己寫的函數真的是無法傳字串常數進去了。
發表於: 2005/11/7 16:34
|
|||
|
Re: [問題]請教關於CCS語法的問題
|
||||
---|---|---|---|---|
新會員
|
To mechwu:
我指的函數,像是printf()、strcpy()都可以在兩個傳入值的時候傳入,常數字串。 例如:printf("Test%C",var);strcpy(str,"Test"); 像這樣的作用。 而我自己寫的函數雖然寫成myfunc(char *str1,char *str2) 可是就不能在str1或str2的位置傳入常數字串,後來才知道是CCS的限制,它只有在函數只有一個傳入值的時候才能用常數字串傳入。 我若想達成我要的作法,只要像 mechwu 所說用指標再加上 read_program_eeprom()即能達成嗎? 是不是像這樣: char tmp = 0; char str[20]="anystring"; void myfunc(char *str1,char *str2) { tmp = read_program_eeprom(str1); //此時tmp會等於所傳入字串的第一個字? putc(tmp); } void main(){ myfunc("Test",str); }
發表於: 2005/10/31 14:12
|
|||
|
Re: [問題]請教關於CCS語法的問題
|
||||
---|---|---|---|---|
新會員
|
To mechwu:
你好,事實上,你說的並沒錯, 只是我很好奇,既然CCS原本所提供的函數,在兩個傳入值時,可以傳入常數字傳,為何我卻不行。 所以,才在想,是否有其它的可能性來達成。
發表於: 2005/10/27 15:22
|
|||
|