Keluarga Infokom

Keluarga Infokom

tugas responsi mikro ganjil

Ganjil

MCU EduBoard v2.0 (made by order)


Modul MCU Eduboard merupakan salah satu solusi untuk menguasai pemrograman dan perancangan sistem berbasis mikrokontroller AVR dan MCS51.

MCU Eduboard terdiri dari rangkaian input, ouput, interface parallel dan UART, interface Keyboard, display seven segmen dan LCD, akses eksternal Serial EEPROM, RTC, DAC dan ADC, output suara Buzzer dan speaker, output Relay, motor DC dan motor stepper, sehingga modul ini cukup lengkap untuk merancang berbagai macam system berbasis rangkaian digital menggunakan mikrokontroller.

MCU Eduboard dapat digunakan para Hobbies, Trainer, sekolahan, kampus, maupun keperluan penelitian yang membantu dalam proses belajar mengajar serta penelitian sehingga diperoleh hasil yang lebih maksimal.

Menggunakan perangkat sederhana, fungsionalis, bermutu, dan berkualitas dapat membantu mengembangkan kemampuan dan pengetahuan anda, Explore Your Brain.

Spesification

  • Dimensi P x L x T :
  • Power Supply Input : +5 Vdc, +12 Vdc, dan -12 Vdc

Processor

  • AVR ATmega8535 (Bisa diganti dengan tipe AVR : ATmega8, ATmega16, ATmega32, dll)
  • Frekuensi Kristal AVR : 11,0592 MHz
  • AT89S51 (Bisa diganti dengan tipe MCS51 : AT89S52, AT89S53, AT89S8252, dll)
  • Frekuensi Kristal MCS51 : 11,0592 MHz

Input

  • Keypad matriks 4 x 4
  • Potensiometer (Range 0 Vdc – 5 Vdc) : 4 channel
  • Push Button NO (Normally Open) : 8 bit
  • Toggle Switch (High-Low Logic) : 8 bit

Output

  • LED CA (Common Anode) : 8 bit
  • LED CC (Common Catode) : 8 bit
  • Relay 12 Vdc : 8 bit
  • Buzzer 5 Vdc
  • Speaker + driver speaker

Display

  • Seven Segmen CA (Common Anode) : 8 digit
  • LCD Karakter 16 x 2

Interface

  • USB interface (versi 2.01)
  • Parallel : Port Data, Port Status, dan Port Control (LPT Port)
  • TTL - RS232 Converter (COM Port)
  • TTL – RS485 Converter (Half Duplex)
  • PS2 Keyboard Interface

Driver Motor

  • Driver Motor DC dgn PWM / On-Off controller.
  • Driver Motor Stepper Unipolar
  • Driver Motor Stepper Bipolar

IC Digital

  • ADC 0804
  • DAC 0808
  • RTC DS1302 + Baterai Backup
  • Serial EEPROM AT93C66

Mikrokontroler AT89S51

FITUR:
1. Kompatibel dengan produk MCS-51
2. 4K byte In System Programmable Flas Memory
Dapat dilakukan pemrograman 1000 tulis dan hapus
3. Range catu daya 4,0V s/d 5,0V
4. Operasi statis: 0 Hz s/d 33 MHz
5. Tiga Tingkat Program memory lock
6. 128 x 8 bit RAM internal
7. 32 Programmable Jalur I/O
8. Dua 16 bit Timer/ Counter
9. Enam Sumber Interupsi
10. Full Duplex Serial Channel
11. Low Power Idle dan Mode Power Down
12. Watcht Dog Timer
13. Dula Data Pointer
14. Power Off Flag
15. Fast Programming Time
16. Fleksibel ISP programming

