uC hcs08js16cwj - frekvence vykonavani instrukci

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
frca
Příspěvky: 67
Registrován: 09 čer 2008, 02:00
Kontaktovat uživatele:

uC hcs08js16cwj - frekvence vykonavani instrukci

#1 Příspěvek od frca »

Zdravim,
programuji tento mikrokontroler a v datasheetu je napsano, ze rychlost procesoru je 48 mhz a rychlost sbernice 24 mhz. Pak je tam taky u kazde instrukce asembleru, kolik cyklu sebere jeji provedeni. Ale jakych cyklu? Napriklad instrukce nop ma 1 cyklus. Zkousel jsem to a provadela se rychlosti priblizne 8 Mhz. Je to normalni, nebo je sance zvysit rychlost na tech 24 Mhz? Dost by se mi to hodilo. Diky.

coat
Příspěvky: 68
Registrován: 13 čer 2007, 02:00
Bydliště: BRNO

#2 Příspěvek od coat »

Zdar. V datasheetu je uvedená maximální možná rychlost, takže to neznamená že sběrnice jede automaticky na 24 MHz. Budeš si muset hodiny nastavit sám. Zřejmě to děláš v Codewarrioru takže nejjednoduší je použít Device initialization a nastavit jádro - CPU. Můžeš použít i interní oscilátor, ten modul Dev. init ti přímo ukazuje jaká bude frekvence sběrnice při zadání parametrů a zobrazí ti warnings pokud je něco zadaný špatně. Pokud to budeš dělat podle datasheetu tak ztratíš hromadu času, určitě doporučuju tohle do začátku.

frca
Příspěvky: 67
Registrován: 09 čer 2008, 02:00
Kontaktovat uživatele:

#3 Příspěvek od frca »

Zkousim to, ale ani za prase se mi nedari nastavit to na tech 24 mhz. Aspon s internim oscilatorem ne. Pripojil jsem ale 12 mhz externi krystal a s tim to jede. Jenze i kdyz v nastavenim mam 12 mhz krystal a 24 mhz bus freq, tak to jede o neco pomaleji nez tech 24 mhz (nevim presne, kolik), a to mi vadi. Zkousel jsem taky 12 mhz bus freq a taky to jelo o neco pomaleji nez tech 12. Netusite, cim by to mohlo byt? Diky.

Edit: Tak nakonec se mi to povedlo nastavit na 27 mhz (i kdyz to oficialne mcu nepodporuje). To uz mi celkem staci :)

coat
Příspěvky: 68
Registrován: 13 čer 2007, 02:00
Bydliště: BRNO

#4 Příspěvek od coat »

A jak vůbec přesně zjišťuješ ten kmitočet na kterým to ve skutečnosti jede? Jinak sem můžeš hodit aj printscreen nastavení.

frca
Příspěvky: 67
Registrován: 09 čer 2008, 02:00
Kontaktovat uživatele:

#5 Příspěvek od frca »

Mam ladicku, ktera hraje 440 Hz. Pak podle predpokladane frekvence generuju ton na piezo a kdyz je nizsi, tak je frekvence procesoru mensi. Je to sice praveka metoda, ale osciloskop nemam a na takove orientacni zjisteni to staci. V priloze je to nastaveni 27 mhz (mozna je to taky o neco nizsi, ale to mi momentalne nevadi).
Přílohy
27mhz-nastaveni.PNG
(66.62 KiB) Staženo 73 x

coat
Příspěvky: 68
Registrován: 13 čer 2007, 02:00
Bydliště: BRNO

#6 Příspěvek od coat »

Tak to je pěkný :-D To nemáš ani multimetr které ti měří kmitočet, že by sis vygeneroval PWM a zjistil to fakt přesně? Jinak to nastavení vypadá v pohodě.

frca
Příspěvky: 67
Registrován: 09 čer 2008, 02:00
Kontaktovat uživatele:

#7 Příspěvek od frca »

Ted mam pocit, ze je neco fakt spatne. Je opravdu docela mozne, ze ten procesor ma frekvenci presnou a ja ten ton generuju spatne. Vychazel jsem totiz z predpokladu, ze instrukce RTS trva 5 cyklu. Jenze v jinem referencnim manualu je napsano, ze trva 6 cyklu. Tak ja ted nevim. Kolik ma teda cyklu?

Jeste odkaz na ty 2 datashity, ktere si protireci:

http://www.freescale.com/files/microcon ... 08RMV1.pdf
http://cache.freescale.com/files/32bit/ ... JS16RM.pdf

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#8 Příspěvek od Andrea »

Těch 5 cyklů bude chyba, chybí tam druhý unstack cyklus, JSR má dva stack cykly, tak RTS musí mít dva unstack cykly.

frca
Příspěvky: 67
Registrován: 09 čer 2008, 02:00
Kontaktovat uživatele:

#9 Příspěvek od frca »

Prekopal jsem to s prihlednutim k 6 cyklum instrukce RTS a uz mi moje pokusy s ladickou (a jine) vychazeji pekne.

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#10 Příspěvek od Andrea »

A k čemu je to počítání cyklů dobré, když má ten jednočip hw čítač/časovač?

frca
Příspěvky: 67
Registrován: 09 čer 2008, 02:00
Kontaktovat uživatele:

#11 Příspěvek od frca »

A da se to pouzit pro presne generovani signalu? Ja totiz nevim, jak, a proto to resim takto.

Jeste bych mel dotaz k tem instrukcim jsr a rts: Kolik vezme jedno volani jsr bajtu na zasobniku? 2?

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#12 Příspěvek od Andrea »

frca píše:A da se to pouzit pro presne generovani signalu?
K čemu jinému by to tam bylo? ;)
frca píše:Jeste bych mel dotaz k tem instrukcim jsr a rts: Kolik vezme jedno volani jsr bajtu na zasobniku? 2?
Ano, ukládá se aktuální hodnota 16bitového PC, takže 2 byty.

frca
Příspěvky: 67
Registrován: 09 čer 2008, 02:00
Kontaktovat uživatele:

#13 Příspěvek od frca »

Tady toto se mi povedlo pomoci MCU vytvorit:
http://www.franticware.com/blog-hcs08-vga

frca
Příspěvky: 67
Registrován: 09 čer 2008, 02:00
Kontaktovat uživatele:

#14 Příspěvek od frca »

Andrea píše:
frca píše:A da se to pouzit pro presne generovani signalu?
K čemu jinému by to tam bylo? ;)
A myslis ted pouzitim preruseni? Jak se to potom slicuje presne s tim taktem sbernice, ktery potrebuju? Podle datasheetu se totiz musi nejdriv dokoncit bezici instrukce a az potom se zavola prerusovaci rutina. Jenze ta dokoncujici se instrukce muze mit ruzny pocet cyklu, takze jsem v pasti.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“