pondělí 12. září 2011

UART na ADuC702x

Výpočet konstant pro určitou přenosovou rychlost.

BaudRate
Frekvence
CD
DL
Skytečný BaudRate
Chyba BaudRate v %

čtvrtek 1. září 2011

Programování FLASH ADuC702x

Pro programování FLASH paměti stačí připojit ADuC702x sériovou linkou. Pozor některé MCU mají I2C bootloadres, viz následující tabulka. I2C bootloader je označen I na konci zančení. Například ADuC7021BCPZ62 je s UARTEM a ADuC7021BCPZ62I je s I2C.

Logický analyzátor a osciloskop s rozhraním USB

Stavba se nejprve ubírala směrem ke klonu podle Pandatronu [1]. Bohužel výrobce takové klony nerad podporuje, proto se bránil formou nového FW, viz diskuze na MCU[2]. Nakonec používám zařízení založené na zapojení [3].

Přidávám několik naměřených průběhů:


Průběh napětí MC34063

Popis ADuC7021

MCU s jádrem ARM7TDMI RISC 32bit
Periferie - AD převodník 12bit 1 MSPS
               - DA převodník 12bit
               - PWM
               - Komparátor
               - UART
               - I2C®
               - SPI
               - Programovatelná logika IO pinů (PLA)
               - PLL pro získání hodinového kmitočtu z vnitřního nebo externího 32,768 kHz oscilátoru

Taktování ADuC702x

Časování, různé módy a předděličku ovládá registr POWCON.

GPIO u ADuC702x

IO porty jsou 5V kompatibilní, mají vnitřní pull-up (100 kΩ). Pull-up je možné vypnout u P0.0, P0.4, P0.5, P0.6, P0.7 a GPIO pinů portu P1. Při uspání MCU se porty přepnou do stavu vysoké impedance.

Nastavení funkce pinů GPxCON.

středa 27. července 2011

USB Serial + Storage

OpenWRT 10.03.1-rc5
nainstalovat balíčky
opkg install kmod-usb2 kmod-usb-storage kmod-usb-uhci kmod-usb-ohci kmod-nls-iso8859-1 kmod-nls-cp437 kmod-fs-vfat kmod-fs-ext2 kmod-fs-ext3 kmod-fs-ext4 nano kmod-usb-serial-ftdi luci-app-hd-idle luci-app-wol bash


Pro čtení i zápis na NTFS je nutný balíček ntfs-3g

Pomocí luci-app-hd-idle je možné nastavit čas po jehož uplynutí se HDD uspí.


Díky luci-app-wol můžeme rozesílat magic pakety k zapínání počítačů.



středa 8. června 2011

Další z možností vložení asembleru do C


Další z možností vložení asembleru do C v KEILu. Dokonce funguje krokování v C i v Asembleru.

soubor DA.asm


NAME    DA_FUNC

?PR?da_func?DA_FUNC    SEGMENT CODE
    PUBLIC  da_func

    RSEG  ?PR?da_func?DA_FUNC
da_func:
    USING   0
    ;DEC        A
    ;INC        A
    DA      A
    RET

    END
 soubor main.c

extern void da_func(void);

void main()
{
               
da_func();

}


Pokus o kompilaci WRTáku a balíčků

stáhnout
http://downloads.openwrt.org/backfire/10.03/brcm47xx/OpenWrt-ImageBuilder-brcm47xx-for-Linux-i686.tar.bz2
http://downloads.openwrt.org/backfire/10.03/brcm47xx/OpenWrt.config
make menuconfig
načteme konfiguraci, přidáme volby SDK, Toolchair a ukončíme
make -j 3
spustíme a počkáme
stoličku si také přeložíme

Postup instalace do Ubuntu i jiné distribuce je na:
http://wiki.openwrt.org/doc/howto/buildroot.exigence
Balíčky pro Ubuntu x64
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core quilt
Vlastní Build je popsán na:
http://wiki.openwrt.org/doc/howto/build

pátek 20. května 2011

Linux praktické příkazy

Zobrazení všech rozhraní
iwconfig
zobrazení nastavení všech rozhraní (obdoba ipconfigu)
ifconfig
detekce WiFi karty
wifi detect >  /etc/config/wireless
jak zapnout WiFi ve firmware 500gP OpenWRT
v souboru /etc/config/wireless
option 'disabled' '0'
změnit na option 'disabled' '1'
může se také hodit seznam WiFi kanálů
http://wiki.airdump.cz/Seznam_WiFi_kan%C3%A1l%C5%AF_pro_WLAN

Karta z notebooku MSI RT-2560 funguje s ovladačem kmod-rt2500-pci.


Přesměrování výstupu do souboru (i chybové hlášky)
/usr/local/bin/oscam > /tmp/log.txt 2>&1 

úterý 5. dubna 2011

Sériová linka + přerušení



        org     0000H    ; začátek programu po resetu

        jmp     init
        org     000BH    ; přerušení od čítače/časovače0
        jmp     T0int
        org     0023H    ; přerušení od sériové linky
        jmp     Sint       
        org     30H

C0L     EQU     30h
C0H     EQU     31h
REZIM   EQU     32h 
CAS     EQU     33h
roste   BIT     0

úterý 15. března 2011

MAM Generátor průběhů


#include <reg51.h>
#define PortDA P1 
// 0 obdélník, 1 trojúhelník, 2 pila, 3 sinus
unsigned char sinus_pole[] = {127, 152, 176, 198, 217, 233, 244, 252, 254, 252, 244
,233, 217, 198, 176, 152, 127, 102, 79, 57, 37, 22, 10, 2, 0, 2, 10, 21, 37, 56, 78, 102} ;


úterý 8. března 2011

Ukazatel nebo pole?

// | ~ & µ $ ##include <reg552.h>
code unsigned char funkce_F[16] = {0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01, 0x00,0x01,0x00,0x01,0x01,0x01,0x00,0x01};
int main()
{
unsigned char vstup;
while(1)
{
vstup = P1;
//if (funkce_F[vstup]==1) P1|=0x04; else P1 &= ~0x04;
if (*(funkce_F+vstup)==1) P1|=0x04; else P1 &= ~0x04;
}
}