FITUR:
1. Kompatibel dengan produk MCS-51
2. 4K byte In System Programmable Flas Memory
Dapat dilakukan pemrograman 1000 tulis dan hapus
3. Range catu daya 4,0V s/d 5,0V
4. Operasi statis: 0 Hz s/d 33 MHz
5. Tiga Tingkat Program memory lock
6. 128 x 8 bit RAM internal
7. 32 Programmable Jalur I/O
8. Dua 16 bit Timer/ Counter
9. Enam Sumber Interupsi
10. Full Duplex Serial Channel
11. Low Power Idle dan Mode Power Down
12. Watcht Dog Timer
13. Dula Data Pointer
14. Power Off Flag
15. Fast Programming Time
16. Fleksibel ISP programming

DISKRIPSI:
AT89S51 mempunyai konsumsi daya rendah, mikrokontroller 8-bit CMOS dengan 4K byte momori Flash ISP ( in system programmable/ dapat diprogram didalam sistem).Divais ini dibuat dengan teknologi memori nonvolatile kerapatan tinggi dan kompatibel dengan standart industri 8051, set instruksi dan pin keluaran. Flash yang berada didalam chip memungkinkan memori program untuk diprogram ulang pada saat chip didalam sistem atau dengan menggunakan
Programmer memori nonvolatile konvensional. Dengan mengkombinasikan CPU 8 bit yang serbaguna dengan flash ISP pada chip, ATMEL 89S51 merupakan mikrokontroller yang luarbiasa yang memberikan fleksibelitas yang tinggi dan penyelesaian biaya yang efektif untuk beberapa aplikasi kontrol.

AT89S51 memberikan fitur-fitur standar sebagai berikut: 4K byte Flash, 128 byte RAM, 32 jalur I/O, Timer Wachtdog, dua data pointer, dua 16 bit timer/ counter, lima vektor interupsi dua level, sebuah port serial full dupleks, oscilator internal, dan rangkaian clock. Selain itu AT89S51 didisain dengan logika statis untuk operasi dengan frekuensi sampai 0 Hz dan didukung dengan mode penghematan daya. Pada mode idle akan menghentikan CPU sementara RAM, timer/ counter, serial port dan sistem interupsi tetap berfungsi. Mode Power Down akan tetap menyimpan isi dari RAM tetapi akan membekukan osilator, menggagalkan semua fungsi chip sampai interupsi eksternal atau reset hardware ditemui.

DISKRIPSI PIN

VCC = Tegangan Supply

GND = Ground

Port 0
Port 0, merupakan port I/O 8 bit open drain dua arah. Sebagai sebuah port, setiap pin dapat mengendalikan 8 input TTL. Ketika logika “1” dituliskan ke port 0, maka port dapat digunakan sebagai input dengan high impedansi.
Port 0 dapat juga dikonfigurasikan untuk multipleksing dengan address/ data bus selama mengakses memori program atau data eksternal. Pada mode ini P0 harus mempunyai pull up

Port 1
Port 1 merupakan port I/0 8 bit dua arah dengan internal pull up. Buffer output port 1 dapat mengendalikan empat TTL input. Ketika logika “1” dituliskan ke port 1, maka port ini akan mendapatkan internal pull up dan dapat digunakan sebagai input.
Port 1 juga menerima alamat byte rendah selama pemrograman dan verifikasi Flash

Port Pin Fungsi Alternatif
P1.5 MOSI ( digunakan untuk In System Programming )
P1.6 MISO ( digunakan untuk In System Programming )
P1.7 SCK ( digunakan untuk In System Programming )

Port 2
Port 2 merupakan port I/O 8 bit dua arah dengan internal pull up. Buffer output port 2 dapat mengendalikan empat TTL input. Ketika logika “1” dituliskan ke port 2, maka port ini akan mendapatkan internal pull up dan dapat digunakan sebagai input.

Port 3
Port 3 merupakan port I/O 8 bit dua arah dengan internal pull up. Buffer output port 3 dapat mengendalikan empat TTL input. Ketika logika “1” dituliskan ke port 3, maka port ini akan mendapatkan internal pull up dan dapat digunakan sebagai input.
Port 3 juga melayani berbagai macam fitur khusus, sebagaimana yang ditunjukkan pada tabel berikut:



