ESP30076 임베디드시스템프로그래밍 (Embedded System Programming)

Størrelse: px
Starte visningen fra side:

Download "ESP30076 임베디드시스템프로그래밍 (Embedded System Programming)"

Transkript

1 Module 14: Kernel Timer ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부

2 주차별목표 리눅스에서커널타이머사용법알아보기 HZ, jiffies_64, struct timer_list 커널타이머를활용한하드웨어제어용디바이스드라이버작성 2

3 Timer 관련변수 HZ 리눅스커널에서주기적으로발생하는시스템타이머 interrupt 횟수 1 초에 HZ 상수값만큼발생 ( 예 ) HZ=100, 1 초에 system timer interrupt 100 번발생 #include <linux/timer.h> #define HZ 100 // <asm/param.h> jiffies_64 리눅스커널에서제공하는 global variable 커널전체에서동일한기준시간값제공 Scheduling 구현을위해 timer interrupt 가필요하고, 리눅스커널은 HZ 라는상수값을초기에설정함 3

4 get_jiffies_64() Timer interrupt 관련 HZ: 1 초당발생되는 timer interrupt 횟수 USER_HZ: HZ 값을보정하는수 jiffies: 커널 2.4 에서초당 HZ 값만큼증가하는전역변수 jiffies_64: 커널 2.6 에서초당 HZ 값만큼증가하는전역변수 get_jiffies_64(): jiffies_64 값을참조하기위한함수 HZ ARM: 100/128/200/1000 i386: 1000 x86-64: 1000 MIPS: 100/128 4

5 Timer API struct timer_list #include <linux/timer.h> struct timer_list { /*... */ unsigned long expires; void (*function)(unsigned long); unsigned long data; ; Kernel drivers with a number of functions to declare, register, and remove kernel timers void init_timer(struct timer_list *timer); struct timer_list TIMER_INITIALIZER(_function, _expires, _data); void add_timer(struct timer_list * timer); int del_timer(struct timer_list * timer); 5

