Zámìna Atmega168 za Atmega16

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

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
bart1
Příspěvky: 132
Registrován: 12 črc 2004, 02:00
Kontaktovat uživatele:

Zámìna Atmega168 za Atmega16

#1 Příspěvek od bart1 »

Hraji si ze stavbou VKV tuneru s SI4735.
http://www.elektronik-labor.de/ElektorD ... oDSP5.html
Bascom je relativnì intuitivní prográmek a po vzpomínkách na Basic se mi podaøili úpravy k obrazu svému.
Nicménì pak jsem chtìl vyzkoušet vymìnit Atmega168 za Atmega16.
Dùvod byl vìtší poèet volných pinù. Chtìl bych do menu dát i pøepínání vstupù pro zesilovaè, zapínání fyz. øízení hlasitosti a podobné blbinky.
Nicménì po zmìnì $regfile pro Atmegu16 a nové nadefinování portù pro displej a tlaèítka a korektního pøevedení na HEX soubor a nahrátí se nic nestane ... .
Je možná tato zámìna? Resp. musí se udìlat vìtší zmìny v SW???

PS: jsem zaèáteèník, Bascomu se vìnuji teprve 3 mìsíce
Přílohy
SI4735_AVR_Bascom.zip
(7.9 KiB) Staženo 191 x

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#2 Příspěvek od mtajovsky »

Bascom neznám, ale předpokládám, že je to jazyk takové úrovně, že stačí jen předefinovat typ procesoru a potřebné změny v ovládání HW procesoru jsou udělány automaticky. Nejprve bych vyzkoušel na ATmega16 přesně stejný program jako na ATmage168, jestli to bude fungovat. Tím se zjistí, jestli si Bascom hladce poradí se změnou procesoru. Pak postupně přidávat vlastní rozšíření.

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#3 Příspěvek od AB1 »

Máš nastavený malý stack.
Zkus jestli pomůže

Kód: Vybrat vše

$hwstack = 128
$swstack = 64
$framesize = 64

Uživatelský avatar
Ondra2
Příspěvky: 530
Registrován: 19 bře 2014, 01:00

#4 Příspěvek od Ondra2 »

Já teda bascom taky neznám, ale portoval jsem 2 projekty ze základní Megy (8/16/32) na MeguXX8 (48/168/328) v C a vzhledem k tomu, že se liší HW těch procesorů, to bylo na pár hodin předělávání kódů. Když už nic, je tam jiná reference (2.56V vs 1.1V) a registry pro ovládání časovačů/čítačů jsou jiné.

Uživatelský avatar
Ruprecht
Příspěvky: 1114
Registrován: 28 zář 2005, 02:00
Bydliště: ZČ + JM

#5 Příspěvek od Ruprecht »

Fuse bity nastaveny správně? JTAG zakázaný?
Kampaň, účelovka, nepodepsal, Palermo, ODS, Kalousek, je líp a jsou na to čísla, nastudujte si to.

Uživatelský avatar
nekmil
Příspěvky: 780
Registrován: 06 bře 2005, 01:00
Bydliště: Havířov

#6 Příspěvek od nekmil »

Kontrolní otázka: jakou verzi Bascomu používáš ?
Když spustím v obou verzích Tvého programu "kontrolu syntaxe" vyhodí mi chyby na stejném místě
Error : 25 Line : 32 Variable already dimensioned [Variable already dimensioned] , in File : J:\Z1_18_00c.bas

"Dim R1 As Byte , R2 As Byte , R3 As Byte"

Uživatelský avatar
bart1
Příspěvky: 132
Registrován: 12 črc 2004, 02:00
Kontaktovat uživatele:

#7 Příspěvek od bart1 »

Dìkuji za rady. Používám verzi 2.0.7.5. Program je v obou pøípadech pøeložen bez chyby. S Atmegou168 funkèní, v druhém pøípadì ne.
Zmìna na $hwstack = 128, $swstack = 64, $framesize = 64 nepomohla.
Fuse byty jsem nemìnil.
Napsaný velice jednoduchý prográmek - zmáèkneš tlaèítko a pøiète se 1 se zobrazím na displeji mi funguje u obou procesorù.
Je také otázka zdali soudruzi z NDR nìkde neudìlali chybu :)
Resp, jak jsou napsány podprogramy pro SI4735. Bohužel se nìjak nerozepisují.
Jejich zveøejnìná poslední verze:
https://www.elektormagazine.com/labs/en ... dio-si4735
se chovala úplnì divnì.
Když se to nepodaøí, neva. Základ mi s A.168 funguje. A zesilovaè doøeším jinak.

Uživatelský avatar
Ruprecht
Příspěvky: 1114
Registrován: 28 zář 2005, 02:00
Bydliště: ZČ + JM

#8 Příspěvek od Ruprecht »

Na fotkách v odkazu vidím krystal, předpokládám, že slouží k taktování megy (podle SW 8MHz). Z výroby je ale clock nastaveny na interní 1MHz oscilátor, minimálně toto může být důvod nefunkčnosti. JTAG je z výroby aktivní (portc.2-5). V obsluze přerušení TIM0_isr mi přijde podivný "pinc".
A hlavně - R0-R31 jsou registry (viz chyba nekmil), opravdu chceš do nich přímo zapisovat a číst? Nebo mají být R1-R13 ve tvém SW normální bytové proměnné? Pak je přejmenuj.
Kampaň, účelovka, nepodepsal, Palermo, ODS, Kalousek, je líp a jsou na to čísla, nastudujte si to.

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#9 Příspěvek od AB1 »

Nicméně po změně $regfile pro Atmegu16 a nové nadefinování portů pro displej a tlačítka a korektního převedení na HEX soubor a nahrátí se nic nestane ... .
To znamená co? Ani displej nic neukazuje?
V kódu nevidím nic specifického pro M168. Měl by chodit s M16 beze změn.

Zkusil bych napřed zapojit piny M16 stejně jak byly u M168.
U M16 nastavit kmitočet 8 MHz.

Pro interní osc 8 MHz
Fuse low = E4
Fuse high = D9

Pro krystal 8 MHz
Fuse low = FD
Fuse high = D9

Zkusit neupravený původní kód.
Pak teprve dělat postupně změny v kódu.

Uživatelský avatar
bart1
Příspěvky: 132
Registrován: 12 črc 2004, 02:00
Kontaktovat uživatele:

#10 Příspěvek od bart1 »

Díky za typ. Pojistky jsem nenastavoval. Zaèáteènická chyba.
To i vysvìtluje proè v originální verzi mi neodpovídali èasy na zamáèknutí tlaèítka - muselo se podržet znatelnì déle než byly v programu nastaveny èasy.

Odpovědět

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