RST
Input Reset. Logika high “1” pada pin ini untuk dua siklus mesin sementara oscilator bekerja maka akan mereset devais.

ALE/ PROG
Address Latch Enale ( ALE ) merupakan suatu pulsa output untuk mengunci byte low dari alamat selama mengakses memori eksternal. Pin ini juga merupakan input pulsa pemrograman selama pemrograman flash ( paralel )
Pada operasi normal, ALE mengeluarkan suatu laju konstan 1/6 dari frekuensi oscilator dan dapat digunakan untuk pewaktu eksternal.

PSEN
Program Store Enable merupakan strobe read untu memori program eksternal.

EA/ VPP
Eksternal Access Enable. EA harus di hubungkan ke GND untuk enable devais, untuk memasuki memori program eksternal mulai alamat 0000H s/d FFFFH.
EA harus dihubungkan ke VCC untuk akses memori program internal
Pin ini juga menerima tegangan pemrogramman ( VPP) selama pemrograman Flash

XTAL1
Input untuk penguat oscilator inverting dan input untuk rangkaian internal clock

XTAL2
Output dari penguat oscilator inverting.

Robot Avoider dengan 89S51 serta ADC 8 Channel

Kit aplikasi ini ialah penerapan mikrokontroler 89S51, sensor jarak sharp GP2D12 dan kit ADC 0809 8 ch sebagai robot avoider menggunakan bahasa assembly. Kit yang dibutuhkan ialah :

1. Sistem Minimum 89s51/52/8252 atau DT 51 Low Cost Micr System Starter Pack (Sudah sama kabel ISP)

2. Kit ADC 0809 Delta

3. Sensor Sharp GP2D12

4. IC L293d

5. Roda serbaguna dengan motor dc.

6. Tempat baterai

ADC 0808/0809

Adapun spesifikasi yang dimiliki ADC0809 yaitu total unadjusted Error ±1.2 LSB and ±1 LSB dengan resolusi 8 bit, dan memiliki waktu konversi 100ms dan catu daya yang digunakan +5volt DC dengan daya 15mW, dengan spesifikasi yang dimiliki oleh A/D inilah yang menyebabkan A/D ini mudah untuk digunakan diberbagai rangkaian interface, hanya pada rangakaian A/D ini perlu adanya penambahan rangkaian clock

Dari Konfigurasi pin ADC0809 yang ditunjukan pada gambar terdapat 28 buah pin dimana masing-masing pin pada A/D berfungsi antara lain Pin 8,14,15,17,18,19,20,21 merupakan keluaran data digital hasil konversi dari A/D dimana kedelapan keluaran ini dapat langsung dihubungkan ke data bus. Dan Pin 1,2,3,4,5,26,27,28 merupakan pin masukan yang terdapat 8 pin atau 8 jalur input, pada pin inilah sinyal analog yang akan dikonversikan dihubungkan, sedangkan pin 23,24,25 merupakan pin A,B,C yang berfungsi sebagai pemilih jalur input mana yang akan dikonversikan, dan pin-pin yang lainnya sama halnya dengan ADC0804, agar delapan input dapat dikonversikan berikut ini tabel kebenarannya :

Input ke ADC 0809 haruslah berupa tegangan analog dari keluaran sensor yang biasanya besarannya berkisar dari 0-5V.

Gambar Kit ADC 0809 Delta :

Sebagai sensor jarak digunakan sensor jarak infrared Sharp GP2D12 dengan output analog yang terhubung di ch 0 kit ADC. Sebagai driver Motor DC, menggunakan IC L293D sebagai driver motor DC. Untuk menggerakkan driver motor DC, digunakan port 2.

Berikut ini contoh rangkaian L293d yang dapat mengemudikan 2 buah motor DC GT1/GT5 atau lainnya atau 1 buah stepper motor.

Algoritma

Konfigurasi ADC

Begin

Baca sensor 1

If jarak luas

