Warning: Trying to access array offset on value of type null in /customers/f/2/4/chalmersrobotics.se/httpd.www/wiki/includes/profiler/SectionProfiler.php on line 99 Warning: Trying to access array offset on value of type null in /customers/f/2/4/chalmersrobotics.se/httpd.www/wiki/includes/profiler/SectionProfiler.php on line 99 Warning: Trying to access array offset on value of type null in /customers/f/2/4/chalmersrobotics.se/httpd.www/wiki/includes/profiler/SectionProfiler.php on line 100 Warning: Trying to access array offset on value of type null in /customers/f/2/4/chalmersrobotics.se/httpd.www/wiki/includes/profiler/SectionProfiler.php on line 100 Warning: Trying to access array offset on value of type null in /customers/f/2/4/chalmersrobotics.se/httpd.www/wiki/includes/profiler/SectionProfiler.php on line 101 Warning: Trying to access array offset on value of type null in /customers/f/2/4/chalmersrobotics.se/httpd.www/wiki/includes/profiler/SectionProfiler.php on line 101 Difference between revisions of "Program IntroARM" - Chalmers Robotics
 Actions

Difference between revisions of "Program IntroARM"

From Chalmers Robotics

(Created page with "Denna sida innehåller information om programmet för IntroARM. Här finns dokumentation för de specialskrivna biblioteksfunktioner som finns för IntroARM (t.ex. styra LEDs,...")
 
(Modulerna)
Line 10: Line 10:
  
 
=Modulerna=
 
=Modulerna=
Nedan följer en beskrivning av varje modul.
+
Nedan följer en beskrivning av varje modul. En del filer kan innehålla fler än en modul, vilket gör att dessa moduler är sammankopplade.
  
 
==Grundmoduler==
 
==Grundmoduler==
Line 16: Line 16:
  
 
==LEDs==
 
==LEDs==
 +
Styr de LEDs som finns på IntroARM.
 
* Filer: led.c och led.h
 
* Filer: led.c och led.h
* Funktioner
+
* Andra nödvändiga moduler: Inga
 +
* Settings: Inga
 +
* Funktioner:
 
** ledInit(): Initierar portar och klockor för LEDs. Släcker även alla LEDs.
 
** ledInit(): Initierar portar och klockor för LEDs. Släcker även alla LEDs.
** Makros för varje LED: Varje LED har ett makro som använder för att styra LEDs med. Makrona heter LED_x_cmd() där x är numret på LEDen (1-6) och cmd är kommandot, d.v.s. SET, CLEAR eller TOGGLE. Notera att kommandot måste avslutas med ";". Exempel: LED_1_SET(); delay_ms(500); LED_1_CLEAR();
+
** Makros för varje LED: Varje LED har ett makro som använder för att styra LEDs med. Makrona heter LED_x_cmd() där x är numret på LEDen (1 till 6) och cmd är kommandot, d.v.s. SET, CLEAR eller TOGGLE. Notera att kommandot måste avslutas med ";". Exempel: LED_1_SET(); delay_ms(500); LED_1_CLEAR();
 +
 
 +
==Knappar==
 +
Hanterar knapparna för användarinput.
 +
* Filer: sw.c och sw.h
 +
* Andra nödvändiga moduler: Inga
 +
* Settings: Inga
 +
* Funktioner:
 +
** swInit(): Initierar portar och klockor för knapparna. Sätter pulldown ''Todo: kolla så att det är korrekt''
 +
** Makros för att läsa av knapparna: SW_x där x är numret på knappen (1 eller 2). Makrot har värdet 1 ifall knappen är nedtryckt och 0 ifall den inte är nedtryckt. Exempel: if (SW1) {do_stuff()}
 +
 
 +
==UART==
 +
Styr uart-kommunikation
 +
 
 +
==Motor==
 +
Styr motorerna.
 +
 
 +
==Front-sensorer==
 +
Pulsar IR-LEDs och läser av status hos sensorerna. Gör viss nödvändig databehandling.
 +
 
 +
==Kantsensorer==
 +
Sköter ADC och läser av kantsensorerna.
 +
 
 +
==Tachometrar==
 +
Sköter ADC och läser av tachometrar. Kan presentera data på ett antal olika former.
 +
 
 +
==Batterimätning==
 +
Sköter ADC och mäter batterispänningen. Kan presentera datan som V via uart eller på LEDsen
 +
