Microprocessor / Microcontroller

Relevanta dokument
Microprocessor / Microcontroller. Industrial Electrical Engineering and Automation

Realtidsprogrammering. En introduktion Implementering (med exempel från PIC)

#include <pic.h> #include <sys.h> char LEFT,RIGHT,MOTORHASTIGHET;

Effektpedal för elgitarr

INGENJÖRSHÖGSKOLAN INGENJÖRSHÖGSKOLAN

Dessa komponenter plus några motstånd, klockkrets, kondensatorer och annat smått och gott har åstadkommit ett fungerande POV-hjul.

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Digitala Projekt(EITF40) - Larm

PIC-programmeringsuppgift (PROA)

Tentamen Enchipsdatorer med tillämpningar. Lösningar och kommentarer

Föreläsningsanteckningar till Konstruktionsmetoder

Växtviskaren EITF11 Digitala projekt VT15, I12

Laboration 4: Knappstuds Drivrutiner för att eliminera störningar.

Digitala Projekt(EITF40) - Larm

Ansvarig lärare: Olof Andersson, Telefon (besöker skrivsalen)

Övningsuppgifter STYRNING - i Mikrodatorteknik för U2 2010

The Phenomenal Doorbell Bilaga 2. Källkod

Laboration 5 C-programmering på AVR TSEA57 Datorteknik I

DIGITALA PROJEKT (EITF40) Fartmätare

22/02/16. Arduino Introduktion till Arduino. Arduino. Microcontroller - Embedded systems. Historia Organisation - Ekosystem

IE1206 Inbyggd Elektronik

Thunder s Truck projektrapport

Lathund. C för inbyggda system

Ett program som frågar regelbundet om något skall utföras. Exempelvis om spänningen på ett batteri sjunkit under en viss nivå.

Laborera med SmartCard

GPIO - General Purpose Input Output

Lathund. C för inbyggda system

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

LARMANLÄGGNING. Digitala Projekt, EITF11. Oskar von Knorring Emin Karimov Henrik Akej Handledare: Bertil Lindvall

Enkla datatyper minne

Tentamen Enchipsdatorer med tillämpningar. Lösningar och kommentarer

AVR 3 - datorteknik. Avbrott. Digitala system 15 hp. Förberedelser

EITF11 - Digitala projekt. Hastighetsmätare. Hugo Backmyr Mattias Karlsson

Kontrollskrivning Mikrodatorteknik CDT S2-704

#include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> unsigned char num;

Styrprogram till PICprocessorer. fjärrmanövrerad relämatris i distanslaboratorier. Eric Eskilsson

GPIO - General Purpose Input Output

Lista på registeruppsättningen i PIC16F877A Datablad TTL-kretsar 74-serien

TEMPERATURMÄTARE MED GRAFRITARE

/* * dancing3.c * * Created: :53:20 * Author: digpi10 */ #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.

Lathund. Pacific C för MS-DOS

Digitala Projekt (EITF11) Hemlarm

Lunds Tekniska Högskola Elektro- och informationsteknik Digitala projekt (EITF11)

Beskrivning av porthantering i mikroprocessorn SAM3U som används på vårt labkort SAM3U- EK.

Projektrapport Målgång

Firmware till en Dyklampa - Utveckling av programvara. Firmware for a dive light - Developing software. Examensarbete inom Mekatronik MIKAEL ISAKSSON

TENTAMEN Datorteknik (DO2005) D1/E1/Mek1/Ö1

A-del motsvarande KS1

Arduinokurs. Kurstillfälle 4

Larmcentral. Digitala Projekt. Cecilia Olsson & Erika Björck Handledare: Bertil Lindvall LUNDS TEKNISKA HÖGSKOLA

Provmoment: Ladokkod: Tentamen ges för: Tentamen TE111B El3. Namn: Personnummer: Tentamensdatum: Tid: 14:00-18:00.

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

William Sandqvist

Projektlaboration 4, synkronisering av klockan

Övning 6. Parallellport, timer

PROTOTYPUTVECKLING AV DIGITALT

Arduinokurs. Del 1 - Vett och etikett. Talsystem. Binärt ettor och nollor

"Crash Course in Programming"

1 Bakgrund 4. 2 Kravspecifikation Definitioner Grundläggande krav Användarfall 5

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Demonstration och konsultation Arbetsbokens avsnitt 7 Händelsestyrt processbyte Förberedande inför laboration 4

Rapport i Digitala Projekt (EDI021)

General Purpose registers ALU I T H S V N Z C SREG. Antag att vi behöver skriva in talet 25 till register R18

PROJEKT LJUD. KOPIERINGSUNDERLAG Martin Blom Skavnes, Staffan Melin och Natur & Kultur Programmera i teknik ISBN

Tentamen Enchipsdatorer med tillämpningar Lösningar och kommentarer

7HQWDPHQLNRQVWUXNWLRQVPHWRGHU 'HOWHQWDPHQ / VQLQJDURFKNRPPHQWDUHU