Gerak maju

End if

If jarak pendek

Mundur

End if

end

Berikut cuplikan kode assembly menggunakan ASM51

mov p3,#00000000b ; set sensor depan (ch0)

; mov p3,#00000001 : set sensor samping (ch1) dan seterusnya

; jika ingin pasang sensor tambahan sebanyak 8 bh

LOOP:

mov a,p0 ; baca sensor, keluaran 8 bit dari ADC 0809

mov p1,p0 ; tampilkan juga di port 1

cjne a, #0ffh, maju1 ; jika tidak sama dengan 0ffH, lompat ke lable maju1

MOV P2,#00001010b ; gerakkan robot maju

acall L_TUNDA ; panggil prosedur tunda

jmp LOOP

…

MOV P2, #00000001b ; belok

Acall L_TUNDA ; Panggil Procedure penundaan waktu

Acall L_TUNDA ; Panggil Procedure penundaan waktu

Acall L_TUNDA ; Panggil Procedure penundaan waktu

Acall L_TUNDA ; Panggil Procedure penundaan waktu

JMP LOOP ; Loncat Ke Procedure Loop

;Prosedur penundaan waktu selama 050Hx075H (konversi dalam us)

L_TUNDA: ; Label L_TUNDA

MOV R7,#050h ; Isikan Register 7 dengan data 050H

L_TUNDA_1: ; Label L_TUNDA

ACALL TUNDA ; Panggil Prosedure Tunda

Djnz R7,L_TUNDA_1 ; Kurangi Nilai Register7 (R7)

; dengan 1 jika belum sama dengan 0 loncat ke prosedure L_TUNDA_1

RET ;Kembali

TUNDA: ; label TUNDA

MOV R6,#075H ; Isikan Register 6 (R6) dengan data 075H

DJNZ R6,$ ; Kurangi Nilai Register6 (R6)

; dengan 1 jika belum sama dengan 0

; Terus kurangi. (waktu akan tertunda selama beberapa uS pada kristal 11.0592 ;MHz)

RET ; Kembali

END

Tugas pendahuluan mikroprosesor

14.26 by admin 0 komentar
deadline kamis, jam 4 sore

genap
1. Buatlah tabel ascii secara lengkap
2. Buatlah konfigurasi pin beserta keterangannya ATMEGA 8535
3. Buatlah aplikasi wiring diagram dari ATMEGA 8535

ganjil
1. Buatlah deskripsi MCU, eduboard, 1.02.1109
2. Buatlah konfigurasi beserta keterangannya mikrokontroler AT89S51
3. Buatlah aplikasi AT89S51 beserta wiring diagramnya

nb :
- tugas per kelompok, satu kelompok satu
- format seperti laporan biasanya
- tulis tangan, tinta biru

Tugas Interface dan Peripheral

12.22 by infokers 1 komentar
Untuk tugas interface dan peripheral tentang LCD 2x26 keypad 3x4 relay lampu dengan Atmega 8535 bisa didownload di sini

Kisi-kisi UAS Arsikom dan PBR

Kisi - Kisi Assembler

1. Representasi Bilangan * hex<->Bin<->dec
2. Dasar uP -> * read/write , addressing
3. Konversi Physical Address <-> Logical Address *segment:offset
4. Interupsi DOS, BIOS (int BIOS 00 - 1F) int DOS 20 - FF H
    *interupsi 21 no 2/no 9 no 1,  REGISTER2
5. Program sederhana dlm assembler *(membuat program, membaca prog)
6. Operasi Aritmetika
7. loop
8. Stack Pointer
close book

Arsiskom

1. Blok Diagram uP -> CPU, Memory dan I/O
2. Register
3. Multiplexer/ Demux
4. Address Decoder
5. Mikroprogram
6. State diagram

close book

Soal Tugas Multimedia

Softcopy Presentasi MID
PR Audio

1. Sample Voice
ambil suara anda dengan t=1-2 second
check f=...?
         A=...?
         dB=...?