* Andra nödvändiga moduler: UART, LEDs
 +
 
 +
==Buzzer==
 +
Piper buzzern i olika frekvenser. Har en viss buffert för att spela upp ljud.
 +
 
 +
==SD-kort==
 +
Läser och skriver data från/till SD-kortet. Kan användas för t.ex. loggning eller lagring av musik (att spela upp på buzzern)
 +
 
 +
==I2C==
 +
Kommunicerar med I2C.
 +
 
 +
==MPU6050==
 +
Gör inställningar och läser data från MPU6050 (accelerometer och gyro, x,y,z).
 +
* Andra nödvändiga moduler: I2C
 +
 
 +
==DAC (Digital-analog converter)=
 +
Skickar ut en analog spänning på en pinne.

Revision as of 13:28, 22 October 2014

Denna sida innehåller information om programmet för IntroARM. Här finns dokumentation för de specialskrivna biblioteksfunktioner som finns för IntroARM (t.ex. styra LEDs, Motorer, läsa sensorer etc). För mer allmän information om STM32, kolla på sidan Programmering STM32.

Programmet hittar du här:

Generell info

Målet är att programmet ska vara uppdelat i moduler, d.v.s. att man ska kunna välja att endast använda vissa delar av programmet oberoende av andra delar. Man väljer vilken modul man ska använda genom att inkludera filen och köra init-funktionen för den.

Port-karta

Nedan följer en beskrivning på vilka portar som är kopplade till vilka funktioner på IntroARM.

Modulerna

Nedan följer en beskrivning av varje modul. En del filer kan innehålla fler än en modul, vilket gör att dessa moduler är sammankopplade.

Grundmoduler

Det finns ett antal moduler som är mycket grundläggande för IntroARMs funktion. Dessa bör alltid användas. Detta är dels standard-peripheral-biblioteket från ST samt time-modulen (består av time.h och time.c). Time-modulen innehåller funktioner för tidsmätning och delay. Här finns även ett interrupt som går varje ms (sysTick-interruptet).

LEDs

Styr de LEDs som finns på IntroARM.

  • Filer: led.c och led.h
  • Andra nödvändiga moduler: Inga
  • Settings: Inga
  • Funktioner:
    • ledInit(): Initierar portar och klockor för LEDs. Släcker även alla LEDs.
    • Makros för varje LED: Varje LED har ett makro som använder för att styra LEDs med. Makrona heter LED_x_cmd() där x är numret på LEDen (1 till 6) och cmd är kommandot, d.v.s. SET, CLEAR eller TOGGLE. Notera att kommandot måste avslutas med ";". Exempel: LED_1_SET(); delay_ms(500); LED_1_CLEAR();

Knappar

Hanterar knapparna för användarinput.

  • Filer: sw.c och sw.h
  • Andra nödvändiga moduler: Inga
  • Settings: Inga
  • Funktioner:
    • swInit(): Initierar portar och klockor för knapparna. Sätter pulldown Todo: kolla så att det är korrekt
    • Makros för att läsa av knapparna: SW_x där x är numret på knappen (1 eller 2). Makrot har värdet 1 ifall knappen är nedtryckt och 0 ifall den inte är nedtryckt. Exempel: if (SW1) {do_stuff()}

UART

Styr uart-kommunikation

Motor

Styr motorerna.

Front-sensorer

Pulsar IR-LEDs och läser av status hos sensorerna. Gör viss nödvändig databehandling.

Kantsensorer

Sköter ADC och läser av kantsensorerna.

Tachometrar

Sköter ADC och läser av tachometrar. Kan presentera data på ett antal olika former.

Batterimätning

Sköter ADC och mäter batterispänningen. Kan presentera datan som V via uart eller på LEDsen

  • Andra nödvändiga moduler: UART, LEDs

Buzzer

Piper buzzern i olika frekvenser. Har en viss buffert för att spela upp ljud.

SD-kort

Läser och skriver data från/till SD-kortet. Kan användas för t.ex. loggning eller lagring av musik (att spela upp på buzzern)

I2C

Kommunicerar med I2C.

MPU6050

Gör inställningar och läser data från MPU6050 (accelerometer och gyro, x,y,z).

  • Andra nödvändiga moduler: I2C

=DAC (Digital-analog converter)

Skickar ut en analog spänning på en pinne.