Projektrapport - Roterande digital LED-klocka

Digitalt eller Analogt

Rapport. Fyra i rad-spel. Rapport Digitala Projekt EITF11 Grupp 9 Emma Rasmusson & Louise Ragnarsson Handledare: Bertil Lindvall

Laboration nr2 med enchipsdatorn PIC-16F877

PNSPO! Adressering i Omrons PLC. 14 mars 2012 OMRON Corporation

Tentamen Enchipsdatorer med tillämpningar Lösningar och kommentarer

Studera databladen för LCD på sid 4, 5, 7, 8, 14, 18, 19, 20 och 23. Datablad finns på kurshemsidan.

Varför använda en liten 8-bitars processor när det finns billiga kraftfulla 32-bitars? William Sandqvist

Pulsmätare Digitala Projekt EITF11

Träff 1 - Introduktion

CE_O3. Nios II. Inför lab nios2time

EITF11: Bandkanon Grp 05

Programmera i teknik - kreativa projekt med Arduino

Laboration 3 i Digital- och Mikrodatorteknik. Utvecklingssystemet MPLAB IDE Grundläggande assemblerprogrammering för PIC

Hantering av textsträngar och talsträngar. William Sandqvist

(Lösningsförslag finns sist i denna fil.)

IE1206 Inbyggd Elektronik

Data, typ, selektion, iteration

EITF11 - Digitala Projekt

Källkod. #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define green_diode PD5. #define RS PD4

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Programmering på Arduino/Genuino

PROJEKT STAFFAN STALLEDRÄNG

Projektrapport. Elektronikdesign, Medicinsk Teknik, KTH STH Elektronikdesign Styrketräningshjälp

Guitar Tuner EITF11 Digitala Projekt, Projektrapport Elektro- och informationsteknik

EDI022. Digitala Projekt. Rapport. Björn Åkesson 5/20/2011

Svar till Övning3 Datorteknik, HH vt12 Avbrott och timers

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Pulsmätare. EITF11 Digitala Projekt VT15. Grupp 9: Emma Albertz, Mathilde Hagander & Alexandra Mansner Handledare: Andreas Johansson & Bertil Lindvall

Aml Abbas, Ali Darwish, Ehsanolah Hafezi, Fatima Zahra Doussi Grupp 15

EDA480/EDA485 - Maskinorienterad programmering, tentamen 2006-xx-xx 1(7)

Maskinorienterad programmering

Programmering med Arduino

Transkript:

Microprocessor / Microcontroller

Varför? Industrial Electrical Engineering and Automation Billiga Innehåller bara det nödvändigaste Kräver få kringkomponenter Enkla att programmera

PIC16F887

PIC16F887

In- och utgångar Industrial Electrical Engineering and Automation Saknas något?

Pinnar på PIC16F887

Exempel: pinne RA1 Industrial Electrical Engineering and Automation In / Ut väljs med TRIS Digital / Analog väljs med ANSEL Komparatoringång

Timer

Timer med prescaler

Timeravbrott

Avbrott

Avbrottsregister

Avbrottsregister Industrial Electrical Engineering and Automation GIE - Global Interrupt Enable bit PEIE - Peripheral Interrupt Enable bit T0IE - TMR0 Overflow Interrupt Enable bit INTE - RB0/INT External Interrupt Enable bit RBIE - RB Port Change Interrupt Enable bit. T0IF - TMR0 Overflow Interrupt Flag bit INTF - RB0/INT External Interrupt Flag bit RBIF - RB Port Change Interrupt Flag bit

Timer0

Port B Pull up Enable bit Interrupt Edge Select bit TMR0 Clock Source Select bit TMR0 Source Edge Select bit Prescaler Assignment bit Prescaler Rate Select bits

Generera avbrott varje ms med Timer0 //Fosc = 4 MHz Industrial Electrical Engineering and Automation static void interrupt isr(void){ if(t0if){ TMR0 = 6; isr_cnt++; T0IF = 0; void main(void){... // TIMER0 interrupt flag // Ladda nytt värde till TMR0 // Nollställ TIMER0 interrupt flag PSA = 0; // Prescaler till timer0 PS2 = 0; // 1:4 prescaler PS1 = 0; PS0 = 1; T0CS = 0; TMR0 = 6; T0IE = 1; // Enable timer0 avbrott GIE = 1; // Enable Global interrupt while(1){ if(isr_cnt > 0){... isr_cnt = 0; 256 6 // välj Fosc/4 som insignal // Timer värde för avbrott efter 1 ms TMR0 T0IF=1

Timer1