2. Handphone
tentukan jenis tipe HP anda
check apakah ada ADC/DAC-nya = PCM (Pulse Code Modulation) x bit ?
berapa sample rate? berapa sample size?
berapa channel?
3. mp3 bagaimana diagram blok pemrosesannya?
PR Video
1. Video quality
up to date
HD TV, full HD, Digital Cinema (4K)
2. USB & firewire
teknologi, spesifikasi, kelebihan & kekurangan
3. Monitor / LCD jenis interlace atau progressive
PR Animasi (Softcopy)
Buatlah animasi mata melirik, bola, jari, roda, berlari
PR Platform dan Peripheral
Carilah arti dari digital zoom
Pilihlah salah satu jenis dari platform software dan hardware dan spesifikasinya
Pilihlah salah satu jenis dari peripheral jelaskan spesifikasinya
PR Kompresi
study is my hobby. my future is on my hand.
buatlah kompresi rle, huffman, dan lzw
PR Kompresi Audio
Jelaskan apa yang dimaksud dengan FLAC
Jelaskan apa yang dimaksud dengan Vorbis
PR Virtual Reality (Softcopy)
Jelaskan aplikasi VR pada
Arsitektur
Engineering
Entertainment
Medical
Training
Militer
E-commerce
Manufacturing

Tugas PBR Membuat Pertanyaan

19.20 by infokers 0 komentar
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
HelloMessage DB 'Selamat datang di kuis Ya atau Tidak',13,10,'$'
Satu DB 'Pertanyaan pertama, apakah benar assembly adalah bahasa mesin (y/t)',13,10,'$'
Dua DB 'Pertanyaan kedua, apakah benar assembly setelah dicompile berformat .asm (y/t)',13,10,'$'
Tiga DB 'Pertanyaan ketiga, apakah interupt layanan 01 terdapat echo (y/t)',13,10,'$'
Empat DB 'Pertanyaan keempat, apakah benar mov berfungsi untuk memindah data (y/t)',13,10,'$'
Lima DB 'Pertanyaan lima, apakah benar anda anak infokom (y/t)',13,10,'$'
Hore DB 'Selamat kamu dapat uang 1juta, dibayar dalam mimpi',13,10,'$'
Gagal DB 'Kamu salah, Sayang sekali kamu pulang dengan tangan kosong',13,10,'$'
Ulang DB 'Ingin mengulang kembali (y/t)',13,10,'$'


.CODE
mov ax,@data
mov ds,ax ;set DS to point to the data segment
mov ah,9 ;DOS print string function
mov dx,OFFSET HelloMessage ;point to
int 21h ;display
jmp aa

aa: mov ax,@data
mov ds,ax ;set DS to point to the data segment
mov ah,9 ;DOS print string function
mov dx,OFFSET Satu ;point to
int 21h ;display
mov ah,07
int 21h
mov bl,al
cmp al,'t'
je a
jmp e
a: mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET Dua
int 21h
mov ah,07
int 21h
mov bl,al
cmp al,'t'
je b
jmp e
b: mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET Tiga
int 21h
mov ah,07
int 21h
mov bl,al
cmp al,'y'
je c
jmp e
c : mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET Empat
int 21h
mov ah,07
int 21h
mov bl,al
cmp al,'t'
je d
jmp e
d : mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET Lima
int 21h
mov ah,07
int 21h
mov bl,al
cmp al,'y'
je he
jmp e
he : mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET Hore
int 21h
mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET Ulang
int 21h
mov ah,07
int 21h
mov bl,al
cmp al,'t'
je dada
jmp aa
e : mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET Gagal
int 21h
mov ax,@data
mov ds,ax
mov ah,9
mov dx,OFFSET Ulang
int 21h
mov ah,07
int 21h
mov bl,al
cmp al,'t'
je dada
jmp aa

dada : mov ah,4ch ;DOS terminate program function
int 21h ;terminate the program
END

