Difference between revisions of "Udvidet hardware-software"

From Teknologisk videncenter
Jump to: navigation, search
(Mandag)
(Tirsdag)
Line 27: Line 27:
  
 
===Tirsdag===
 
===Tirsdag===
 +
====SPI====
 
SPI er en meget anvendt kommunikationsform mellem forskellige komponenter i et uProcessor system. Det kan f.eks. være at processoren skal programmer en GPS enhed, læse fra et flash card eller blot programmere nogle udgange. SPI betyder Serial Peripheral Interface Bus og adskiller sig fra opgaven i går ved at der er indført en seriel clock. SPI kan du læse mere om her [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus SPI på Wikipedia]
 
SPI er en meget anvendt kommunikationsform mellem forskellige komponenter i et uProcessor system. Det kan f.eks. være at processoren skal programmer en GPS enhed, læse fra et flash card eller blot programmere nogle udgange. SPI betyder Serial Peripheral Interface Bus og adskiller sig fra opgaven i går ved at der er indført en seriel clock. SPI kan du læse mere om her [http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus SPI på Wikipedia]
  
Line 50: Line 51:
  
 
Lav derefter koden så det er boardet med lysføleren som er slave og returnerer værdier til masteren når der sendes en given kommando.
 
Lav derefter koden så det er boardet med lysføleren som er slave og returnerer værdier til masteren når der sendes en given kommando.
 
+
====Oscilloscope====
 
Når du har det til at virke så prøv at tilslutte et oscilloscope så du kan se hvordan signalerne løber mellem de to boards.
 
Når du har det til at virke så prøv at tilslutte et oscilloscope så du kan se hvordan signalerne løber mellem de to boards.
  

Revision as of 10:44, 30 April 2015

2130 Udvidet hardware/software projekt

Materialer/Links

Arduino på mars Arduino

Opgaver

Mandag

Arduino IDE

Hent og installer Arduino IDE, se vejledning på Arduino

UART kommunikation

Kig i eksemplet SerialCallResponceASCII og lav din egen udgave med en LDR (Lys føler) og en trykknap som kan tænde og slukke for LEDen på port 13.

Afprøv med PUTTY eller tilsvarende at dit program virker så du kan læse værdien fra lysføleren og status på trykknappen. Vær opmærksom på at det er samme port du anvender til at programmerer og til at kommunikerer med boardet så der kan opstå konflikter.

Lav også en rutine så du kan tænde og slukke LEDen via seriel interfacet.

Atmel processoren har en indbygget UART (Universal Asynchronous Receiver Transmitter) som kan anvendes til seriel kommunikation med andre enheder. Du finder portene til UARTen på Port 0 og 1 på Arduino boardet.

Tag nu et board mere og lav en seriel mellem UARTen på de to boards forbindelse med 2 ledninger mellem de to boards.

  • RX (Port 0) til TX (Port 1)
  • TX (Port 1) til RX (Port 0)

Lav kode til board 2 så du kan tænde LEDen på boardet vha den trykknap du satte på board 1 ved at sende seriel kommandoer mellem de to boards. Bemærk at du ikke kan programmerer de to boards via USB uden først at fjeren ledningerne fra RX og TX.

Lav til sidst en udvidelse så du med en eller to ekstra ledninger mellem de to boards kan lave handshake og sende en interrupt til board 2 som starter serial read. Du kan læse mere om handshake her RS-232 and RS-422. Vær dog opmærksom på at der ikke er tale om egentlig RS-232 med de spændings niveauer vi arbejder med her, det kræver en tranceiver.

Der er mere om Arduino og interrupts her Arduino Interrupt eksempel

Tirsdag

SPI

SPI er en meget anvendt kommunikationsform mellem forskellige komponenter i et uProcessor system. Det kan f.eks. være at processoren skal programmer en GPS enhed, læse fra et flash card eller blot programmere nogle udgange. SPI betyder Serial Peripheral Interface Bus og adskiller sig fra opgaven i går ved at der er indført en seriel clock. SPI kan du læse mere om her SPI på Wikipedia

uControlleren i Arduino har også en SPI bus som befinder sig på port 10-13

Port 13 - SCLK (Serial clock) Port 12 - MISO (Master In Slave Out) Port 11 - MOSI (Master Out Slave IN) Port 10 - SS (Slave Select)

Slave Select gør det muligt at lade den samme master styrer flere forskellige slave enheder på et board. De forbindes alle parallelt, men med hver sin Slave select.

På software siden er her par løsninger at kigge på

  • SPIDigitalPot På Arduinos hjemmeside som anvendes til at programmer nogle Digitale potentiometre, dem skal vi ikke bruge, men du skal lave koden om så den i stedet kan sende kommandoer fra det ene til det andet board. En kommando består i dette tilfælde af en adresse og en værdi.
  • arduino_spi_slave Hvordan du sætter dit andet board op som SPI slave. Koden læser hvad der kommer ind på SPI og sender det vidre til seril porten.
  • making two arduinos talk over spi Fin løsning med både master og slave.
  • Arduino SPI Master Slave Demo En noget mere avanceret løsning med både master og slave


Tag dine to boards og forbind via SPI. I modsætning til UART skal der ikke krydses når forbindelsen laves. Det vil sige MISO forbindes til MISO og MOSI til MOSI.

Sæt nu masteren til konstant at sende værdier fra lysføleren til slaven, forbind slaven til computeren via putty, og se hvordan værdierne fra masteren printes ud. Bemærk dog at programmet i slaven venter på et linebreak "\n" som aldrig kommer, det skal du fjerne for at det virker, eller indfører det i din master kode.

Lav derefter koden så det er boardet med lysføleren som er slave og returnerer værdier til masteren når der sendes en given kommando.

Oscilloscope

Når du har det til at virke så prøv at tilslutte et oscilloscope så du kan se hvordan signalerne løber mellem de to boards.

Onsdag

Timing

Timing diagrammer er et vigtigt værktøj når vi skal beskrive seriel kommunikation. Lav en beskrivelse af din SPI kommunikation fra sidste øvelse, og sæt de rigtige signaler og tider på.

AVR Studio

Indtil nu har vi anvendt Arduinos eget IDE sketch og de indbyggede biblioteker, men så gode biblioteker kan du ikke altid regne med at have, og de har også deres begrænsninger.

Derfor er det tid at installerer et "rigtigt" udviklingsværktøj. På Arduino finder du en guide til at installerer AVR studio og anvende dette sammen med Arduino.

På samme side finder du også diagrammer og datablade for den ATMega som sidder på Arduino boardet.

Installer AVR Studio og gentag SPI øvelsen, men uden at anvende Arduino bibliotekerne. Til hjælp kan du kigge i Arduinos source kode her SPI Libraries

Torsdag

CAN BUS KEIL

Fredag