> 0,25% på interna oscillatorn är ju bättre än många resonatorer.
Notera att det är efter att man har slagit på låsningen mot USB-signalen.
Processorn låser alltså INTOSC mot USB signalen. Det finns nya statusbitar
som man kan testa för att se om frekvensen är låst eller inte.
> Hur är den nya 16-kärnan jämfört med 18-kärnan? har det gjorts någon sådan jämförelse?
Ja, det skulle man ju kunna göra. För vissa saker är den lika effektiv, speciellt
de ny indexerade adresseringarna med auto dec/inc med linjär adressering
över hela tillgängliga minnet. Den saknar 8x8 mult. Andra mer grundläggande
skillnader gör att 18F fortfarande har högre gräns för max flash och RAM.
> Jovisst, fast jag inbillar mig att nya 16F-kärnan ändå är mer kompatibel med gamla
> 16F-kärnan än vad en 18F-kärna är. Alltså lättare att portera gammal 16F-kod
> till nya 16F-kärnan än att portera den till 18F.
Ja, det skulle jag säga också. Jag har flyttat något HD44780 demo program från
16F886 till 16F1xxx och det var mest läsningen från tabeller som gjordes om med
de nya effektivare metoderna (2 subrutiner med tillsammans 17-18 instruktioner
för att läsa nästa värde från en tabell i flash, ersattes med *1* "MOVIW FSR0++"),
resten var mer eller mindre likadan. Det är mer tillägg än ändringar, kan man säga.
Vissa sakar blir effektivare av sig själva, en BANKSEL genererar alltid *1* MOVLB
instruktion istället för 2 st BCF/BSF på gamla arkitekturen. Alltså en 50% vinst
vid bank-switching utan några kodändringar alls.
Notera också att all (de flesta) instruktioner fungerar indexerat. I mitt program
för 8x64 LED displayen har jag en 128 byte buffert som jag gör BTFSx mot via
indexregistren för att mata ut rätt bitar på data-linjen. Alltså utan att först
"hämta" värdet via en "load" till ett "register" vilket är ett måste på vissa
andra arkitekturer. Allt går att göra mot allt, så att säga.