Different limits for Local/Overseas traffic for 3 bandwitch rates using pcq and queue tree

03.21 by infokers 0 komentar

From MikroTik Wiki

1. Introduction

Let's consider the scenario where you want to apply different limits for many users to Local and Overseas traffic and don`t want to load cpu with a lot of simple queues and want sell 3 different bandwidth rates.
12/6 Mbps Latvian Traffic 1Mbps/512Kbps Overseas traffic
6/3 Mbps Latvian Traffic 512kbps/256Kbps Overseas traffic
4/2 Mbps Latvian Traffic 256Kbps/128Kbps Overseas traffic
We will limit the data rate for the Local country traffic and Overseas traffic using Queue Trees. In this scenario, the local country is Latvia. A list of all Latvian subnets is located at http://www.nic.lv/local.net.

2. Configuration

/ ip firewall address-list
add list=12/6 address=192.168.0.2 comment="12/6mbps Local traffic 1mbps/512kbps overseas"
add list=6/3 address=192.168.0.3 comment="6/3mbps Local traffic 512kbps/256kbps overseas"
add list=4/2 address=192.168.0.4 comment="4/2mbps Local traffic 256kbps/128kbps overseas"
add list=Latvia address=159.148.0.0/16
add list=Latvia address=193.41.195.0/24
add list=Latvia address=193.41.33.0/24
add list=Latvia address=193.41.45.0/24
add list=Latvia address=193.68.64.0/19
add list=Latvia address=193.108.29.0/24
add list=Latvia address=193.108.144.0/22
add list=Latvia address=193.108.185.0/24
/ ip firewall mangle
add chain=forward action=mark-packet new-packet-mark=LV_DL_6M passthrough=yes \
    in-interface=public src-address-list=latvia comment="Default mangle for \
    Latvia Download"
add chain=forward action=mark-packet new-packet-mark=LV_UL_3M passthrough=yes \
    in-interface=local dst-address-list=latvia comment="Default mangle for \
    Latvia Upload"
add chain=forward action=mark-packet new-packet-mark=OS_DL_512k \
    passthrough=yes in-interface=public src-address-list=!latvia \
    comment="Default mangle for Oversea Download"
add chain=forward action=mark-packet new-packet-mark=OS_UL_256k \
    passthrough=yes in-interface=local dst-address-list=!latvia \
    comment="Default mangle for Oversea Upload"
add chain=forward action=mark-packet new-packet-mark=LV_DL_12M passthrough=no \
    in-interface=public src-address-list=latvia dst-address-list=12/6 \
    comment="Tarif 12/6 Latvia Download"
add chain=forward action=mark-packet new-packet-mark=LV_UL_6M passthrough=no \
    in-interface=local src-address-list=12/6 dst-address-list=latvia \
    comment="Tarif 12/6 Latvia Upload"
add chain=forward action=mark-packet new-packet-mark=OS_DL_1M passthrough=no \
    in-interface=public src-address-list=!latvia dst-address-list=12/6 \
    comment="Tarif 12/6 Oversea Download"
add chain=forward action=mark-packet new-packet-mark=OS_UL_512k passthrough=no \
    in-interface=local src-address-list=12/6 dst-address-list=!latvia \
    comment="Tarif 12/6 Oversea Upload"
add chain=forward action=mark-packet new-packet-mark=LV_DL_4M passthrough=no \
    in-interface=public src-address-list=latvia dst-address-list=4/2 \
    comment="Tarif 4/2 Latvia Download"
add chain=forward action=mark-packet new-packet-mark=LV_UL_2M passthrough=no \
    in-interface=local src-address-list=4/2 dst-address-list=latvia \
    comment="Tarif 4/2 Latvia Upload"
add chain=forward action=mark-packet new-packet-mark=OS_DL_256k passthrough=no \
    in-interface=public src-address-list=!latvia dst-address-list=4/2 \
    comment="Tarif 4/2 Oversea Download"