6 timer_list <linux/timer.h> struct timer_list { /* * All fields that change during normal runtime grouped to the * same cacheline */ struct list_head entry; unsigned long expires; /* the timeout, in jiffies */ struct tvec_base *base; void (*function)(unsigned long); /* handler of the timeout */ unsigned long data; /* argument to the handler */ ; int slack; 6

7 일정주기로 LED 점멸되는드라이버작성 LED 구동시나리오 응용프로그램의인자가 1 8개의 LED가 0.5초단위로지속적으로점멸됨 #./test_timer_led 1 응용프로그램의인자가 0 파일명 모든 LED를끔 #./test_timer_led 0 응용프로그램 : test_timer_led.c 디바이스드라이버 : led_timer_driver.c 디바이스노드 : /dev/led_timer_device Major number: 247 7

8 구조체정의 Timer 로구동되는 LED 관리구조체 KERNEL_TIMER_STRUCT type struct { struct timer_list timer; unsigned long led_state; attribute ((packed)) KERNEL_TIMER_STRUCT; ptimermgr: LED 상태와 timer 를관리하기위한구조체 led_state 는 LED 점멸을결정하기위한상태변수값임 Timer handler 에 argument 를 timer 구조체주소로지정하는데, LED 점멸을위해 led 상태값 ( 여기서는 led_sate 임 ) 도같이보내기위해추가구조체를생성하고, 그구조체주소값을 argument 로보냄 8

9 흐름도 % insmod led_timer_driver.ko led_timer_init() - register_chrdev() - ioremap() - ptimermgr 선언 - init ptimermgr - led_timer_register() led_timer_register() - init_timer() - add_timer() led_timer_timeover() - LED blinking if led_blink=1 - LED off if led_blink=0 - led_timer_register() led_timer_exit() - LED turn off - del_timer() - kfree(ptimermgr) - iounmap() - unregister_chrdev() 사용자 system call write(fd, arg, count) - led_blink = arg(0 or 1) % rmmod led_timer_driver 9

10 타이머연동 LED 구동디바이스드라이버 (led_timer_driver.c) mkdir /root/work/dd/kernel_timer_led cd /root/work/dd/kernel_timer_led vi led_timer_driver.c /* LED Kernel Timer Example FILE: led_timer_driver.c */ #ifndef LED_KERNEL_TIMER_DRIVER_ #define LED_KERNEL_TIMER_DRIVER_ #include <linux/kernel.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/module.h> #include <asm/io.h> #include <asm/uaccess.h> #include <linux/errno.h> #include <linux/types.h> #include <linux/fcntl.h> #include <linux/slab.h> /* kmalloc() */ #include <linux/timer.h> /* HZ */ typedef struct { struct timer_list timer; unsigned long led_state; attribute ((packed)) KERNEL_TIMER_STRUCT; #endif 10 #define DEV_NAME "led_timer_device" #define IOM_LEDTIMER_MAJOR_NUM 247 #define IOM_LED_ADDRESS 0xA #define TIME_STEP (5*HZ/10) /* 0.5 sec */ #define BLINK_MODE 1

11 led_timer_driver.c (2) static int ledport_usage = 0; static unsigned char *iom_led_addr; static KERNEL_TIMER_STRUCT *ptimermgr = NULL; static unsigned char led_blink = 0; MODULE_LICENSE("GPL"); MODULE_AUTHOR("HGU"); int led_timer_init(void); void led_timer_exit(void); module_init(led_timer_init); module_exit(led_timer_exit); void led_timer_timeover(unsigned long arg); /* timer.function */ void led_timer_register(kernel_timer_struct *pdata, unsigned long timeover); int led_timer_open (struct inode *, struct file *); int led_timer_release (struct inode *, struct file *); ssize_t led_timer_write (struct file *, const char user *, size_t, loff_t *); struct file_operations led_timer_fops = {.owner = THIS_MODULE,.open = led_timer_open,.release = led_timer_release,.write = led_timer_write, ; 11

12 led_timer_driver.c (3) int init led_timer_init(void) { int major_num; major_num = register_chrdev(iom_ledtimer_major_num, DEV_NAME, &led_timer_fops); if ( major_num < 0 ) { printk(kern_warning"%s: can't get or assign major number %d\n", DEV_NAME, IOM_LEDTIMER_MAJOR_NUM); return major_num; printk("success to load the device %s. Major number is %d\n", DEV_NAME, IOM_LEDTIMER_MAJOR_NUM); iom_led_addr = ioremap(iom_led_address, 0x1); ptimermgr = kmalloc(sizeof(kernel_timer_struct), GFP_KERNEL); /* GFP_KERNEL: Normal allocation of kernel memory. May sleep */ /* GFP_KERNEL: GFP_WAIT( 스케줄러선점가능 ), GFP_IO( 물리적 IO 가능 ), GFP_FS( 저수준 filesystem IO 가능 ) */ if ( ptimermgr == NULL ) return -ENOMEM; memset(ptimermgr, 0, sizeof(kernel_timer_struct)); // GFP_KERNEL GFP_ZERO (Kernel 2.6 가능 ) led_timer_register(ptimermgr, TIME_STEP); return 0; 12

13 led_timer_driver.c (4) void led_timer_register(kernel_timer_struct *pdata, unsigned long timeover) { /* init_timer(&timer) */ init_timer(&(pdata->timer)); /* timer API: void init_timer(struct timer_list *timer) */ pdata->timer.expires = get_jiffies_64() + timeover; pdata->timer.function = led_timer_timeover; /* handler of the timeout */ pdata->timer.data = (unsigned long) pdata; /* argument to the handler */ add_timer(&(pdata->timer)); void led_timer_timeover(unsigned long arg) { KERNEL_TIMER_STRUCT *pdata = NULL; pdata = (KERNEL_TIMER_STRUCT *) arg; if(led_blink == BLINK_MODE) { /* blink */ pdata->led_state = ~(pdata->led_state); if(pdata->led_state!= 0) outb(0x00, (unsigned int)iom_led_addr); else outb(0xff, (unsigned int)iom_led_addr); else outb(0xff, (unsigned int)iom_led_addr); /* turn off LED */ led_timer_register(pdata, TIME_STEP); 13

14 led_timer_driver.c (5) int led_timer_open (struct inode *inode, struct file *filp) { if(ledport_usage) return -EBUSY; ledport_usage = 1; return 0; int led_timer_release (struct inode *inode, struct file *filp) { ledport_usage = 0; return 0; ssize_t led_timer_write (struct file *filp, const char user *buf, size_t count, loff_t *f_pos) { if (copy_from_user(&led_blink, buf, count)) return -EFAULT; return count; void exit led_timer_exit(void) { outb(0xff, (unsigned int)iom_led_addr); /* LED turn off */ if(ptimermgr!= NULL ) { del_timer(&(ptimermgr->timer)); kfree(ptimermgr); iounmap(iom_led_addr); unregister_chrdev(iom_ledtimer_major_num, DEV_NAME); 14

15 타이머연동 LED 구동응용프로그램 (test_timer_led.c) vi test_timer_led.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define DEV_NAME "/dev/led_timer_device" int main(int argc, char **argv) { int led_fd; unsigned char led_blink; if ( argc!= 2 ) { printf("usage: %s [0 or 1] (0: all LED OFF, 1: LED blinking)\n", argv[0]); return -1; led_fd = open(dev_name, O_WRONLY); if ( led_fd < 0 ) { printf("led timer driver open error...\n"); return -1; 15

16 test_timer_led.c (2) led_blink = (unsigned char) atoi(argv[1]); printf("{a input: %d\n", led_blink); write(led_fd, &led_blink, sizeof(led_blink)); close(led_fd); return 0; 16

17 컴파일 % vi Makefile CC = arm-linux-gcc KDIR = /root/download/kernel obj-m = led_timer_driver.o PWD = $(shell pwd) TEST_TARGET = test_timer_led TEST_SRCS = $(TEST_TARGET).c all: module test_pgm module: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules test_pgm: $(CC) $(TEST_SRCS) -o $(TEST_TARGET) clean: rm -rf *.ko *.o rm -rf *.symvers *.order *mod.c *.cmd rm -rf $(TEST_TARGET) % make 17

18 실행 타겟보드에서실행 Host 컴퓨터의 /root 디렉토리를 NFS 로연결 # cd /root/nfs/work/dd/kernel_timer_led # insmod led_timer_driver.ko # mknod /dev/led_timer_device c #./test_timer_led 1 #./test_timer_led 0 18

Styresystemer og tjenester

Styresystemer og tjenester Styresystemer og tjenester Indhold: 1. Introduktion til styresystemer 2. Processer og tråde 3. Synkroniseringsmetoder og IPC 4. Memory management 5. IO og devicedrivere 6. Analyse og design af embedded

Læs mere

Systemkald i Unix/Linux

Systemkald i Unix/Linux Systemkald i Unix/Linux 1 Operativsystemet Fra proces: OS som værktøjskasse: tilgængelig via systemkald... OS som resurseadministrator, abstrakt/virtuel maskine: CPU: processer, tråde, schedulering I/O:

Læs mere

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005 - 1. Obligatorisk opgave F.06 System Call Jacob Aae Mikkelsen - 191076 Ingen andre gruppe medlemmer 6. marts 2005 1 Indhold 1 Opgave beskrivelse 2 2 Analyse 2 2.1 Hukommelses allokering.....................

Læs mere

Principper for Samtidighed og Styresystemer

Principper for Samtidighed og Styresystemer Principper for Samtidighed og Styresystemer Kursusgang 12: Device drivere [email protected] Ph.D.-studerende Distribuerede og Indlejrede Systemer Institut for Datalogi Aalborg Universitet 17. maj 2010 Intro

Læs mere

Processer og tråde. dopsys 1

Processer og tråde. dopsys 1 Processer og tråde dopsys 1 Motivation.. parallelle processer udnytter hardwaren bedre: Batch operativsystemer (50 erne) hhv. små systemer: Multiprogrammering og time-sharing (fra 60 erne og frem): dopsys

Læs mere

Operativsystemer - dopsys

Operativsystemer - dopsys Operativsystemer - dopsys Erik Ernst [email protected] dopsys 1 Q/A Mange deltagere er nu på 2. år af datalogistudiet, med dcomnet 1 for år siden Er din baggrund anderledes? dopsys 2 Praktiske oplysninger

Læs mere

Asus computer og hvad man kan gøre ved den. For flere år siden købte jeg en lille maskine der hed Asus Eee Pc 900.

Asus computer og hvad man kan gøre ved den. For flere år siden købte jeg en lille maskine der hed Asus Eee Pc 900. Asus computer og hvad man kan gøre ved den. For flere år siden købte jeg en lille maskine der hed Asus Eee Pc 900. Den kørte med et Linuxsystem, som jeg ikke kunne få til at virke godt, så jeg brændte

Læs mere

Programmering i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111

Systemkald DM14. 1. Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 DM14 1. Obligatoriske opgave Systemkald Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/3-2004 Afleveret af: Jacob Christiansen, 130282-2111 Side 1 af 5 Intro: Formålet med opgaven at et lave en system kald

Læs mere

Introduktion til C programmering

Introduktion til C programmering Introduktion til C programmering Rasmus Erik Voel Jensen Uge 17 [email protected] Dagens forelæsning Formalia Indledende programmering, main, include, printf, variable, scanf, if-else, statements, eksempler

Læs mere

Metoder og værktøjer til programmering

Metoder og værktøjer til programmering Metoder og værktøjer til programmering Hjemmeside http://www.control.aau.dk/~jal/mvp.php Spørgsmål vedrørende kurset: [email protected] Metoder og værktøjer til programmering Kursusgange: Brugergrænseflader

Læs mere

Delay(100); Man skriver fx blot delay(100); for at få Microcontrolleren til at vente 100 ms inden programmet fortsætter.

Delay(100); Man skriver fx blot delay(100); for at få Microcontrolleren til at vente 100 ms inden programmet fortsætter. Funktionen delay() Funktionen delay() er ofte praktisk at bruge i et program i Arduino-verdenen. Man skriver fx blot delay(100); for at få Microcontrolleren til at vente 100 ms inden programmet fortsætter.

Læs mere

Erklæring af variabler. Void indstil (Indstiller starttidspunkt og måleinterval).

Erklæring af variabler. Void indstil (Indstiller starttidspunkt og måleinterval). Indholdsfortegnelse til Bilag 1.: Side 1: Include filer. Side 1: Erklæring af variabler. Side 2: Void indstil (Indstiller starttidspunkt og måleinterval). Side 3: Void indstil (Indstiller starttidspunkt

Læs mere

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007 Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007 Mads Pedersen, OZ6HR [email protected] Plan i dag Afrunding af OZ3VB's program Fra "almindelig C" til "microcontroller C" Lighederne

Læs mere

//--------------------------------- Definition af porte og funktioner -------------------------

//--------------------------------- Definition af porte og funktioner ------------------------- Temeraturmåler (C-program).txt // Initialiserings-sekvens #include #pragma model=medium #pragma code=0x0000 #pragma xdata=0x4000 #pragma asm=on #pragma parameters=register //#define display P4

Læs mere

Internt interrupt - Arduino

Internt interrupt - Arduino Programmering for begyndere Brug af Arduino Internt interrupt - Arduino - Afslutning EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Intern interrupt Jeg vil rydde lidt op. Her er nogle punkter vil har glemt

Læs mere

Netværk & elektronik

Netværk & elektronik Netværk & elektronik Oversigt Ethernet og IP teori Montering af Siteplayer modul Siteplayer teori Siteplayer forbindelse HTML Router (port forwarding!) Projekter Lkaa Mercantec 2009 1 Ethernet På Mars

Læs mere

Fra programmering til mikroprocessor

Fra programmering til mikroprocessor Programmering for begyndere Brug af Arduino Fra programmering til mikroprocessor EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Programmerings kursus Sidste gang (Introduktion)

Læs mere

Maskinarkitektur. Lars Kristensen [email protected]. Christian Storm [email protected]. dmasark 1

Maskinarkitektur. Lars Kristensen kris@daimi.au.dk. Christian Storm cstorm@daimi.au.dk. dmasark 1 Maskinarkitektur Lars Kristensen [email protected] Christian Storm [email protected] dmasark 1 Praktiske oplysninger http://www.daimi.au.dk/dmasark dmasark 2 Forelæsninger Tirsdag 12.15-14.00, Store Aud,

Læs mere

Kursusarbejde 2 Grundlæggende Programmering

Kursusarbejde 2 Grundlæggende Programmering Kursusarbejde 2 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 31. oktober 2003 Indhold 1. Kode 2 1.1. hotel.h.................................................... 2 1.2. hotel.cc...................................................

Læs mere

Pentium IA-32 Maskinarkitekturen

Pentium IA-32 Maskinarkitekturen Pentium IA-32 Maskinarkitekturen 1 Historie (1) Starter i 1970 med udviklingen af Intel 4004: 2 Historie (2) Baglæns kompatibilitet tilbage til 8086. 3 Intel 4004 and Pentium 4 http://www.intel.com/museum/archives/index.htm

Læs mere

Karaktergivende rapportopgave i Styresystemer og multiprogrammering

Karaktergivende rapportopgave i Styresystemer og multiprogrammering Karaktergivende rapportopgave i Styresystemer og multiprogrammering 1. marts 2005 Den karaktergivende rapportopgave i Styresystemer og multiprogrammering stilles tirsdag den 1. marts 2004 og skal afleveres

Læs mere

Brug af digitale ind og udgange

Brug af digitale ind og udgange Programmering for begyndere Brug af Arduino Programmeringskursus Brug af digitale ind og udgange Oversigt over aftenen Digitale ind- og udgange Det er der ikke så meget i: Digitale indgange kan tænde og

Læs mere

Computere og Netværk (dcomnet)

Computere og Netværk (dcomnet) Computere og Netværk (dcomnet) http://www.cs.au.dk/dcomnet Jens Kargaard Madsen ([email protected]) Jens Bennedsen ([email protected]) dcomnet 1 Computere og netværk Beskrivelse At give den studerende kendskab til computere

Læs mere

Rigtig SQL Programmering

Rigtig SQL Programmering Rigtig SQL Programmering 1 SQL i Rigtige Programmer Indtil nu har vi brugt SQL direkte i kommandolinje promt/gui program, hvor vi kan lave forespørgsler til databasen I virkeligheden: Programmer kontakter

Læs mere

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere. Denne guide er oprindeligt udgivet på Eksperten.dk MySQL C API Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab

Læs mere

1 Indholdsfortegnelse.

1 Indholdsfortegnelse. ET106 Ringsted Tekniske Skole 21. maj 1999 1 Indholdsfortegnelse. 1 Indholdsfortegnelse. 2 2 Indledning. 3 3 Generelt om DSP. 3 4 Om EZ-kittet. 4 5 Signalbehandling. 5 5.1 Indgangs lavpasfilter. 5 5.2

Læs mere

Introduktion til Operativsystemer

Introduktion til Operativsystemer Introduktion til Operativsystemer 1 Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Oversigt Formål Hvad er en computer? Operativsystemets rolle Multitasking 2 Formål Introduktion af de basale

Læs mere

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index DET KONGELIGE Index Download driver... 2 Find the Windows 7 version.... 2 Download the Windows Vista driver.... 4 Extract driver... 5 Windows Vista installation of a printer.... 7 Side 1 af 12 DET KONGELIGE

Læs mere

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) int wmid, wmevent; PAINTSTRUCT Introduktion ps; til HDC hdc; programmering med switch (message) case WM_COMMAND: wmid = LOWORD(wParam);

Læs mere

Mikroarkitektur. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Mikroarkitektur. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet Mikroarkitektur Niels Olof Bouvin Institut for Datalogi Aarhus Universitet 1 Level 1: Mikrokode niveauet Level 5 Problem-oriented language level Translation (compiler) Level 4 Assembly language level Translation

Læs mere

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation

Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et

Læs mere

VMware og dopsys-linux

VMware og dopsys-linux VMware og dopsys-linux 1 Virtuel maskine: OS Hardware Virtualisering: Resurser deles mellem processer: En virtuel maskine er til rådighed for hver proces. Virtualisering nu dybere: hver proces hvert OS.

Læs mere

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune Værktøjer fra værktøjskassen Søren Breddam, Stevns Kommune [email protected] 1stevns kommune Mapbasic i Stevns Kommune Data Kørsel af planlagte opgaver, så data altid er opdaterede. Logfil til overvågning Dagligt

Læs mere

Hvordan vælger jeg dokumentprofilen?

Hvordan vælger jeg dokumentprofilen? Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel

Læs mere

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank 03-10-2018 Rune Ibsen Softwareudvikling Seniorkonsulent Mentoring 10 konsulenter F# Programmeringssprog som oversættes til.net Functional-first,

Læs mere

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Programmering for begyndere Brug af Arduino Programmeringskursus Interrupt - Arduino EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Interrupts Programmeringskursus Genbrug Interrupts Betyder blot at man afbryder

Læs mere

Softwareudvikling: Miljøer

Softwareudvikling: Miljøer Softwareudvikling: Miljøer Præsentation af mig Praktiske oplysninger Overblik Host-target setup UNIX, historisk UNIX egenskaber UNIX ulemper UNIX, netværk, X11, brugerflader Windows fordele/ulemper Øvelse

Læs mere

Programmering i C Intro og grundlæggende C 5. marts 2007

Programmering i C Intro og grundlæggende C 5. marts 2007 Programmering i C Intro og grundlæggende C 5. marts 2007 Mads Pedersen, OZ6HR [email protected] Plan for kurset Ma. 5/3: Ma. 19/3: Ma. 2/4: To. 12/4: Formål, intro, grundlæggende Videre, sprogkonstruktioner

Læs mere

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012 Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend

Læs mere

Sådan forbindes Arduinoen via et fumlebræt til ATTiny45 chippen.

Sådan forbindes Arduinoen via et fumlebræt til ATTiny45 chippen. Arduino software: https://www.arduino.cc/en/main/software Klaus modeltog, det levende hus: http://www.moppe.dk/levhusel.html TV simulation: http://www.herberts-n-projekt.de/basteleien-1/belebtes-haus/

Læs mere

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22. Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens

Læs mere

Python programmering. Per Tøfting. MacFest

Python programmering. Per Tøfting. MacFest Python programmering MacFest 2005 Per Tøfting http://pertoefting.dk/macfest/ Indhold Måder at afvikle Python program på Variabler Data typer Tal Sekvenser Strenge Tupler Lister Dictionaries Kontrolstrukturer

Læs mere

Modbus data modellen er opbygget af fire primære data typer. I nedenstående skema er en kort oversigt over disse.

Modbus data modellen er opbygget af fire primære data typer. I nedenstående skema er en kort oversigt over disse. Modbus RTU protokol Indledning Modbus er en application layer messaging protocol, placeret på 7. lag i OSI modellen, der sørger for client/server kommunikation mellem enheder koblet på forskellige typer

Læs mere

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1 Project Step 7 Behavioral modeling of a dual ported register set. Copyright 2006 - Joanne DeGroat, ECE, OSU 1 The register set Register set specifications 16 dual ported registers each with 16- bit words

Læs mere