mirror of
https://github.com/EranMorkon/AMTS.git
synced 2023-12-28 16:48:38 +00:00
Updates to style, started Pack documentation
This commit is contained in:
parent
1f0e2aad64
commit
a8ba4b7a79
|
@ -1,6 +1,6 @@
|
|||
%% Vorlage HTBL Hollabrunn Diplomarbeit
|
||||
%% KOMA Script
|
||||
\documentclass[12pt,ngerman,a4paper,parskip,twoside,listof=totoc]{scrartcl}
|
||||
\documentclass[12pt,ngerman,a4paper,parskip,twoside,listof=totoc,tikz,border=5mm]{scrartcl}
|
||||
|
||||
\usepackage{hhline} % Tutorial Table border
|
||||
\usepackage{listings} % Code Listings
|
||||
|
|
50
Mieke/CMSISPacks.tex
Normal file
50
Mieke/CMSISPacks.tex
Normal file
|
@ -0,0 +1,50 @@
|
|||
\subsection[CMSIS-Packs]{\gls{CMSIS}-Packs}
|
||||
\label{sec:cmsis-packs}
|
||||
|
||||
Libraries und Beispielprojekte für die \uVision{} 5 werden in sogenannten \gls{CMSIS}-Packs verwaltet. \gls{CMSIS}-Packs sind \gls{ZIP}-Dateien, welche eine Beschreibungs-Datei im \texttt{.pdsc}-Format enthält. Dies ist intern eine \gls{XML}-Datei, welche den Inhalt und die Abhängigkeiten eines \gls{CMSIS}-Packs beschreibt.
|
||||
|
||||
Im Zuge dieser Diplomarbeit entstand ein \gls{CMSIS}-Pack für die HTL \gls{STDLib} und einige Assembler Helper-Dateien, welche für das alte \gls{Minimalsystem} verwendet werden. Dies macht das Arbeiten mit der alten Platform in Verbindung mit \uVision{} 5 einfacher als dies mit der Version 4 war. Des weiteren bietet diese Pack-Strukturierung eine einfache Möglichkeit des Updatens von Libraries, was mit der \uVision{} 4 in dieser Form überhaupt nicht möglich war.
|
||||
|
||||
\subsubsection{Die Erstellung}
|
||||
\label{sec:cmsis-erstellung}
|
||||
|
||||
Die Erstellung eines minimalen \gls{CMSIS}-Packs ist nicht allzu schwer und in einigen Minuten erledigt. Die Erstellung von komplexeren Packs mit Abhängigkeiten, Beispielprojekten und so weiter kann unter \cite{arm:CMSISPack} eingesehen werden. Im folgenden Beispiel wird das \gls{STDLib}-Pack erstellt.
|
||||
|
||||
\begin{warning}
|
||||
Hinweis: Hier wird nur auf die Erstellung des Packs an sich, nicht aber auf die Erstellung der im Pack inkludierten Libraries eingegangen.
|
||||
\end{warning}
|
||||
|
||||
\subsubsubsection{Inhalt}
|
||||
\label{sec:cmsis-inhalt}
|
||||
|
||||
Der Inhalt des \gls{STDLib} \gls{CMSIS}-Packs kann in \fref{fig:cmsis-inhalt} gesehen werden.
|
||||
|
||||
% \dirtree{%
|
||||
% .1 /.
|
||||
% .2 Header.
|
||||
% .3 armv10_serbus.h.
|
||||
% .3 armv10_std.h.
|
||||
% .3 STD_STM32_F103RB_ASM.INC.
|
||||
% .3 STM32_F103RB_MEM_MAP.INC.
|
||||
% .2 Library.
|
||||
% .3 armv10_serbus.lib.
|
||||
% .3 ARMV10_STD.lib.
|
||||
% .2 HTBL_Hollabrunn.STD-Pack.pdsc.
|
||||
% }
|
||||
|
||||
\begin{forest}
|
||||
for tree={font=\sffamily, grow'=0,
|
||||
folder indent=0.2em, folder icons,
|
||||
edge=densely dotted}
|
||||
[/
|
||||
[Header
|
||||
[armv10\_serbus.h, is file]
|
||||
[armv10\_std.h, is file]
|
||||
[STD\_STM32\_F103RB\_ASM.INC, is file]
|
||||
[STM32\_F103RB\_MEM\_MAP.INC, is file]]
|
||||
[Library
|
||||
[armv10\_serbus.lib, is file]
|
||||
[ARMV10\_STD.lib, is file]]
|
||||
[HTBL Hollabrunn.STD-Pack.pdsc, is file]
|
||||
]
|
||||
\end{forest}
|
|
@ -13,3 +13,5 @@ Zur Programmierung des neuen \gls{Minimalsystem}s wurde die \gls{IDE} Keil \uVis
|
|||
In den nun folgenden Kapiteln wurde dieses Tutorial, in leicht abgewandelter Form, übernommen, das Originaldokument kann unter \cite{doku:tutorial} gefunden werden.
|
||||
|
||||
\input{Mieke/Tutorial/Tutorial}
|
||||
|
||||
\input{Mieke/CMSISPacks}
|
51
Mieke/Pack/Files/HTBL Hollabrunn.STD-Pack.pdsc
Normal file
51
Mieke/Pack/Files/HTBL Hollabrunn.STD-Pack.pdsc
Normal file
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<package schemaVersion="1.4" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="PACK.xsd">
|
||||
<vendor>HTBL Hollabrunn</vendor>
|
||||
<name>STD-Pack</name>
|
||||
<description>HTL Hollabrunn library and include pack</description>
|
||||
<url></url>
|
||||
<supportContact></supportContact>
|
||||
|
||||
<releases>
|
||||
<release version="1.0.0" date="2017-07-16">
|
||||
Initial version
|
||||
</release>
|
||||
</releases>
|
||||
|
||||
<keywords>
|
||||
<keyword>HTBL Hollabrunn</keyword>
|
||||
<keyword>STD Library</keyword>
|
||||
<keyword>Serbus Library</keyword>
|
||||
</keywords>
|
||||
|
||||
<components>
|
||||
<component Cclass="HTBL Hollabrunn" Cgroup="Libraries" Csub="STDLib" Cversion="1.0.0">
|
||||
<description>Standard library for the HTBL</description>
|
||||
<files>
|
||||
<file category="header" name="Header/armv10_std.h"/>
|
||||
<file category="library" name="Library/ARMV10_STD.lib"/>
|
||||
</files>
|
||||
</component>
|
||||
<component Cclass="HTBL Hollabrunn" Cgroup="Libraries" Csub="SerbusLib" Cversion="1.0.0" condition="STDLib">
|
||||
<description>Serial bus library for the HTBL</description>
|
||||
<files>
|
||||
<file category="header" name="Header/armv10_serbus.h"/>
|
||||
<file category="library" name="Library/armv10_serbus.lib"/>
|
||||
</files>
|
||||
</component>
|
||||
<component Cclass="HTBL Hollabrunn" Cgroup="Assembler" Csub="Includes" Cversion="1.0.0">
|
||||
<description>Assembler includes for the HTBL</description>
|
||||
<files>
|
||||
<file category="header" name="Header/STD_STM32_F103RB_ASM.INC"/>
|
||||
<file category="header" name="Header/STM32_F103RB_MEM_MAP.INC"/>
|
||||
</files>
|
||||
</component>
|
||||
</components>
|
||||
|
||||
<conditions>
|
||||
<condition id="STDLib">
|
||||
<description>Standard library</description>
|
||||
<require Cclass="HTBL Hollabrunn" Cgroup="Libraries" Csub="STDLib" />
|
||||
</condition>
|
||||
</conditions>
|
||||
</package>
|
30
Mieke/Pack/Files/Header/STD_STM32_F103RB_ASM.INC
Normal file
30
Mieke/Pack/Files/Header/STD_STM32_F103RB_ASM.INC
Normal file
|
@ -0,0 +1,30 @@
|
|||
;******************************************************************************
|
||||
;* (C) Copyright HTL - HOLLABRUNN 2009-2010 All rights reserved. AUSTRIA *
|
||||
;* *
|
||||
;* File Name: std32_f103rb_std.inc *
|
||||
;* Autor: Josef Reisinger *
|
||||
;* Version: V1.00 *
|
||||
;* Date: 25/10/2010 *
|
||||
;* Description: Standard Library für ARM Corttex M3 *
|
||||
;******************************************************************************
|
||||
;* History: V1.00 creation *
|
||||
;* *
|
||||
;******************************************************************************
|
||||
|
||||
EXTERN init_leds_switches
|
||||
EXTERN set_leds
|
||||
EXTERN get_actual_switches
|
||||
EXTERN wait_ms
|
||||
EXTERN wait_10us
|
||||
EXTERN uart_init
|
||||
EXTERN uart_put_char
|
||||
EXTERN uart_get_char
|
||||
EXTERN uart_put_string
|
||||
EXTERN uart_clear
|
||||
EXTERN uart_put_hex
|
||||
EXTERN nib2asc
|
||||
EXTERN hex2bcd
|
||||
EXTERN asc2nib
|
||||
|
||||
|
||||
END
|
73
Mieke/Pack/Files/Header/STM32_F103RB_MEM_MAP.INC
Normal file
73
Mieke/Pack/Files/Header/STM32_F103RB_MEM_MAP.INC
Normal file
|
@ -0,0 +1,73 @@
|
|||
|
||||
; File soll in Verzeichnis "C:\Keil\ARM\INC\ST\STM32F10x" kopiert werden (Installationspfad µVision)
|
||||
|
||||
PERIPH_BB_BASE EQU 0x42000000
|
||||
|
||||
|
||||
PERIPH_BASE EQU 0x40000000
|
||||
APB2PERIPH_BASE EQU PERIPH_BASE + 0x10000
|
||||
AHBPERIPH_BASE EQU PERIPH_BASE + 0x20000
|
||||
|
||||
|
||||
GPIOA_BASE EQU APB2PERIPH_BASE + 0x0800
|
||||
GPIOA_CRL EQU GPIOA_BASE
|
||||
GPIOA_CRH EQU GPIOA_BASE+0x04
|
||||
GPIOA_IDR EQU GPIOA_BASE+0x08
|
||||
GPIOA_ODR EQU GPIOA_BASE+0x0c
|
||||
GPIOA_BSRR EQU GPIOA_BASE+0x10
|
||||
GPIOA_BRR EQU GPIOA_BASE+0x14
|
||||
GPIOA_LCKR EQU GPIOA_BASE+0x18
|
||||
|
||||
|
||||
GPIOB_BASE EQU APB2PERIPH_BASE + 0x0C00
|
||||
GPIOB_CRL EQU GPIOB_BASE
|
||||
GPIOB_CRH EQU GPIOB_BASE+0x04
|
||||
GPIOB_IDR EQU GPIOB_BASE+0x08
|
||||
GPIOB_ODR EQU GPIOB_BASE+0x0c
|
||||
GPIOB_BSRR EQU GPIOB_BASE+0x10
|
||||
GPIOB_BRR EQU GPIOB_BASE+0x14
|
||||
GPIOB_LCKR EQU GPIOB_BASE+0x18
|
||||
|
||||
|
||||
GPIOC_BASE EQU APB2PERIPH_BASE + 0x1000
|
||||
GPIOC_CRL EQU GPIOC_BASE
|
||||
GPIOC_CRH EQU GPIOC_BASE+0x04
|
||||
GPIOC_IDR EQU GPIOC_BASE+0x08
|
||||
GPIOC_ODR EQU GPIOC_BASE+0x0c
|
||||
GPIOC_BSRR EQU GPIOC_BASE+0x10
|
||||
GPIOC_BRR EQU GPIOC_BASE+0x14
|
||||
GPIOC_LCKR EQU GPIOC_BASE+0x18
|
||||
|
||||
|
||||
USART1_BASE EQU APB2PERIPH_BASE + 0x3800
|
||||
USART1_SR EQU USART1_BASE
|
||||
USART1_DR EQU USART1_BASE+0x04
|
||||
USART1_BRR EQU USART1_BASE+0x08
|
||||
USART1_CR1 EQU USART1_BASE+0x0C
|
||||
USART1_CR2 EQU USART1_BASE+0x10
|
||||
USART1_CR3 EQU USART1_BASE+0x14
|
||||
USART1_GTPR EQU USART1_BASE+0x18
|
||||
|
||||
|
||||
RCC_BASE EQU AHBPERIPH_BASE + 0x1000
|
||||
RCC_CR EQU RCC_BASE
|
||||
RCC_CFGR EQU RCC_BASE+0x04
|
||||
RCC_CIR EQU RCC_BASE+0x08
|
||||
RCC_APB2RSTR EQU RCC_BASE+0x0C
|
||||
RCC_APB1RSTR EQU RCC_BASE+0x10
|
||||
RCC_AHBENR EQU RCC_BASE+0x14
|
||||
RCC_APB2ENR EQU RCC_BASE+0x18
|
||||
RCC_APB1ENR EQU RCC_BASE+0x1C
|
||||
RCC_BDCR EQU RCC_BASE+0x20
|
||||
RCC_CSR EQU RCC_BASE+0x24
|
||||
RCC_AHBRSTR EQU RCC_BASE+0x28
|
||||
RCC_CFGR2 EQU RCC_BASE+0x2C
|
||||
|
||||
RCC_APB2ENR_IOPAEN EQU 0x0004
|
||||
RCC_APB2ENR_IOPBEN EQU 0x0008
|
||||
RCC_APB2ENR_IOPCEN EQU 0x0010
|
||||
RCC_APB2ENR_USART1EN EQU 0x4000
|
||||
|
||||
|
||||
END
|
||||
|
328
Mieke/Pack/Files/Header/armv10_serbus.h
Normal file
328
Mieke/Pack/Files/Header/armv10_serbus.h
Normal file
|
@ -0,0 +1,328 @@
|
|||
/******************************************************************************/
|
||||
/* (C) Copyright HTL - HOLLABRUNN 2009-2010 All rights reserved. AUSTRIA */
|
||||
/* */
|
||||
/* File Name: armv10_serbus.h */
|
||||
/* Autor: Jakob Maier */
|
||||
/* Version: V1.00 */
|
||||
/* Date: 23/07/2010 */
|
||||
/* Description: Library für Serielle Busse (I2C und SPI) für ARM Corttex M3 */
|
||||
/* */
|
||||
/******************************************************************************/
|
||||
/* History: 07.05.2010: Jakob Maier creation V1.00 (I2C) */
|
||||
/* - Beinhaltet alle wesentlichen Unterprogramme */
|
||||
/* die zur Kommunikation über den I2C-Bus */
|
||||
/* 28.02.2011: REJ V1.1 */
|
||||
/* - Library aus Funktionen erstellt */
|
||||
/******************************************************************************/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __ARMV10_SERBUS_H
|
||||
#define __ARMV10_SERBUS_H
|
||||
|
||||
//Hardware:
|
||||
//*********
|
||||
//
|
||||
//SCL=PB6
|
||||
//SDA=PB7
|
||||
//Wichtig: Die Leitungen zur Sicherheit mit 2stk. 4,7kOhm Pull-Up Widerständen an die 3,3V anpassen!
|
||||
//
|
||||
|
||||
|
||||
//Master Receiver:
|
||||
//****************
|
||||
//
|
||||
//1 Byte + Stop: init (-) start(adr+1,1) - read(&dat,x)
|
||||
//1 Byte + Stop: init (-) I2C1_read_1(adr+x,&dat)
|
||||
//
|
||||
//2 Byte + Stop: init (-) start(adr+1,0) - read(&dat,1) - read(&dat,x)
|
||||
//2 Byte + Stop: init (-) start(adr+1,0) - I2C1_read_last2(&dat1,&dat2)
|
||||
//
|
||||
//3 Byte + Stop: init (-) start(adr+1,0) (-) read(&dat,0) - read(&dat,1) - read(&dat,x)
|
||||
//3 Byte + Stop: init (-) start(adr+1,0) (-) read(&dat,0) - I2C1_read_last2(&dat1,&dat2)
|
||||
//
|
||||
//4 Byte + Stop: init (-) start(adr+1,0) (-) read(&dat,0) (-) read(&dat,0) - read(&dat,1) - read(&dat,x)
|
||||
//4 Byte + Stop: init (-) start(adr+1,0) (-) read(&dat,0) (-) read(&dat,0) - I2C1_read_last2(&dat1,&dat2)
|
||||
//
|
||||
//5 Byte + Stop: init (-) start(adr+1,0) (-) read(&dat,0) (-) read(&dat,0) (-) read(&dat,0) - read(&dat,1) - read(&dat,x)
|
||||
//...
|
||||
//n Byte + Stop: init (-) I2C1_read_n(adr+x,daten[],anz)
|
||||
//
|
||||
//Master Transmitter:
|
||||
//*******************
|
||||
//
|
||||
//1 Byte + Stop: init (-) start(adr+0,x) (-) send(data,1)
|
||||
//2 Byte + Stop: init (-) start(adr+0,x) (-) send(data,0) (-) send(data,1)
|
||||
//3 Byte + Stop: init (-) start(adr+0,x) (-) send(data,0) (-) send(data,0) (-) send(data,1)
|
||||
//...
|
||||
//n Byte + Stop (Pause zw. Byteübertragung mögl.): init (-) I2C1_send_n(adr+x,daten[],anz,pause)
|
||||
//
|
||||
//Legende:
|
||||
//********
|
||||
//
|
||||
// "(-)": Sofort danach oder nach einer beliebig langen Pause folgt die nächste Operation (Achtung: bei einem Reset kann es zu Error Nr. 0x86 kommen - Die Busleitungen sind noch immer auf 0, da mitten im Datenverkehr abgebrochen wurde)
|
||||
// " - ": Sofort danach folgt die nächste Operation (Es muss sofort reagiert werden)
|
||||
//
|
||||
|
||||
|
||||
/*-------------------------------------------------- I2C - Fehlercodes: -----------------------------*/
|
||||
// Ein Fehlercode beinhaltet zwei Arten von Daten: Wo der Fehler auftrat und was der Fehlergrund ist.
|
||||
// Die ersten 4bit (MSB) geben an, in welcher Routine sich der Fehler ereignet hat (Fehlerposition), die
|
||||
// letzten 4bit (LSB) geben die Fehlerart an. Ist kein Fehler aufgetreten, wird 0x00 als Code verwendet,
|
||||
// die Fehlerposition nicht miteinberechnet.
|
||||
// Fehlercode-Berechnung: "Fehlercode" = "Fehlerposition" | "Fehlerart";
|
||||
//
|
||||
#define info_success 0x00 //Kein Fehler aufgetreten (immer 0x00)
|
||||
|
||||
/*------------ Fehlerposition:---------*/
|
||||
#define err_at_init 0x80 //Fehler in der Initialisierungsroutine
|
||||
#define err_at_start 0x40 //Fehler in der Start- und Adressierungsroutine
|
||||
#define err_at_send 0x20 //Fehler in der Senderoutine
|
||||
#define err_at_read 0x10 //Fehler in der Empfangsroutine
|
||||
|
||||
/*----------- Fehlerarten:-------------*/
|
||||
#define error_I2C1_running 0x01 //Der I2C1-Bus ist bereits in Betrieb und kann nicht mehr initialisiert werden
|
||||
#define error_I2C1_disabled 0x02 //Es kann keine Startbedingung erzeugt werden, da der Bus außer Betrieb ist (Keine Initialisierung)
|
||||
#define error_no_master 0x03 //Der I2C1-Bus befindet sich nicht im Mastermode ("start()": Peripherie-Fehler; "send()": Startbedingung erzeugt?)
|
||||
#define error_no_transmitter 0x04 //Es können keine Daten gesandt werden, da der Slavebaustein zum lesen Adressiert wurde (R/W-bit muss 0 sein)
|
||||
#define error_not_addressed 0x05 //Die Hardware wurde nicht adressiert, NACK erhalten (Wurde die richtige Adresse eingestellt?)
|
||||
#define error_timeout_busy 0x06 //Der Bus kann derzeit noch nicht initialisiert werden, da bereits ein Datenverkehr ausgeführt wird
|
||||
//(Leitung auf "LOW" - PullUp-Widerstände vorhanden?)
|
||||
#define error_timeout_start 0x07 //Bei der Startbedingung ist es zu einem Time-Out gekommen (Ist der Bus belegt (Multimaster-Mode)?,
|
||||
//Ist vielleicht noch eine Datenübertragung im gange?)
|
||||
#define error_timeout_stop 0x08 //Bei der Stopbedingung ist es zu einem Time-Out gekommen (Ist vielleicht noch eine Datenübertragung im gange?)
|
||||
#define error_timeout_send 0x09 //Die Daten wurden nicht übertragen (Timeout) (Verwendet der Slave Clock-Streching?
|
||||
//Sind die Busleitungen auf "LOW" gefallen?)
|
||||
#define error_NACK 0x0A //Der Slave hat auf die Daten mit einem NACK geantwortet (Der Fehler liegt auf der Slave-Seite oder es wurde
|
||||
//dessen Übertragungsprotokoll verletzt/beendet)
|
||||
#define error_no_data 0x0B //Bei "read()". Entweder wurde noch kein Baustein adresiert oder nach Beendigung der letzten Übertragung
|
||||
//sind keine ausstehenden Daten mehr vorhanden (Adressiert? "I2C1_data_available()" verwendet?)
|
||||
|
||||
|
||||
#ifdef ARMV10_SERBUS_MOD
|
||||
#define EXPORT
|
||||
#else
|
||||
#define EXPORT extern
|
||||
#endif
|
||||
|
||||
/* ---------------------------Exported functions ---------------------------- */
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C_error_message */
|
||||
/* */
|
||||
/* Aufgabe: Gibt eine I2C Fehleranalyse auf UART aus */
|
||||
/* Input: I2C Fehlercode */
|
||||
/* return: I2C Fehlercode */
|
||||
/* Remark: Der Fehler wird als Rückgabewert weitergegeben um das UPro direkt */
|
||||
/* in einer Fehlerabfrage verwenden zu können: */
|
||||
/* "if(I2C_error_message(I2C1_init())!=info_success)" */
|
||||
/******************************************************************************/
|
||||
EXPORT char I2C_error_message(char errorcode);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C1_init */
|
||||
/* */
|
||||
/* Aufgabe: Initialisiert den I2C1-Bus im Standard-Modus (100kHz) */
|
||||
/* SCL=PB6, SDA=PB7 . Es wird die GPIOB und I2C1-Peripherie enabled. */
|
||||
/* I2C1 kann mit "I2C1_disable()" disabled werden. */
|
||||
/* Input: - */
|
||||
/* return: I2C Fehlercode */
|
||||
/* Remark: Nächster Schritt: "I2C1_start()" */
|
||||
/* I2C Fehlerposition 0x80 */
|
||||
/******************************************************************************/
|
||||
EXPORT char I2C1_init(void);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C1_disable */
|
||||
/* */
|
||||
/* Aufgabe: Schaltet die I2C1-Peripherie ab. Es ist keine Buskommunikation */
|
||||
/* mehr möglich. Die Ports werden als Output konfiguriert und auf */
|
||||
/* 1 gesetzt. */
|
||||
/* Input: - */
|
||||
/* return: - */
|
||||
/* Remark: */
|
||||
/* */
|
||||
/******************************************************************************/
|
||||
/* !!!!!!!!!!!!!!!!! Noch nicht getestet: !!!!!!!!!!!!!!!!!!!!!! */
|
||||
EXPORT void I2C1_disable(void);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C1_start */
|
||||
/* */
|
||||
/* Aufgabe: Erzeugt eine Startbedingung und Adressiert einen Slavebaustein. */
|
||||
/* Je nach R/W-Bit ist man Master Transmitter (0) oder Master */
|
||||
/* Receiver(1). */
|
||||
/* Input: "adresse": 7bit Adresse und Read/!Write - Bit "single": */
|
||||
/* Wenn das R/W-Bit 1 ist und nur ein Byte empfangen werden soll ist */
|
||||
/* "single" ungleich 0. */
|
||||
/* return: Fehlercode */
|
||||
/* Remark: I2C Fehlerposition 0x40 */
|
||||
/* Nächster I2C Schritt: Senden oder Empfangen */
|
||||
/******************************************************************************/
|
||||
EXPORT char I2C1_start(char adresse, char single);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C1_get_mode() */
|
||||
/* */
|
||||
/* Aufgabe: Übergibt den Status des I2C-Busses (Slave, Master Transmitter */
|
||||
/* oder Master Receiver). Damit kann im Nachhinein festgestellt */
|
||||
/* werden was das R/W-Bit war. */
|
||||
/* Input: - */
|
||||
/* return: 0x00: Der Bus ist deaktiviert */
|
||||
/* 0x01: Der Bus wurde als Slave adressiert */
|
||||
/* 0x02: Master Transmitter */
|
||||
/* 0x03: Master Receiver */
|
||||
/* Remark: */
|
||||
/* */
|
||||
/******************************************************************************/
|
||||
// !!!!!!!!!!!!!!!!!!!!!! Noch nicht getestet !!!!!!!!!!!!!!!!!!!!
|
||||
EXPORT char I2C1_get_mode(void);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C1_data_available() */
|
||||
/* */
|
||||
/* Aufgabe: Überprüft ob im Master-Receiver Modus Daten die Empfangen */
|
||||
/* wurden zum Abruf bereit stehen. Damit kann im Unterprogramm */
|
||||
/* "I2C1_read()" eine Endlosschleife vermieden werden. */
|
||||
/* Input: - */
|
||||
/* return: 0x00: Keine Daten vorhanden */
|
||||
/* 0x01: Daten im Datenregister */
|
||||
/* */
|
||||
/* Remark: */
|
||||
/* */
|
||||
/******************************************************************************/
|
||||
EXPORT char I2C1_data_available(void);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C1_read */
|
||||
/* */
|
||||
/* Aufgabe: Liest die Daten aus, die vom Slave gesendet wurden. Sind keine */
|
||||
/* Daten vorhanden wird solange gewartet, bis welche empfangen */
|
||||
/* wurden */
|
||||
/* Input: "daten": Variable in die die Daten geschrieben werden. */
|
||||
/* "last": Wenn dass das vorletzte Byte ist dass empfangen werden */
|
||||
/* soll, ist "last" ungleich 0 */
|
||||
/* return: Fehlercode */
|
||||
/* Remark: I2C Fehlerposition 0x10 */
|
||||
/* Nächster Schritt: Lesen oder nach Stop "I2C1_data_available()" */
|
||||
/* bzw. Start oder Disable */
|
||||
/******************************************************************************/
|
||||
EXPORT char I2C1_read(char *daten, char last);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C1_read_1 */
|
||||
/* */
|
||||
/* Aufgabe: Erzeugt eine Startbedingung, Übernimmt die Adressierung, empfangt*/
|
||||
/* ein einzelnes Byte und erzeugt dann wieder eine Stopbedingung */
|
||||
/* Input: "adresse": Slaveadresse (Das R/W-Bit wird im UPro auf 1 gesetzt) */
|
||||
/* "daten": Variable in die das empfangene Byte geschrieben wird */
|
||||
/* return: Fehlercode */
|
||||
/* Remark: I2C Fehlerposition 0x40 und 0x10 */
|
||||
/* Nächster Schritt: Start oder Disable */
|
||||
/******************************************************************************/
|
||||
EXPORT int I2C1_read_1(char adresse, char *daten);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C1_read_last2 */
|
||||
/* */
|
||||
/* Aufgabe: Empfängt 2 Bytes und erzeugt dann eine Stopbedingung. */
|
||||
/* Kann bei einem datenempfang ab 2 Bytes immer verwendet werden */
|
||||
/* */
|
||||
/* Input: "daten1": Variable für das vorletzte Empfangene Byte */
|
||||
/* "daten2": Das letzte Empfangsbyte */
|
||||
/* */
|
||||
/* return: Fehlercode */
|
||||
/* Remark: I2C Fehlerposition: 0x10 */
|
||||
/* Nächster I2CSchritt: Start oder Disable */
|
||||
/******************************************************************************/
|
||||
EXPORT char I2C1_read_last2(char *daten1, char *daten2);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C1_read_n */
|
||||
/* */
|
||||
/* Aufgabe: Liest eine bestimmte Anzahl an Daten ein. */
|
||||
/* Übernimmt auch die Startbedingung, die Adressierung */
|
||||
/* und die Stopbedingung. Das R/W-Bit wird im UPro gesetzt. */
|
||||
/* Input: "adresse": Adresse des Slave-Bausteins */
|
||||
/* "daten[]": Array, in das die Empfangsdaten geschrieben werden */
|
||||
/* "anzahl": Wie viele Bytes empfangen werden sollen (ab 1 Byte) */
|
||||
/* return: Fehlercode */
|
||||
/* Remark: I2C Fehlerposition: 0x40 und 0x20 */
|
||||
/* */
|
||||
/******************************************************************************/
|
||||
EXPORT char I2C1_read_n(char adresse, char daten[],int anzahl);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C1_send */
|
||||
/* */
|
||||
/* Aufgabe: Sendet ein einzelnes Byte an den Slave und kann dann eine */
|
||||
/* Stopbedingung erzeugen. Das R/W-Bit muss 0 (Master Transmitter) */
|
||||
/* gewesen sein. */
|
||||
/* */
|
||||
/* Input: "daten": Die Sendedaten */
|
||||
/* "stop": Wenn dies Variable ungleich 0 ist, wird nach der */
|
||||
/* Übertragung eine Stopbedingung erzeugt */
|
||||
/* return: */
|
||||
/* Remark: I2C Fehlerposition: 0x20 */
|
||||
/* Nächster Schritt: Senden, oder wenn "stop" ungleich 0: */
|
||||
/* Start oder Disable */
|
||||
/******************************************************************************/
|
||||
EXPORT char I2C1_send(char daten,char stop);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: I2C1_send_n */
|
||||
/* */
|
||||
/* Aufgabe: Übernimmt die Startbedingung und die Adressierung. */
|
||||
/* Sendet danach eine Reihe an Daten an den Slave wobei dazwischen */
|
||||
/* Pausen eingelegt werden können. Danach kommt es zu einer */
|
||||
/* Stopcondition */
|
||||
/* Input: "adresse": Slaveadresse (Das R/W-Bit wird im UPro auf 0 gesetzt) */
|
||||
/* "daten[]": Array dessen Inhalt an den Slave gesendet wird */
|
||||
/* "anzahl": Anzahl der Bytes aus dem Array die gesendet werden */
|
||||
/* "Pause": Pause in Millisekunden die zwischen den Übertragungen */
|
||||
/* eingelegt wird */
|
||||
/* return: Fehlercode */
|
||||
/* Remark: I2C Fehlerposition: 0x40 und 0x20 */
|
||||
/* Nächster Schritt: Start oder Disable */
|
||||
/******************************************************************************/
|
||||
EXPORT char I2C1_send_n(char adresse, char daten[],int anzahl,int pause);
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: SPI1_Init */
|
||||
/* */
|
||||
/* Aufgabe: Initialisiert SPI 1 Schnittstelle */
|
||||
/* Input: */
|
||||
/* return: */
|
||||
/* Remark: */
|
||||
/* */
|
||||
/******************************************************************************/
|
||||
EXPORT void SPI1_Init(void);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: SPI1_Send */
|
||||
/* */
|
||||
/* Aufgabe: Sendet 1 Byte via SPI1 Schnittstelle */
|
||||
/* Input: */
|
||||
/* return: */
|
||||
/* Remark: */
|
||||
/* */
|
||||
/******************************************************************************/
|
||||
EXPORT void SPI1_Send(unsigned char send);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: SPI1_Receive */
|
||||
/* */
|
||||
/* Aufgabe: Empfängt 1 Byte von SPI1 Schnittstelle */
|
||||
/* Input: */
|
||||
/* return: */
|
||||
/* Remark: */
|
||||
/* */
|
||||
/******************************************************************************/
|
||||
EXPORT unsigned char SPI1_Receive(void);
|
||||
|
||||
|
||||
|
||||
#undef EXPORT
|
||||
#endif /* __ARMV10_SERBUS_H */
|
||||
|
||||
/******************* (C) HTL - HOLLABRUNN 2009-2010 *****END OF FILE****/
|
396
Mieke/Pack/Files/Header/armv10_std.h
Normal file
396
Mieke/Pack/Files/Header/armv10_std.h
Normal file
|
@ -0,0 +1,396 @@
|
|||
/******************************************************************************/
|
||||
/* (C) Copyright HTL - HOLLABRUNN 2009-2010 All rights reserved. AUSTRIA */
|
||||
/* */
|
||||
/* File Name: armv10_std.h */
|
||||
/* Autor: Josef Reisinger */
|
||||
/* Version: V1.00 */
|
||||
/* Date: 07/05/2010 */
|
||||
/* Description: Standard Library für ARM Corttex M3 */
|
||||
/******************************************************************************/
|
||||
/* History: V1.00 creation */
|
||||
/* V1.01 09.06.2010 REJ: */
|
||||
/* Add Bit banding Adresses for LED/Switsches Board */
|
||||
/* V2.0 19.02.2011 REJ: */
|
||||
/* - dil_taster_init, dil_led_init hinzugefügt */
|
||||
/* - lcd_setcursor auf 4 zelige anzeige erweiterst */
|
||||
/* - Bitbanding Definitiones von Pointer (Adresse der */
|
||||
/* Speicherzelle auf Inhalt der Speicherzelle umgestellt */
|
||||
/* - Fehler bei Portmodi Settings in Init_led Switsches */
|
||||
/* korrigiert */
|
||||
/******************************************************************************/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __ARMV10_STD_H
|
||||
#define __ARMV10_STD_H
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include <stm32f10x.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/*----------------------------- Define Pins for LED and Swistches--------------*/
|
||||
/* Einzel-Portpins im Bitbandbereich festlegen */
|
||||
|
||||
#define GPIOA_IDR GPIOA_BASE + 2*sizeof(uint32_t) // Calc peripheral address GPIOA IDR
|
||||
#define GPIOA_ODR GPIOA_BASE + 3*sizeof(uint32_t)
|
||||
#define GPIOB_IDR GPIOB_BASE + 2*sizeof(uint32_t)
|
||||
#define GPIOB_ODR GPIOB_BASE + 3*sizeof(uint32_t) // Calc peripheral address GPIOB ODR
|
||||
#define GPIOC_IDR GPIOC_BASE + 2*sizeof(uint32_t)
|
||||
#define GPIOC_ODR GPIOC_BASE + 3*sizeof(uint32_t)
|
||||
|
||||
// Calc Bit Band Adress from peripheral address: a = peripheral address b = Bit number
|
||||
#define BITBAND_PERI(a,b) ((PERIPH_BB_BASE + (a-PERIPH_BASE)*32 + (b*4)))
|
||||
|
||||
#define SW0 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,0))) // PA0
|
||||
#define SW1 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,1))) // PA1
|
||||
#define SW2 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,2))) // PA2
|
||||
#define SW3 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,3))) // PA3
|
||||
#define SW4 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,4))) // PA4
|
||||
#define SW5 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,5))) // PA5
|
||||
#define SW6 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,6))) // PA6
|
||||
#define SW7 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,7))) // PA7
|
||||
|
||||
#define PIEZO *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,0))) //Portleitung des Piezo-Summers (PB0)
|
||||
|
||||
#define LED0 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,8))) // PB8
|
||||
#define LED1 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,9))) // PB9
|
||||
#define LED2 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,10))) // PB10
|
||||
#define LED3 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,11))) // PB11
|
||||
#define LED4 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,12))) // PB12
|
||||
#define LED5 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,13))) // PB13
|
||||
#define LED6 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,14))) // PB14
|
||||
#define LED7 *((volatile unsigned long *)(BITBAND_PERI(GPIOB_ODR,15))) // PB15
|
||||
|
||||
#define DIL_LED1 *((volatile unsigned long *)(BITBAND_PERI(GPIOD_ODR,2))) //PD2
|
||||
#define DIL_LED2 *((volatile unsigned long *)(BITBAND_PERI(GPIOC_ODR,13))) //PC13
|
||||
#define DIL_LED3 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_ODR,8))) //PA8
|
||||
|
||||
#define DIL_TASTER1 *((volatile unsigned long *)(BITBAND_PERI(GPIOC_IDR,5))) //PC5
|
||||
#define DIL_TASTER2 *((volatile unsigned long *)(BITBAND_PERI(GPIOC_IDR,13))) //PC13
|
||||
#define DIL_TASTER3 *((volatile unsigned long *)(BITBAND_PERI(GPIOA_IDR,8))) //PA8
|
||||
|
||||
|
||||
|
||||
/*--------------------------------- Definitions LCD --------------------------*/
|
||||
#define LineLen 16 /* Width of LCD (in characters) */
|
||||
#define NumLines 2 /* Hight of LCD (in lines) */
|
||||
|
||||
/* ---------------------Vordefinierte Frequenzen fuer Tonerzeugung -----------*/
|
||||
#define ton_C1 262
|
||||
#define ton_D1 293
|
||||
#define ton_E1 329
|
||||
#define ton_F1 349
|
||||
#define ton_G1 391
|
||||
#define ton_A1 440
|
||||
#define ton_H1 493
|
||||
#define ton_C2 523
|
||||
#define ton_D2 587
|
||||
#define ton_E2 659
|
||||
#define ton_F2 698
|
||||
#define ton_G2 783
|
||||
#define ton_A2 880
|
||||
#define ton_H2 987
|
||||
#define ton_C3 1046
|
||||
|
||||
/* ------------------- Vordefinierte Längen (ms) für Tonerzeugung --------------*/
|
||||
#define ganze 800
|
||||
#define halbe 400
|
||||
#define viertel 200
|
||||
#define achtel 100
|
||||
#define sechzehntel 50
|
||||
|
||||
|
||||
#ifdef ARMV10_STD_MOD
|
||||
#define EXPORT
|
||||
#else
|
||||
#define EXPORT extern
|
||||
#endif
|
||||
|
||||
/* ----------------------------Exported functions ---------------------------- */
|
||||
|
||||
/* ------------------------- Reset and Clock Control -----------------------*/
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: Set System Clock to 72MHz */
|
||||
/* Input: none */
|
||||
/* return: none */
|
||||
/******************************************************************************/
|
||||
EXPORT void set_clock_72MHz(void);
|
||||
|
||||
/* ------------------------- LED/ Switches Board Funktions -------------------*/
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: init_leds_switches */
|
||||
/* */
|
||||
/* Aufgabe: Initialisiert Portleitungen für LED / Schalterplatine */
|
||||
/* Input: */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void init_leds_switches(void);
|
||||
|
||||
/*******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: set_leds */
|
||||
/* */
|
||||
/* Aufgabe: gibt hexadezimalen Wert in auf 8 Leds aus */
|
||||
/* (an Port 0 angeschlossen) */
|
||||
/* Input: value = Wert auf den LEDS gesetzt werden sollen */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void set_leds (char value);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: get_switches */
|
||||
/* */
|
||||
/* Aufgabe: liest aktuelle Schalterstellung ein */
|
||||
/* Input: */
|
||||
/* return: aktuelle Schalterstellung */
|
||||
/******************************************************************************/
|
||||
EXPORT char get_switches(void);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: dil_taster_init */
|
||||
/* */
|
||||
/* Aufgabe: Initialisiert Portleitung für Taster auf DIL */
|
||||
/* Input: */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void dil_taster_init(void);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: dil_led _init */
|
||||
/* */
|
||||
/* Aufgabe: Initialisiert Portleitung für LEDS auf DIL */
|
||||
/* Input: */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void dil_led_init(void);
|
||||
|
||||
|
||||
/* ------------------------- Miscellaneous Funktions --------------------------*/
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: WAIT_MS */
|
||||
/* */
|
||||
/* Aufgabe: Wartet die angegebene Anzahl an Millisekunden */
|
||||
/* Input: ms = Anzahl der zu wartenden Millisekunden */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void wait_ms(int ms);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: wait_10us */
|
||||
/* */
|
||||
/* Aufgabe: Wartet 10µs */
|
||||
/* Input: */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void wait_10us(void);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: Function converts a Nibble(0-F) to an ASCII ('0'-'F') */
|
||||
/* Input: nib: Nibble to convert */
|
||||
/* Output: nib: Converted Nibble */
|
||||
/* return: - */
|
||||
/******************************************************************************/
|
||||
EXPORT void nib2asc(char *nib);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: Function converts an ASCII('0'-'F') to a Nibble(0-F) */
|
||||
/* Input: asc: ASCII Code */
|
||||
/* Output: asc: Hex Value */
|
||||
/* return: - */
|
||||
/******************************************************************************/
|
||||
EXPORT void asc2nib(char *asc);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: Function converts a Hex-Code (00-FF) to an BCD (0-255) */
|
||||
/* Input: hex: Hex Value */
|
||||
/* return: BCD Value */
|
||||
/******************************************************************************/
|
||||
EXPORT int hex2bcd(char hex);
|
||||
|
||||
|
||||
/* ------------------------- UART Funktionen ----------------------------------*/
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: Initialisiert UART1 */
|
||||
/* Input: Baudrate */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void uart_init(unsigned long baudrate);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: liest ein Zeichen von UART1 ein */
|
||||
/* Input: */
|
||||
/* return: eingelesens Zeichen */
|
||||
/******************************************************************************/
|
||||
EXPORT char uart_get_char(void);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: Ausgabe eines Zeichens auf UART1 */
|
||||
/* Input: ch: Zeichen in ASCII Code */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void uart_put_char(char ch);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: Ausgabe eines 8 Bit Hex Wertes als ASCII String auf UART1 */
|
||||
/* Input: */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void uart_put_hex(char c);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: Ausgabe eines Strings auf UART1 */
|
||||
/* Input: string: C- String der aud UART1 ausgegeben werden soll */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void uart_put_string(char *string);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: sendet ein CLEAR Screen String ("ESC[2J") zu einem VT100 Terminal */
|
||||
/* Input: */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void uart_clear(void);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: sendet Positionierungsstring auf VT100 Terminal "ESC[y;xH" */
|
||||
/* Input: */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void uart_setpos(char x,char y);
|
||||
|
||||
/* ------------------------- LCD Funktionen ----------------------------------*/
|
||||
|
||||
/*******************************************************************************
|
||||
* Initialize the LCD controller *
|
||||
* Parameter: *
|
||||
* Return: *
|
||||
*******************************************************************************/
|
||||
EXPORT void lcd_init (void);
|
||||
|
||||
/*******************************************************************************
|
||||
* Write command to LCD controller *
|
||||
* Parameter: c: command to be written *
|
||||
* Return: *
|
||||
*******************************************************************************/
|
||||
EXPORT void lcd_write_cmd (unsigned char c);
|
||||
|
||||
/*******************************************************************************
|
||||
* Write data to LCD controller *
|
||||
* Parameter: c: data to be written *
|
||||
* Return: *
|
||||
*******************************************************************************/
|
||||
EXPORT void lcd_write_data (unsigned char c);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: Print Character to current cursor position */
|
||||
/* Input: c: character to be printed */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void lcd_put_char (char c);
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: */
|
||||
/* */
|
||||
/* Aufgabe: Ausgabe eines 8 Bit Hex Wertes als ASCII String auf LCD */
|
||||
/* Input: c: Hex Value to be printed */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void lcd_put_hex(char c);
|
||||
|
||||
|
||||
/*******************************************************************************/
|
||||
/* Set cursor position on LCD display */
|
||||
/* Parameter: line: line position (0-3) */
|
||||
/* column: column position (0-15) */
|
||||
/* Return: */
|
||||
/*******************************************************************************/
|
||||
EXPORT void lcd_set_cursor (int line_nr, int column_nr);
|
||||
|
||||
/*******************************************************************************
|
||||
* Clear the LCD display *
|
||||
* Parameter: *
|
||||
* Return: *
|
||||
*******************************************************************************/
|
||||
EXPORT void lcd_clear (void);
|
||||
|
||||
/*******************************************************************************
|
||||
* Print sting to LCD display *
|
||||
* Parameter: string: pointer to output string *
|
||||
* Return: *
|
||||
*******************************************************************************/
|
||||
EXPORT void lcd_put_string (char *string);
|
||||
|
||||
/*******************************************************************************
|
||||
* Print a bargraph to LCD display *
|
||||
* Parameter: val: value 0..100 % *
|
||||
* size: size of bargraph 1..16 *
|
||||
* Return: *
|
||||
*******************************************************************************/
|
||||
EXPORT void lcd_bargraph (int value, int size);
|
||||
|
||||
/*******************************************************************************
|
||||
* Display bargraph on LCD display *
|
||||
* Parameter: pos_y: vertical position of bargraph *
|
||||
* pos_x: horizontal position of bargraph start *
|
||||
* value: size of bargraph active field (in pixels) *
|
||||
* Return: *
|
||||
*******************************************************************************/
|
||||
EXPORT void lcd_bargraphXY (int pos_y, int pos_x, int value);
|
||||
|
||||
|
||||
|
||||
/* ------------------------- ADC Funktionen ----------------------------------*/
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: adc1_convert */
|
||||
/* */
|
||||
/* Aufgabe: liefert aktuellen Wert von ADC1 für Kanal channel */
|
||||
/* */
|
||||
/* Input: channel to convert */
|
||||
/* return: converted value (12Bit right aligned) */
|
||||
/******************************************************************************/
|
||||
EXPORT unsigned short int adc1_convert(unsigned char channel);
|
||||
|
||||
|
||||
/******************************************************************************/
|
||||
/* U N T E R P R O G R A M M: ton */
|
||||
/* */
|
||||
/* Aufgabe: Wiedergabe eines Ton auf Piezo Summer */
|
||||
/* */
|
||||
/* Input: frequenz: Frequenz des Tons in Hz */
|
||||
/* dauer: Dauer des in ms */
|
||||
/* return: */
|
||||
/******************************************************************************/
|
||||
EXPORT void ton(int frequenz,int dauer_ms);
|
||||
|
||||
#undef EXPORT
|
||||
#endif /* __ARMV10_STD_H */
|
||||
|
||||
/******************* (C) HTL - HOLLABRUNN 2009-2010 *****END OF FILE****/
|
BIN
Mieke/Pack/Files/Library/ARMV10_STD.lib
Normal file
BIN
Mieke/Pack/Files/Library/ARMV10_STD.lib
Normal file
Binary file not shown.
BIN
Mieke/Pack/Files/Library/armv10_serbus.lib
Normal file
BIN
Mieke/Pack/Files/Library/armv10_serbus.lib
Normal file
Binary file not shown.
BIN
Mieke/Pack/HTBL Hollabrunn.STD-Pack.1.0.0.pack
Normal file
BIN
Mieke/Pack/HTBL Hollabrunn.STD-Pack.1.0.0.pack
Normal file
Binary file not shown.
BIN
Mieke/Pack/Screenshots/inst.png
Normal file
BIN
Mieke/Pack/Screenshots/inst.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
BIN
Mieke/Pack/Screenshots/proj.png
Normal file
BIN
Mieke/Pack/Screenshots/proj.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.2 KiB |
BIN
Mieke/Pack/Screenshots/sel.png
Normal file
BIN
Mieke/Pack/Screenshots/sel.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
4
Mieke/Pack/gen_pack.sh
Normal file
4
Mieke/Pack/gen_pack.sh
Normal file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
cd Files
|
||||
7z a "../HTBL Hollabrunn.STD-Pack.1.0.0.pack" * -tzip
|
||||
cd ..
|
|
@ -196,7 +196,7 @@ Im Register Fenster (\fref{fig:tut-debugging3}) sind alle Register des Microcont
|
|||
|
||||
\fig{tut-debugging3}{\uVision{} 5: Register Fenster}{Register Fenster}{0.3\textwidth}{Mieke/Tutorial/Screenshots/debugging3}
|
||||
|
||||
Ein weiteres Fenster ist das Disassembly-Fenster, zu sehen in \fref{fig:tut-debugging4}, welches den zur Zeit ausgeführten Binärcode in Form von Assemblerbefehlen zeigt. Dies ist sinnvoll, wenn eine binäre Library analysiert und auf Fehler geprüft werden muss. Des weiteren kann man hier gut sehen bei welchem Teil einer Libraryfunktion das Programm zum Beispiel abstürzt oder hängen bleibt.
|
||||
Ein weiteres Fenster ist das Disassembly-Fenster, welches den zur Zeit ausgeführten Binärcode in Form von Assemblerbefehlen zeigt, siehe \fref{fig:tut-debugging4}. Dies ist sinnvoll, wenn eine binäre Library analysiert und auf Fehler geprüft werden muss. Des weiteren kann man hier gut sehen bei welchem Teil einer Libraryfunktion das Programm zum Beispiel abstürzt oder hängen bleibt.
|
||||
|
||||
\fig{tut-debugging4}{\uVision{} 5: Disassembly Fenster}{Disassembly Fenster}{0.75\textwidth}{Mieke/Tutorial/Screenshots/debugging4}
|
||||
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
|
||||
\newdualentry{Keil}{Keil}{Keil Elektronik GmbH}{war eine deutsche Firma (Anfangs: GbR), gegründet 1982 von Günther und Reinhard Keil. Das Hauptaufgabengebiet lag bei der Entwicklung von Evaluation Boards und der $\mu$Vision \gls{IDE}. Keil wurde 2005 von \gls{ARM} aufgekauft. Siehe: \cite{wiki:Keil} \cite{techdesignforums:ARM}}
|
||||
|
||||
\newdualentry{XML}{XML}{Extensible Markup Language}{ist eine Auszeichnungssprache, welche zur Abspeicherung von strukturierten Daten verwendet wird}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Glossary
|
||||
\newglossaryentry{Debugging}{
|
||||
name={Debugging},
|
||||
|
@ -53,3 +55,8 @@
|
|||
name={C++},
|
||||
description={ist eine objektorientierte Erweiterung zu \gls{C}. C++ wurde 1979 von Bjarne Stroustrup entwickelt. Siehe: \cite{wiki:C++}}
|
||||
}
|
||||
|
||||
\newglossaryentry{ZIP}{
|
||||
name={ZIP},
|
||||
description={ist ein weit verbreitetes Dateiformat, welches zur Archivierung und Kompression von Dateien und Ordnern verwendet wird. Der Name leitet sich aus dem englischen Wort \enquote{zipper} (Reißverschluss) ab}
|
||||
}
|
119
htlDT.sty
119
htlDT.sty
|
@ -29,6 +29,7 @@
|
|||
\RequirePackage{mdframed}
|
||||
\RequirePackage{pifont}
|
||||
\RequirePackage[section]{placeins}
|
||||
\RequirePackage[edges]{forest}
|
||||
|
||||
%\RequirePackage[
|
||||
% inner=2cm,
|
||||
|
@ -84,6 +85,27 @@
|
|||
tocnumwidth=7em
|
||||
]{subparagraph}
|
||||
|
||||
\definecolor{foldercolor}{RGB}{124,166,198}
|
||||
|
||||
\tikzset{pics/folder/.style={code={%
|
||||
\node[inner sep=0pt, minimum size=#1](-foldericon){};
|
||||
\node[folder style, inner sep=0pt, minimum width=0.3*#1, minimum height=0.6*#1, above right, xshift=0.05*#1] at (-foldericon.west){};
|
||||
\node[folder style, inner sep=0pt, minimum size=#1] at (-foldericon.center){};}
|
||||
},
|
||||
pics/folder/.default={20pt},
|
||||
folder style/.style={draw=foldercolor!80!black,top color=foldercolor!40,bottom color=foldercolor}
|
||||
}
|
||||
|
||||
\forestset{is file/.style={edge path'/.expanded={%
|
||||
([xshift=\forestregister{folder indent}]!u.parent anchor) |- (.child anchor)},
|
||||
inner sep=1pt},
|
||||
this folder size/.style={edge path'/.expanded={%
|
||||
([xshift=\forestregister{folder indent}]!u.parent anchor) |- (.child anchor) pic[solid]{folder=#1}}, inner ysep=0.6*#1},
|
||||
folder tree indent/.style={before computing xy={l=#1}},
|
||||
folder icons/.style={folder, this folder size=#1, folder tree indent=3*#1},
|
||||
folder icons/.default={12pt},
|
||||
}
|
||||
|
||||
% \fig{ref}{descshort}{desclong}{width}{path}
|
||||
\newcommand*{\fig}[5]{
|
||||
\begin{figure}[!ht]
|
||||
|
@ -154,34 +176,63 @@
|
|||
}%
|
||||
|
||||
\newcommand*{\htlheader}[1]{%
|
||||
\begin{tabularx}{\textwidth}{| c | Y |}
|
||||
\hline
|
||||
\multirow{2}{*}{
|
||||
\begin{minipage}{0.2\textwidth}
|
||||
\vspace{1mm}
|
||||
\includegraphics[width=\textwidth]{logos/htl-2}
|
||||
\vspace{1mm}
|
||||
\end{minipage}
|
||||
} & \Large Blubber\\[2ex]
|
||||
& Bla\\[1.5ex]
|
||||
\hline
|
||||
\end{tabularx}
|
||||
% \centering%
|
||||
% \fbox{%
|
||||
% \begin{minipage}{0.2\textwidth}%
|
||||
% \raggedright%
|
||||
% \includegraphics[width=\textwidth]{logos/htl-2}%
|
||||
% \end{minipage}%
|
||||
% \hfill\hspace{0.3cm}\vline\hfill%
|
||||
% \begin{minipage}{0.8\textwidth}%
|
||||
% \centering%
|
||||
% \begin{tabular}{c}
|
||||
% Foo\\
|
||||
% \hline
|
||||
% bar\\
|
||||
% \end{tabular}
|
||||
% \end{minipage}%
|
||||
% }%
|
||||
\ifnum\pdf@strcmp{\unexpanded{#1}}{german}=0 %
|
||||
\expandafter\@firstoftwo%
|
||||
\else%
|
||||
\expandafter\@secondoftwo%
|
||||
\fi%
|
||||
{%
|
||||
{%
|
||||
\setlength\arrayrulewidth{1.5pt}%
|
||||
\begin{tabularx}{\textwidth}{| p{0.2\textwidth} | X |}%
|
||||
\hline%
|
||||
\multirow{ 2}{*}{%
|
||||
\begin{minipage}[c][1.5cm]{0.2\textwidth}%
|
||||
\includegraphics[height=1.4cm]{logos/htl-2}%
|
||||
\end{minipage}%
|
||||
}%
|
||||
&%
|
||||
\begin{minipage}[c][1.5cm]{\textwidth - 0.22\textwidth}%
|
||||
\centering%
|
||||
\textsf{\Large Höhere Technische Bundeslehranstalt Hollabrunn}%
|
||||
\end{minipage}\\%
|
||||
\cline{2-2}%
|
||||
&%
|
||||
\begin{minipage}[c][0.8cm]{\textwidth - 0.22\textwidth}%
|
||||
\textsf{Fachrichtung: }%
|
||||
\centering%
|
||||
\textsf{Elektronik und Technische Informatik}%
|
||||
\end{minipage}\\%
|
||||
\hline%
|
||||
\end{tabularx}%
|
||||
}%
|
||||
}%
|
||||
{%
|
||||
{%
|
||||
\setlength\arrayrulewidth{1.5pt}%
|
||||
\begin{tabularx}{\textwidth}{| p{0.2\textwidth} | X |}%
|
||||
\hline%
|
||||
\multirow{ 2}{*}{%
|
||||
\begin{minipage}[c][1.5cm]{0.2\textwidth}%
|
||||
\includegraphics[height=1.4cm]{logos/htl-2}%
|
||||
\end{minipage}%
|
||||
}%
|
||||
&%
|
||||
\begin{minipage}[c][1.5cm]{\textwidth - 0.22\textwidth}%
|
||||
\centering%
|
||||
\textsf{\Large Höhere Technische Bundeslehranstalt Hollabrunn\\ College of Engineering}%
|
||||
\end{minipage}\\%
|
||||
\cline{2-2}%
|
||||
&%
|
||||
\begin{minipage}[c][0.8cm]{\textwidth - 0.22\textwidth}%
|
||||
\textsf{Department: }%
|
||||
\centering%
|
||||
\textsf{Electronics and computer engineering}%
|
||||
\end{minipage}\\%
|
||||
\hline%
|
||||
\end{tabularx}%
|
||||
}%
|
||||
}%
|
||||
}%
|
||||
|
||||
% Listing extension for fancyref using the prefix "lst".
|
||||
|
@ -520,15 +571,15 @@
|
|||
\end{minipage}%
|
||||
}\\%
|
||||
\hline%
|
||||
\begin{minipage}[t][3cm]{5cm}%
|
||||
\begin{minipage}[t][2.5cm]{5cm}%
|
||||
\textsf{Aprobation\\(Datum/Unterschrift)}%
|
||||
\end{minipage}%
|
||||
&%
|
||||
\begin{minipage}[t][3cm]{5cm}%
|
||||
\begin{minipage}[t][2.5cm]{5cm}%
|
||||
\textsf{\scriptsize Prüfer/Prüferin}%
|
||||
\end{minipage}%
|
||||
&%
|
||||
\begin{minipage}[t][3cm]{5cm}%
|
||||
\begin{minipage}[t][2.5cm]{5cm}%
|
||||
\textsf{\scriptsize Direktor/Direktorin\\Abteilungsvorstand/Abteilungsvorständin}%
|
||||
\end{minipage}\\%
|
||||
\hline%
|
||||
|
@ -663,15 +714,15 @@
|
|||
\end{minipage}%
|
||||
}\\%
|
||||
\hline%
|
||||
\begin{minipage}[t][3cm]{5cm}%
|
||||
\begin{minipage}[t][2.5cm]{5cm}%
|
||||
\textsf{Approval\\(Date/Signature)}%
|
||||
\end{minipage}%
|
||||
&%
|
||||
\begin{minipage}[t][3cm]{5cm}%
|
||||
\begin{minipage}[t][2.5cm]{5cm}%
|
||||
\textsf{\scriptsize Examiner/s}%
|
||||
\end{minipage}%
|
||||
&%
|
||||
\begin{minipage}[t][3cm]{5cm}%
|
||||
\begin{minipage}[t][2.5cm]{5cm}%
|
||||
\textsf{\scriptsize Head of Department/College}%
|
||||
\end{minipage}\\%
|
||||
\hline%
|
||||
|
|
|
@ -93,3 +93,11 @@
|
|||
url = "https://de.wikipedia.org/w/index.php?title=C%2B%2B&oldid=174161963",
|
||||
note = "[Online; Stand 15. März 2018]"
|
||||
}
|
||||
|
||||
@online{ arm:CMSISPack,
|
||||
author = "{ARM Limited}",
|
||||
title = "Pack with Software Components",
|
||||
year = "2018",
|
||||
url = "https://www.keil.com/pack/doc/CMSIS/Pack/html/cp_SWComponents.html",
|
||||
note = "[Online; Stand 15. März 2018]"
|
||||
}
|
Loading…
Reference in a new issue