Monday, February 20, 2012

Analizator antenowy w/g VK5JST i problem Ohma

Postanowiłem sobie zbudować analizator antenowy w/g koncepcji VK5JST z rozszerzeniami kolegi SP2JJH. Wszystko udało się bez większych problemów, analizator ruszył od pierwszego włączenia. Niestety wszystko psuła jedna mała "rzecz". Na żadnym posiadamym przeze mnie wyświetlaczu nie wyświetlał się prawidłowo symbol Ohma czyli litera Omega.
Pewnie owe chińskie produkty mają inną tablicę kodową, gdyż zdecydowanie był to ichni krzaczek :)

Zajmuje się hobbystycznie też programowaniem mikrokontrolerów, ale jak dotąd nie miałem okazji bawić się PIC'ami a tylko AVR'ami, MSP430 oraz procesorami ARM Cortex-M0. Analizując z pomocą Arduino co tam mają pod adresem 0xF4, którego używa oryginalny program w każdym LCD jaki miałem był ten sam "krzaczor". Ponieważ chciałem aby rozwiązanie było przenośne postanowiłem wykorzystać dostepną pamięć CGRAM. Wycieczka do AVT po programator PIC i zacząłem zabawę.

Każdy wyświetlacz ma  pierwsze 8 rejestrów dostepnych jako zapisywalne przez użytkownika dla jego własnych symboli. Co do szczegółów odsyłam do Wikipedii gdzie jest szczegółowy opis sterownika HD44780.

Największym problemem okazało się skonfigurowanie środowiska MPLAB 8 z kompilatorem CC5X używanym przez VK5JST. Dwie godziny potem środowisko było gotowe i kompilator prawidłogo kompilował oryginalny kod.
Cała reszta to przyjemność programowania :) Co mi się podoba w MPLAB i CC5X:

  • Jeśli wcześniej zadeklarujemy małe makro  np: pragma bit LED_0 @ PORTB.0 to potem zmiana stanu tego portu to poprostu LED_0=1 ! Żadnych &= ~() czy |= na całym rejestrze. Bardzo przyjemna i czytelna sprawa.
  • Pomimo "dziwnego" interfejsu MPLAB 8 - bardzo szybko można zacząć pracować bez dziesiątek wizardów, innych utrudniaczy, czy importowania dziesiątek bibliotek.
A jak wyglądają owe zmiany. Tutaj znajdziecie źródła z moimi poprawkami oraz plikiem wsadowym hex do PIC'a ant-anl-0.04.zip. Napisałem do Vadima, więc może niedługo znajdzie się to w oficjalnym kodzie.
Dla tych co nie chcą dłubać przez cały kod:
  1. Deklaracja tablicy zawierającej opis graficzny litery Omega w pliku lcd_nmix.c
    const char ohm[8] ={0b00000,0b00000,0b01110,0b10001,0b10001,0b01010,0b11011,0b00000};
    
    Każdy bajt opisuje jakie pixele mają być włączone dla każdej z 8 poziomych linii znaku graficznego 5x8 pixeli. Tak więc znaczenia ma tylko pierwsze 5 bitów.
  2. Kod zapisujący znak Omega do pamięci CGRAM w lcd_nmix.c:
    void lcd_add_ohm(void)
    {
    LCD_RS=0;
    lcd_write(0x40);
    LCD_RS=1;
    delay_us(40);
    // send ohm character
    for(k=0;k<8;k++) { lcd_write(ohm[k]);}
    //switch back to DRAM
    LCD_RS=0;
    cd_write(0x80);
    LCD_RS=1;
    delay_us(40);
    
  3. Wywołanie powyższej funkcji w inicjacji wyświetlacza lcd_init(void) w lcd_nmix.c
  4. Zmiana adresu z pod jakiego brać symbol Ohma w aa_defs.h:
    #define LCD_OHM 0x00
I to wszystko. Tak więc programowanie PIC'ów nie takie straszne i w sumie poza drobnymi niuansami różnic pomiędzy 8-bitowcami nie ma.


Monday, March 21, 2011

Eco server iConnect - part 1. A little of soldering.

As I mentioned in my fist post here is first part of my story how I made eco server out of Iomega iConnect.
Before making server out of iConnect you have to get serial access to uboot and console. Without that you just have black box :)
iConnect have internal UART 3.3V interface inside. Iomega was kind enough to not desoldering pins and serial console is ready to connect wires :)
Since having serial console outside your device will be very usefull I made external connection using 3.5mm stereo jack. Here is photo of my console external permement connection:

In order to make such setup i used:
  • 3.5 mm stereo jack socket
  • 3.5" floppy drive power connector
Floppy (for those who don't know what it is - here is explanation) power cable have the same pin raster like iConnect connector so it will fit perfectly. I removed on of wires from floppy cable since RS is using only 3 (RX,TX,GND) and moved color cables in original floppy cable between positions so black is GND, yellow is TX and red is RX.
I decided to place jack near RJ-45 socket since this is the only place where is enough space to make such output and it was safe to drill hole without removeing front panel. Please be carefull when making hole for jack socket - hole will be close to PCB - if your drill will "touch" board you can brick your device.
After that you can solder wires from floppy connector and jack.  Her is pinout specification:

And here is how this looks from front panel when device is closed:

Now I have access to serial at any time. Last think you need is rs-232 <-> UART 3.3 V converter and simple cable jack<-> RS-232. Do not connect iConnect serial port directly to your PC RS-232 port ! You need  voltage converter  for example one based on MAX232 intergrated circuit. Schematic how to use it you can find here (page 17) or if you need only schamatic that I used first it is this picture. If you want something more I prefer to use USB-TTL converter based on FT232RL. This one I just connect to PC USB and other side to my device. This is one made by myself (PCB bought in internet):

Now I have full console access to my iConnect on every PC and I started fun with software installation. This will be described in my next post.

Sunday, March 20, 2011

iomega iconnect as eco server

I'm sysadmin for many years and I had always my "private" server. My last one in my home was Epia VIA600 Mhz based powered by FreeBSD. Unfortunatelly after my father visit who accidently remove power cord using his foot (still don't know what he was doing behind my desk :) ) board was gone.

I decided to build new one, but this time I was looking for something more eco-friendly and less noisy since my "home server" is in my main room (technical wire obstacles). After some digging I found SheevaPlug. That was almost perfect. Only problem is that it is not avialable in Poland and I had realy bad experience with Polish Post Office, so buying it outside Poland was last resort.

Then I found this (http://www.plugapps.com/index.php5/Portal:Hardware) webpage. Segate Dockstar and Iomega iConnect are avialable in Poland :) I choose iConnect because it have 802.11n WiFi card (ralink RT3090) and more RAM (256MB). I was afraid that install might be problematic because there is not many webpages discussing Linux installation on iConnect but I was open to try.

I had some experience with embedded hardware in past so that was not so hard, however there are some issues I would like to share with you on my next post about Debian installation on iConnect.

Followers