Předělání switche na 10Mbit-FD
Autorem 2. způsobu je Jaroslav Pajskr. jarda[dot]pajsk[at]tiscali[dot]cz pro případné dotazy.
Obsah
Obecně
2 způsoby jak nastavit port na 10Mbit-FD u switche. Využitelné např. pro připojeni ronji.
- 1. způsob - Spojení nožiček chipu byl převzat z fóra CZF a news HKF (funguje jen s chipem RTL8305SB nebo SC)
- 2. způsob - Změna hodnot interních konfiguračních registrů chipu pomocí externího procesr (mel by fungovat i s jiným chipem = i vetší než 5-port switch)
Způsob 1 - Spojení nožiček chipu
- pouze s chipem RTL8305SB (SC)
- např. Edimax ES-3105P (pouze 5port)
- datasheet RTL8305SB a RTL8305SC
- default je 1, 0 je slus na zem
- výtah z datasheetu:
<bash> pin 95: 1 - skupina x - port 0, skupina y - port 1, 2 a 3 0 - skupina x - port 0 a 1, skupina y - port 2 a 3
port0 je na 3, 4, 127, 128 (u růžku s klíčem)
port1 je na 7, 8, 11, 12
port2 je na 15, 16, 19, 20
port3 je na 23, 24, 27, 28
port4 je na 31, 32, 35, 36 (port4 je special, měl by zůstat auto)
pin 104: 1 - enable auto-negotiation skupiny x
0 - disable
pin 105: 1 - enable auto-negotiation skupiny y 0 - disable
pin 107: 1 - enable 100Mbps skupiny x 0 - disable
pin 108: 1 - enable 100Mbps skupiny y 0 - disable
pin 109: 1 - enable FullDuplex skupiny x 0 - disable
pin 110: 1 - enable FullDuplex skupiny y 0 - disable </bash>
- Když nohy 104,105,107,108 vyzkratujete na zem, tak bude mít switch jeden 100Mbit port a 4x 10Mbit-FD porty.
- Pozor na vedlejší efekt, budou svítit neustále diody.
Způsob 2 - Přeprogramovaní chipu pomocí externího procesoru
Chip se může také kofigurovat pomocí SMI sběrnice. Pravidla komunikace po této sběrnici jsou uvedeny v katalogovém listu chipu na str119. Tuto sběrnici mají i více portové switche a ty lze je tímto způsobem také konfigurovat. To znamená, že i u 8 portového switche lze předělat do reřimu 10Mbit-FD libovolný počet portů.
Co je protřeba:
- procesor + 2 odpory 1,5kOhm
- programátor
- software Ponyprog pro naprogramování procesoru a AVR Studio pro případnou změnu nastavení
Po SMI sběrnici se mohou data z obvodu číst nebo zapisovat. Jestli se bude zapisovat nebo číst se rozliší v úvodu vysílaných dat. Taky se zde musí uvést číslo banky registrů - PHY0-PHY5 a číslo registru 0 - 31, se kterým se bude pracovat.
Aby se upravil PORT4 na 10Base FD musí se v bance registrů 4 - PHY4 s binárním kódem 00100:
v registru 0 - str53, binární kód registru je 00000
- vypnout autonegotiation - znulovat 12tý bit
- povolit 10MB - znulovat 13tý bit
- zapnout full duplex - nastavit 8 bit.
v registru 4 - str55, binární kód registru je 00100
- povolit pouze 10Base FD znulovat 5,7,8 bit
- nastavit 6 bit
Bylo by dobré neměnit ostatní bity, proto se nejprave data z chipu přečtou, pozmění a pak zpátky zapíší.
V katalogovém listu chipu na str119 je uvedeno uspořádání posílaných dat. Prvních 32 taktů jsou 1. poslání adresy registru 0 by se dalo binárně zapsat:
<bash>
CH CL
pro čtení 01100010 00000010 pro zápis 01010010 00000010
- 4 -- 0 -
</bash>
dalších 16 taktů se posílají data.
Nejjednodušší způsob, jak data poslat do IO, je pomocí naprogramovaného procesoru. Já jsem se zabýval programováním procesorů ATMEL AVR, proto jsem vytvořil program pro zápis dat i čtení pro procesor této řady. Svým vybavením plně vyhovuje procesor ATtiny12L, ale může se použít skoro jakýkoliv. Cena procesoru ATtiny12L je v GMku 28kč
Procesor se vyrábí v provedení DIL8 i v SMD provedení. Procesor V SMD provedení je možné přiletovat místo EEPROMky, se kterou je na desce switche počítáno, ale nebývá osazena. Pro připojení procesoru jsou nutné 4 vývody – z toho 2 jsou napájení a 2 pro přenos dat.
Program procesoru je napsaný v assembleru. Pro čtení a zápis jsou vytvořeny 2 funkce – nacti a uloz. Funkce delay je pouze určité zpoždění mezi jednotlivými operacemi. Původně to sloužilo ke zpožděné konfiguraci po připojení napájení, ale v programu je tato funkce provedena mezi jednotlivými operacemi. Práce s funkcemi je velmi jednoduchá.
Před vykonáním funkce se musí nejprve zapsat adresa do registrů CL, CH a poté vykonat funkce. Adresa CL a CH nemusí obsahovat informaci o tom, jestli se zapíší data nebo se budou číst. Funkce zapíší sekvence pro čtení a zápis. Nejvyšší 4 bity CH jsou ignorovány.
Po přečtení dat z IO se musí provést nastavení. Vynulování bitů se provede instrukcí CBR podle masky a nastavení bitů se provede instrukcí SBR podle masky. Doufám, že funkce těchto dvou instrukcí jsou dostatečně zřejmé ze samotného programu.
Po zápisu posledního byte do registrů program skočí do nekonečné smyčky.
Poslední část programu nazvaná kontrola se v běžném režimu nepoužívá. Slouží pro kontrolu zapsaných dat do IO. Na nevyužitých dvou vývodech se začne periodicky vysílat sériově přečtená data. Na dvoukanálovém osciloskopu se pak může na tyto data podívat.
Připojení procesoru k IO
Detail
V případě, že bude použit procesor v provedení SMD musí se zamezit spojení vývodu 1 procesoru s deskou switche a tento volný vývod procesoru připojit na napájení – vývod 8 procesoru.
Když by byl procesor použit v provedení DIL8, je dobré přiletovat patici DIL8 k desce switche pomocí drátků a procesor pouze dát do patice – když by bylo potřeba procesor přeprogramovat lze pak procesor z patice snadno vydloubnout.
Programátor
- Programátor lze vyrobit vzdušné konstrukce. Když by byl potřeba naprogramovat procesor v SMD provedení, pak by byl problém připojit procesor k programátoru. Je možné vyrobit PCB.
Návrh desky je vytvořen v programu Eagle V4.15 light
- Verze pro procesor v DIL8
- Nebo pro procesor v SMD provedení
Schéma programátoru
Software
Programování procesoru
- Procesor je možné naprogramovat pomocí programu Ponyprog
Po nainstalování je potřeba zvolit port COM1 v setup->interface setup
Dále je potřeba zvolit procesor – device->AVR micro->ATtiny12 Poté se může načíst HEX soubor – file->open program file, zvolit HEX. Když by se programování nepovedlo na poprvé, případně bylo potřeba procesor přeprogramovat musí se před programováním procesor vymazat – command->erase a pak až procesor naprogramovat.
Procesor se pak naprogramuje – command->write program Nyní by měl být program v procesoru. Další věc, co není nutná, ale bylo by dobré ji nastavit, je zapnutí ochrany proti malému napětí. Procesor se pak sám restartuje když klesne napětí pod určitou mez. Je to určitá ochrana proti zkolabování programu. Tato ochrana se zapne v nabídce command->security and configuration bits, zde se nejprve zvolí read, pak se BODLEVEL a BODEN vynulují a opět pomocí write zapíše
Změna nastavení
- Pokud by chtěl někdo změnit nastavení, musí přepsat program v assembleru. program se poté musí zkompilovat – převést do HEX souboru. Já používám AVR Studio.
Zde se musí nejprve vytvořit projekt a poté vložit program v assembleru do vytvořeného projektu.
Nazvat projekt
Vybrat procesor a kliknout na finish
Dále se objeví prázdné okno, do kterého se píše program a kam se může jednoduše zkopírovat zdrojový program
Po úpravě se program přeloží – build->build. právně zkompilovaný program vypadá takto