add chain=forward action=mark-packet new-packet-mark=OS_UL_128k passthrough=no \
    in-interface=local src-address-list=4/2 dst-address-list=!latvia \
    comment="Tarif 4/2 Oversea Upload"
/ queue type
add name="LV_DL_12M" kind=pcq pcq-rate=12000000 pcq-classifier=dst-address
add name="LV_DL_6M" kind=pcq pcq-rate=6000000 pcq-classifier=dst-address
add name="LV_DL_4M" kind=pcq pcq-rate=4000000 pcq-classifier=dst-address
add name="LV_UL_6M" kind=pcq pcq-rate=6000000 pcq-classifier=src-address
add name="LV_UL_3M" kind=pcq pcq-rate=3000000 pcq-classifier=src-address
add name="LV_UL_2M" kind=pcq pcq-rate=2000000 pcq-classifier=src-address
add name="OS_DL_1M" kind=pcq pcq-rate=1000000 pcq-classifier=dst-address
add name="OS_DL_512k" kind=pcq pcq-rate=512000 pcq-classifier=dst-address
add name="OS_DL_256k" kind=pcq pcq-rate=256000 pcq-classifier=dst-address
add name="OS_UL_512k" kind=pcq pcq-rate=512000 pcq-classifier=src-address
add name="OS_UL_256k" kind=pcq pcq-rate=256000 pcq-classifier=src-address
add name="OS_UL_128k" kind=pcq pcq-rate=128000 pcq-classifier=src-address
/ queue tree
add name="LV_DL_12M" parent=local packet-mark=LV_DL_12M queue=LV_DL_12M
add name="LV_DL_6M" parent=local packet-mark=LV_DL_6M queue=LV_DL_6M
add name="LV_UL_2M" parent=public packet-mark=LV_UL_2M queue=LV_UL_2M
add name="LV_DL_4M" parent=local packet-mark=LV_DL_4M queue=LV_DL_4M
add name="LV_UL_3M" parent=public packet-mark=LV_UL_3M queue=LV_UL_3M
add name="LV_UL_6M" parent=public packet-mark=LV_UL_6M queue=LV_UL_6M
add name="OS_DL_1M" parent=local packet-mark=OS_DL_1M queue=OS_DL_1M
add name="OS_DL_256k" parent=local packet-mark=OS_DL_256k queue=OS_DL_256k
add name="OS_DL_512k" parent=local packet-mark=OS_DL_512k queue=OS_DL_512k
add name="OS_UL_128k" parent=public packet-mark=OS_UL_128k queue=OS_UL_128k
add name="OS_UL_256k" parent=public packet-mark=OS_UL_256k queue=OS_UL_256k
add name="OS_UL_512k" parent=public packet-mark=OS_UL_512k queue=OS_UL_512k


3. Explanation

In /ip firewall address-list we created 3 lists for bandwidth profiles and a list named Latvia for Latvian subnets. In /ip firewall mangle we created address-list-based packet marks for use with bandwidth profiles. All IPs which are not included in any address list will fall through to secondary bandwidth profile rates. In /queue types we created pcq types for bandwidth profiles. In /queue tree we created rules with Local/Overseas packet marks and queue types for bandwidth profiles.
Now, a customer with an IP of 192.168.0.2 will have 1 profile rate, a customer with an IP 192.168.0.3 will have 2 profile rates, a client with IP 192.168.0.4 have 3 profile rates, and all others will have 2 bandwidth rates; so all traffic will be limited and your cpu power will be free for other tasks.

Important note

This setup will work correctly if local network is not masqueraded. If masquerade is used then the parent for all upload queues must be 'global-out' instead of 'public'. The reason for this is that the pcq_upload classifier is source address. In case of masquerading, the source address is changed to public IP address. If a queue is set to 'public', interface pcq will think that all packets are coming from one source ( public IP ). PCQ must see the source address before masquerading occurs; according to the packet flow diagram from the manual, 'global-out' is before 'src-nat'.