Hanyho bastlírna
Poslední změny
Arduino - KeyCode/Alarm
Hardware
Mega8 Loader
Hardware
LPC interface
Hardware
Simple SNMP
Hardware
Řadič LCD
Hardware
Raspberry PI
Hardware
J-Link
Hardware
AVR miniTOOL
Hardware
ARM C3 STM32
Hardware
10-BaseT
Hardware
LCD SPI
Hardware
UDP Audio
Hardware
ZyXEL patch
Hardware
KIT NXP LPC17xx
Hardware
I2C LPT
Hardware
Digilent S3 DSP
Hardware
Xilinx DLC10
Hardware
Patmel USB
Hardware
POE injektor
Hardware
Xilinx ISE
Software

SNMP modul


SNMP modul pro minotorování nebo sběr dat 10mbit ethernetem, s mikrokontrolérem ATMEL mega48/88/168/328@20mhz, na piny je vyvedeno SPI rozhraní a ADC převodník, možno tedy použít jako teploměr, čidlo nějakého kontaktu, nebo naopak jako spínač relé apod....

inspirací pro toto řešení byl obvod ENC28J60 který se chová velice podobně jako celá konstrukce, ale bohužel nemá možnost měnit firmware, což bylo limitující a hledal jsem podobné řešení kde budu mít "kontrolu" nad komunikací a do výstupu půjde jen to co je potřeba pro aplikaci, zapojení je původní vysílač 10Base-T doplněný o přijímač s CPLD XC9536 aby odpadla potřeba několika desítek TTL obvodů, které by bylo potřeba pro zasynchronizování příchozích dat a generátoru link pulsu, součástí je ještě zdroj 9-18V na 5V pro využití možnosti napájení pasivním POE

vzhledem k malému početnímu výkonu mikrokontroléru AVR a vůči němu relativně velké rychlosti sítě je komunikace navržena halfduplexní, i když použitý hardware by umožňoval fullduplexní komunikaci, ale modul je navržen s ohledem na nízkou cenu a trvalý provoz tedy spolehlivost při sběru dat, nikoli na výkon, a proto je toto omezení únosné, případným řešením by bylo použití externí RAM jako paket bufferu, případně výkonějšího mikrokontroléru nebo HW kalkulátoru CRC32 ve větším CPLD do kterého by se takové zapojení vešlo...

použité obvody:
firmware využívá vlastnosti UARTu v režimu SPI této řady mikrokontroléru, která má dvojitý TX buffer, lze zapsat další data v průběhu odesílání předchozích, data jsou pak spojitá a není potřeba žádnou doplňující TX FIFO a řízení vysílání, tím je vyřešena celá vysílací část jak je podrobněji popsáno v 10Base-T, vlastnost přijímače vychází z potřeby SPI rozhraní "shiftovat" data při vysílání, proto je pro jednoduchost volena halfduplexní komunikace, začít přijímat data v průběhu vysílání by bylo sice možné, ale už by nebyl čas na jejich případnou analýzu a tento mikrokontrolér má pouze 1024 byte RAM a není možné případný přijatý rámec uložit pro pozdější analýzu, proto software pracuje s rámci ARP, ICMP, IP (UDP a TCP) do velikosti cca 512 byte, v CPLD je vytvořen RX demodulátor, digitální fázový zavěs, detekce startu rámce, počítadlo bitů, dvojitý RX buffer, rozhraní pro FIFO (byl použit obvod 74HC40105 který má 16x4 bitů, pokud by jsme potřebovali větší rámce museli by jsme použít nějakou SRAM/DRAM), TX modulátor, a pomocné řídící signály RXFRAME, INT, LNK_LED, ACT_LED...


firmware:

schéma zapojení:

schéma zapojení

modul je navrhnut tak aby obsahoval co nejméně součástek a tedy aby jeho pořizovací cena nebyla příliš vysoká, proto je například vypuštěn analogový fázový zavěs a je použit digitální s menší přesností, což zvyšuje chybovost přijímače, hodinový signál pro CPLD je získáván pomocí tranzistoru z taktu CPU, jako výstupní budič transformátoru je použita nevyužitá část přijímacího rozdílového zesilovače, což může za jistých okolností působit interference zejména pokud je použit dlouhý kabel apod...

deska plošných spojů:

strana součástek

fotografie v horní části stránky je starší verze, kde ještě nebyla použita FIFO (malá v CPLD byla nedostatečná, CPU má více času na čtení dat z přijímače), hodinový takt dodával oscilátor (předěláno z důvodu jeho vysoké ceny)...