Browse Source

Added docs for school

Thomas Buck 12 years ago
parent
commit
6291712d71

+ 7
- 1
CubeControl/libSerial/unixSerial.c View File

@@ -31,6 +31,7 @@
31 31
 #include <fcntl.h>
32 32
 #include <termios.h>
33 33
 #include <dirent.h>
34
+#include <errno.h>
34 35
 
35 36
 #define BAUD B19200
36 37
 
@@ -94,7 +95,12 @@ ssize_t serialWrite(char *data, size_t length) {
94 95
 
95 96
 // Read from port. Return number of characters read, 0 if none available, -1 on error
96 97
 ssize_t serialRead(char *data, size_t length) {
97
-	return read(fd, data, length);
98
+	ssize_t temp = read(fd, data, length);
99
+	if ((temp == -1) && (errno == EAGAIN)) {
100
+		return 0;
101
+	} else {
102
+		return temp;
103
+	}
98 104
 }
99 105
 
100 106
 // Close the serial Port

+ 7
- 8
CubeFirmware/main.c View File

@@ -37,18 +37,17 @@ int main(void) {
37 37
 	// init(); // Initialize Cube Low-Level Code
38 38
 	uart_init(UART_BAUD_SELECT(19200, 16000000L)); // Initialize Serial
39 39
 
40
+
41
+	setFet(0xFF);
40 42
 	// Blink led :)
41 43
 	while (1) {
42
-		/* PORTB |= (1 << PB0);
44
+		 PORTB |= (1 << PB0);
43 45
 		_delay_ms(1000);
44 46
 		PORTB &= ~(1 << PB0);
45
-		_delay_ms(1000); */
46
-		for (i = 0; i < 8; i++) {
47
-			setFet(1 << i);
48
-			_delay_ms(500);
49
-		}
50
-		setFet(0);
51
-		_delay_ms(10000);
47
+		_delay_ms(1000);
48
+		
49
+		//setFet(0);
50
+		//_delay_ms(10000);
52 51
 	}
53 52
 
54 53
 	close();

BIN
Dokumentation/CubeControl.png View File


BIN
Dokumentation/Projektbeschreibung.pdf View File


+ 99
- 0
Dokumentation/Projektbeschreibung.tex View File

@@ -0,0 +1,99 @@
1
+\documentclass[11pt]{amsart}
2
+\usepackage{geometry}                % See geometry.pdf to learn the layout options. There are lots.
3
+\geometry{a4paper}                   % ... or a4paper or a5paper or ... 
4
+%\geometry{landscape}                % Activate for for rotated page geometry
5
+\usepackage[parfill]{parskip}    % Activate to begin paragraphs with an empty line rather than an indent
6
+\usepackage{graphicx}
7
+\usepackage{amssymb}
8
+\usepackage{amsmath}
9
+\usepackage{epstopdf}
10
+\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png}
11
+\usepackage[utf8]{inputenc}
12
+\usepackage[ngerman]{babel}
13
+\usepackage{placeins}
14
+
15
+\title{\(\boldsymbol{8^3}\) LED Würfel}
16
+%\title{8x8x8 LED Würfel}
17
+\author{Felix Bäder, Thomas Buck, Max Nuding}
18
+\date{}                                           % Activate to display a given date or no date
19
+
20
+\begin{document}
21
+\maketitle
22
+
23
+% ###############################
24
+
25
+\section{Überblick}
26
+
27
+Ein LED Würfel aus 512 LEDs und mit einer Kantenlänge von 8 LEDs wird von einem AVR Prozessor gesteuert. Mittels einer PC-Software können Animationen für den Würfel erstellt und in dessen Speicher geladen werden.
28
+
29
+Alternativ können die Amplituden eines Audio Signals von einem weiteren Prozessor ausgewertet werden, um diese auf dem LED Würfel zu visualisieren.
30
+
31
+% ###############################
32
+
33
+\section{Hardware - AtMega32}
34
+\begin{figure}[hbp]
35
+	\begin{minipage}[t]{6cm}
36
+		\vspace{0pt}
37
+		\centering
38
+		\includegraphics[width=6cm]{cube.jpg}
39
+		\caption{LED Würfel}
40
+		\label{Cube}
41
+	\end{minipage}
42
+	\hfill
43
+	\begin{minipage}[t]{7cm}
44
+		\vspace{0pt}
45
+		Der LED Würfel wird vom AtMega32 mittels Charlieplexing angesteuert. Das heißt, dass jeweils eine Ebene des Würfels, bestehend aus 64 LEDs, angeschaltet ist. So werden alle 8 Ebenen schnell hintereinander angeschaltet, wodurch aufgrund der Trägheit des menschlichen Auges ein ständiges Bild entsteht. Dieser Aufwand ist nötig, um nicht 512 Anschlüsse des Prozessors zu belegen.
46
+	\end{minipage}
47
+\end{figure}
48
+
49
+Die Anoden der LEDs sind jeweils bei 8 LEDs einer Säule zusammengelegt, die Kathoden einer ganzen Ebene sind ebenfalls zusammengelegt. Die 64 Anoden werden von 8 8bit Latches angesteuert, die 8 Kathoden werden von N-Kanal Mosfets auf das Massepotential gelegt.
50
+\clearpage
51
+
52
+\begin{figure}[hbp]
53
+	\begin{minipage}[t]{7cm}
54
+		\vspace{0pt}
55
+		Der AtMega32 nimmt über den seriellen Port Kommandos und Animationen entgegen. Die Animationen werden in einem per I\textsuperscript{2}C-Bus angeschlossenen F-RAM gespeichert, der auch ohne Spannungsversorgung seine Daten hält. Ausserdem ist über den I\textsuperscript{2}C-Bus der AtMega8 für die Musiksteuerung angeschlossen.
56
+	\end{minipage}
57
+	\hfill
58
+	\begin{minipage}[t]{6cm}
59
+		\vspace{0pt}
60
+		\centering
61
+		\includegraphics[width=6cm]{platine1.jpg}
62
+		\caption{AtMega32}
63
+		\label{AtMega32}
64
+	\end{minipage}
65
+\end{figure}
66
+
67
+% ###############################
68
+
69
+\section{Hardware - AtMega8}
70
+\begin{figure}[hbp]
71
+	\begin{minipage}[t]{6cm}
72
+		\vspace{0pt}
73
+		\centering
74
+		\includegraphics[width=6cm]{platine2.jpg}
75
+		\caption{AtMega8}
76
+		\label{AtMega8}
77
+	\end{minipage}
78
+	\hfill
79
+	\begin{minipage}[t]{7cm}
80
+		\vspace{0pt}
81
+		Der AtMega8 agiert als I\textsuperscript{2}C Slave. Mithilfe eines MSGEQ7, ein \textit{Seven Band Graphic Equalizer}, erhält der AtMega8 die Amplitudenhöhe auf verschiedenen Frequenzbändern eines angeschlossen Audiosignals. Diese Informationen werden, wenn der AtMega32 dies verlangt, über den I\textsuperscript{2}C-Bus gesendet.
82
+	\end{minipage}
83
+\end{figure}
84
+\clearpage
85
+% ###############################
86
+
87
+\section{Software}
88
+Die PC-Software zur Erstellung und Übertragung von Animationen für den LED Würfel, genannt \textit{CubeControl}, ist in Java geschrieben. Die serielle Kommunikation wird von einigen C Routinen erledigt. Die Software ist mit Windows und Unixoiden Betriebssystemen kompatibel, Vorraussetzung ist eine Java Runtime Environment und Windows- oder Unix-kompatible Syscalls zur Kommunikation mit seriellen Ports.
89
+
90
+\begin{figure}[ht]
91
+	\centering
92
+	\includegraphics[width=16cm]{CubeControl.png}
93
+	\caption{CubeControl Screenshot}
94
+	\label{CubeControl}
95
+\end{figure}
96
+
97
+Eine drehbare, 3 dimensionale Darstellung des LED Würfels in der Software vereinfacht das Erstellen von Animationen.
98
+
99
+\end{document}  

BIN
Dokumentation/cube.jpg View File


BIN
Dokumentation/platine1.jpg View File


BIN
Dokumentation/platine2.jpg View File


+ 3
- 1
README.md View File

@@ -18,5 +18,7 @@ It's source is in the "Cube Control" directory.
18 18
 
19 19
 ## Build instructions
20 20
 
21
-Theres a global makefile in the top folder. If you run it, it will (probably) create CubeControl.jar, CubeFirmware.hex and a OS-dependent serial library (Serial.dll or libSerial.jnilib...). If not, you should take a look at the makefile in CubeControl. Hard-Coded include directorys are probably different than on your system... You obviously need a working JDK and a C Compiler Environment (we use gcc).
21
+There is a makefile in every source code directory. Running make inside CubeControl should produce a file called CubeControlMac.jar or CubeControlWin.jar. If not, you should take a look at the makefile. Hard-Coded include directorys are probably different than on your system... You obviously need a working JDK and a C Compiler Environment (we use gcc).
22 22
 CubeControls makefile will autodetect a Windows Host and compile a Windows Version accordingly. If it is not on Windows, it will compile a Mac Version. Unix is currently not supported by the makefile, but should work if compiled manually.
23
+
24
+The same goes for AudioFirmware and CubeFirmware. You need avr-gcc to compile these projects.

+ 0
- 34
makefile View File

@@ -1,34 +0,0 @@
1
-all: Control Firmware Audio
2
-
3
-Control:
4
-	make -C CubeControl
5
-	mv CubeControl/CubeControl.jar CubeControl.jar
6
-ifdef SystemRoot
7
-	mv CubeControl/Serial.dll Serial.dll
8
-else
9
-	mv CubeControl/libSerial.jnilib libSerial.jnilib
10
-endif
11
-	make -C CubeControl clean
12
-
13
-Audio:
14
-	make -C AudioFirmware
15
-	mv AudioFirmware/main.hex AudioFirmware.hex
16
-	make -C AudioFirmware clean
17
-
18
-Firmware:
19
-	make -C CubeFirmware
20
-	mv CubeFirmware/main.hex CubeFirmware.hex
21
-	make -C CubeFirmware clean
22
-
23
-clean:
24
-ifdef SystemRoot
25
-	del CubeControl.jar
26
-	del CubeFirmware.hex
27
-	del AudioFirmware.hex
28
-	del Serial.dll
29
-else
30
-	rm -f CubeControl.jar
31
-	rm -f CubeFirmware.hex
32
-	rm -f AudioFirmware.hex
33
-	rm -f libSerial.jnilib
34
-endif

Loading…
Cancel
Save