Timer som pulsräknare static void interrupt isr(void){ if(tmr0if){ TMR0 = 6; timer1h = TMR1H; timer1l = TMR1L; TMR1H = 0; TMR1L = 0; puls_cnt = (timer1h<<8)+timer1l; isr_cnt++; TMR0IF = 0; void main(void) {... while(1){ if(isr_cnt>0){ lcd_putint(puls_cnt,5); isr_cnt = 0; 256 6 puls_cnt TMR0 TMR1H&L T0IF=1

Timer för tidtagning static void interrupt isr(void){ if(ccp1if){ capture_time = ((CCPR1H<<8)+CCPR1L) - capture_old; capture_old = (CCPR1H<<8)+CCPR1L; isr_cnt++; 65536 CCP1IF = 0; capture_time void main(void){... if(isr_cnt>0){ lcd_putlong(capture_time,6); isr_cnt = 0; capture_old CCP1IF=1 CCP1IF=1

PWM PR2 CCPR Industrial Electrical Engineering and Automation TMR2

PWM

A/D omvandlare

Oscillator

#include <htc.h> #include "lcd.h" Industrial Electrical Engineering and Automation #pragma config IESO=ON, FCMEN=ON,OSC=INTIO7 #pragma config BOREN=SBORDIS, BORV=0, PWRT=OFF, WDT=OFF #pragma config CCP2MX=PORTC, PBADEN=OFF, LPT1OSC=ON, MCLRE=ON #pragma config DEBUG=OFF, STVREN=ON, XINST=OFF, LVP=OFF #pragma config CP0=OFF, CP1=OFF, CP2=OFF, CP3=OFF, CPD=OFF, CPB=OFF #pragma config WRT0=OFF, WRT1=OFF, WRT2=OFF, WRT3=OFF, WRTB=OFF, WRTC=OFF,WRTD=OFF #pragma config EBTR0=OFF, EBTR1=OFF, EBTR2=OFF, EBTR3=OFF, EBTRB=OFF char avbrott = 0; unsigned int counter = 0; static void interrupt isr(void) {... void main(void) { OSCCON = 0x70; TRISA = 0x3D; TRISB = 0xFF; TRISC = 0xF7; TRISD = 0xF0; TRISE = 0x04; ADCON1 = 0x0E; isr_init(); //Globala variabler // Välj 8 Mhz intern klocka // PORTA: RA1 utgång, resten ingångar // PORTB: ingångar // PORTC: RC3 utgång, resten in // PORTD: RD0-3 utgångar, resten in // PORTE: RE0-1 utgångar // AN0 (RA0) analog ingång // Initiera avbrott while(1) {...

Några datatyper i C Industrial Electrical Engineering and Automation char tecken, 8 bitar int heltal, 16 bitar (float reella tal ) (double reella tal med dubbel precision) signed med tecken unsigned utan tecken void uttrycket saknar typ

Några operatorer i C Industrial Electrical Engineering and Automation a++ a = a+1 a-- a = a-1!a inte a ~ bitvis invers == lika med!= inte lika med && OCH ELLER & bitvis OCH bitvis ELLER

Ändra enstaka bitar i ett register Industrial Electrical Engineering and Automation a = 0b00010011; b = a 0b00000100; // bitvis ELLER // b = 00010111 a = 0b00010011; b = a & 0b11111110; // bitvis OCH // b = 00010010

Skift Industrial Electrical Engineering and Automation a = 0x00000011; b = a<<2 // multiplikation med 4 //b = 00001100 b = a>>1 // division med 2 //b = 00000001 Använd så mycket som möjligt!

Olika sätt att skriva samma sak Industrial Electrical Engineering and Automation a = 23 a = 0b00010111 b = 0x17 // decimalt // binärt // hexadecimalt

men Arduino är ju mycket roligare Jaså

Arduino eller PIC? Industrial Electrical Engineering and Automation int led = 13; #include <htc.h> void setup() { CONFIG(PWRTDIS & UNPROTECT & BORDIS & WDTDIS & INTIO); pinmode(led, OUTPUT); void main(void){ OSCCON=0x70; TRISC=0b00000001; void loop() { digitalwrite(led, HIGH); while(1){ RC0=1; delay(100); delay_ms(100); digitalwrite(led, LOW); RC0=0; delay_ms(100); delay(100); Inte så mycket svårare!

Arduino eller PIC? int ledpin = 9; #include <htc.h> Industrial Electrical Engineering and Automation void setup() { pinmode(ledpin, OUTPUT); void loop() {... analogwrite(ledpin, 123); CONFIG(PWRTDIS & UNPROTECT & BORDIS & WDTDIS & INTIO); void main(void){ OSCCON=0x70; TRISC=0b00000001; //PWM setup CCP1CON=0b00001100; T2CON=0b00000100; PR2=0xFF; while(1){... CCPR1L = 123; //Välj PWM frekvens några rader extra men FULL KONTROLL OCH FULL FRIHET!

och vem har gjort bilderna då? Industrial Electrical Engineering and Automation www.microchip.com www.mikroe.com om man vill meta mer? Bates - Programming 8-bit PIC Microcontrollers in C LUBsearch Verle - PIC Microcontrollers - Programming in C http://www.mikroe.com/products/view/285/book-pic-microcontrollers-programming-in-c/