Fehler im Programm lauflicht.c

OP #1919467
Lesenswert?

Hallo,

ich habe gerade folgendes Programm in AVR Studio eingegeben:
1
/*
2
 * This program is free software: you can redistribute it and/or modify
3
 * it under the terms of the GNU General Public License as published by
4
 * the Free Software Foundation, either version 3 of the License, or
5
 * (at your option) any later version.
6
 *
7
 * This program is distributed in the hope that it will be useful,
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
 * GNU General Public License for more details.
11
 *
12
 * You should have received a copy of the GNU General Public License
13
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
14
 */ 
15

16
#include <avr/io.h>
17
#define F_CPU 1000000
18
#include <util/delay.h>
19

20
#define PORT_ROW PORTD
21
#define DDR_ROW  DDRD
22

23
#define PORT_COL1 PORTC
24
#define DDR_COL1  DDRC
25
#define PORT_COL2 PORTB
26
#define DDR_COL2  DDRB
27
#define PORT_COL3 PORTD
28
#define DDR_COL3  DDRD
29

30
//  ABCDEF...
31
//const uint8_t displayText[] = { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30, 200};
32

33
// VISIT WWW.STUDENT-IM-URLAUB.DE
34
//const uint8_t displayText[] = { 0,0,22,9,19,9,20,0,0,23,23,23,29,19,20,21,4,5,14,20,31,9,13,31,21,18,12,1,21,2,29,4,5,0,0, 200}; 
35

36
const uint8_t displayText[] = { 
37
  0,0,6,18,15,8,5, // FROHE
38
  0,23,5,9,8,14,1,3,8,20,5,14, // WEIHNACHTEN
39
  0,21,14,4, // UND
40
  0,7,21,20,5,14, // GUTEN
41
  0,18,21,20,19,3,8, // RUTSCH
42
  0,9,14,19, // INS
43
  0,14,5,21,5, // NEUE
44
  0,10,1,8,18, // JAHR
45
  0,200 }; // 200 markiert das Ende
46

47
const uint8_t charTable[] = {
48
  0, 0, 0, 0,     // Leerzeichen
49
  126,9,9,126,    // A
50
  127,73,73,54,   // B
51
  62,65,65,65,    // C
52
  127,65,65,62,   // D
53
  127,73,73,73,   // E
54
  127,9,9,1,      // F
55
  62,65,81,50,    // G
56
  127,8,8,127,    // H
57
  0,127,127,0,    // I
58
  49,65,65,63,    // J
59
  127,24,38,67,   // K
60
  127,64,64,64,   // L
61
  127,6,2,127,    // M
62
  127,14,48,127,  // N
63
  127,65,65,127,  // O
64
  127,9,9,6,      // P
65
  63,33,49,127,   // Q
66
  127,25,41,70,   // R
67
  70,73,73,49,    // S
68
  1,1,127,1,      // T
69
  63,64,64,63,    // U
70
  15,120,48,15,   // V
71
  127,32,48,127,  // W
72
  67,44,18,97,    // X
73
  71,72,72,63,    // Y
74
  97,89,69,67,    // Z
75
  0,111,111,0,    // !
76
  2,97,105,6,     // ?
77
  96,96,0,0,      // .
78
  64,32,0,0,      // ,
79
  12,12,12,12     // -
80
};
81

82
uint8_t currentColumn=0;
83
uint8_t columnBuffer[10];
84
uint8_t  charPosition=0;
85
uint8_t  stringPosition=0;
86

87
// Spalte aktivieren. colNr ist dabei die Spaltennr 0 bis 9
88
inline void setActiveCol(const uint8_t colNr)
89
{
90
  int8_t maskLo;
91
  int8_t maskHi;
92
  if (colNr < 10)
93
  {
94
    maskLo = (1 << colNr) & 255;
95
    maskHi = 0;
96
    if (colNr > 7)
97
      maskHi = (1 << (colNr-8)) & 255;
98
  }else{
99
  maskLo = 0;
100
  maskHi = 0;
101
  }
102

103
  PORT_COL1 = maskLo & 63;
104
  PORT_COL2 = ((maskLo >> 6) &3) | ((maskHi & 1) << 2);
105
  PORT_COL3 &= ~(1<<7);
106
  PORT_COL3 |= (maskHi & 2) << 6;
107
}
108

109
inline void initPorts()
110
{
111
  // LED-Port auf OUT
112
  DDR_ROW = 255;
113
  PORT_ROW = 0;
114

115
  DDR_COL1 = 255;
116
  DDR_COL2 = 255;
117
  DDR_COL3 = 255;
118

119
  PORT_COL1 = 255;
120
  PORT_COL2 = 255;
121
  PORT_COL3 |= (1<<7);
122

123
  
124
  // Puffer leeren, damit nicht zunächst
125
  // wirre Zeichen angezeigt werden.
126
  columnBuffer[0] = 0;
127
  columnBuffer[1] = 0;
128
  columnBuffer[2] = 0;
129
  columnBuffer[3] = 0;
130
  columnBuffer[4] = 0;
131
  columnBuffer[5] = 0;
132
  columnBuffer[6] = 0;
133
  columnBuffer[7] = 0;
134
  columnBuffer[8] = 0;
135
  columnBuffer[9] = 0;
136
}
137

138
int main()
139
{
140
  uint8_t n=0;
141

142
  initPorts();
143

144
  // Endlosschleife
145
  while (1)
146
  {
147
  // Die Bildaufbaugeschwindigkeit ist einfach faul
148
  // durch diesen Sleep für 1ms zwischen den Frames
149
  _delay_ms(1);
150

151
    setActiveCol(10);
152
  PORT_ROW &= ~127;
153
  PORT_ROW |= ~(columnBuffer[currentColumn]) & 127;
154
    setActiveCol(currentColumn);
155
    if (++currentColumn > 9)
156
    {
157
      currentColumn=0;
158
      if(++n>13) // Nach jedem 13. Bildaufbau wird das Bild selbst weitergeschoben
159
      {
160
    // Spaltenweise weiterkopieren  
161
      for(n=9; n>0; --n)
162
        columnBuffer[n] = columnBuffer[n-1];
163

164
        if (4 == charPosition) // Eine Spalte Zwischenraum zwischen den Buchstaben
165
        {
166
          columnBuffer[0] = 0;
167
        } else {
168
      // Bitmuster des entsprechenden Buchstabenteils einsetzen
169
          columnBuffer[0] = charTable[displayText[stringPosition]*4 +charPosition];
170
        }
171
      if (++charPosition > 4)
172
        {  // Es wurde ein ganzer Buchstabe angezeigt --> es folgt der nächste!
173
          charPosition=0;
174
          ++stringPosition;
175
          if (200 == displayText[stringPosition])
176
            stringPosition=0;
177
        }
178
        n=0;
179
      }
180
    }
181
  }
182
}

Leider kommt beim Compilieren ein Fehler.
Kann mir jemand den Fehler nennen?

Das Programm habe ich hierher:
http://www.student-im-urlaub.de/?p=244
#1919500
Lesenswert?

Ein genereller Tipp: (nicht böse gemeint)

Der Informationsgehalt deines Postings ist ungefähr:

'Mein Auto Marke VW ist kaputt. Sag mir wo der Fehler liegt ich verrate 
dir aber nicht mehr.'

z.B:

-was für einen AVR verwendest du?
-was für (einen) / welche Fehler gibt dir der Compiler zurück. 
(Zeilenangaben sind hier im Forum sinnlos)

Andreas Knaup schrieb:
> ich habe gerade folgendes Programm in AVR Studio eingegeben:

Ich hoffe du hast es reinkopiert xD =) =) =)
OP #1919507
Lesenswert?

Sorry, aber bin noch ein Frischling.
Hab es reinkopiert.
Hier die Ausgabe:
Build started 1.11.2010 at 11:37:06
avr-gcc  -mmcu=atmega8515 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT 
lauflicht2.o -MF dep/lauflicht2.o.d  -c  ../lauflicht2.c
avr-gcc -mmcu=atmega8515 -Wl,-Map=lauflicht2.map lauflicht2.o     -o 
lauflicht2.elf
c:/winavr-20100110/bin/../lib/gcc/avr/4.3.3/../../../../avr/lib/avr4/crt 
m8515.o:(.init9+0x0):  undefined reference to `main'
make: *** [lauflicht2.elf] Error 1
Build failed with 1 errors and 0 warnings...

nutze einen Atmega8515
#1919554
Lesenswert?

Was auffällt:  in der ersten Fehlermeldung ging's um Laufschrift.elf, im 
Mitschnitt der Kompilierung war's lauflicht2.elf, und das hier 
eingestellte Programm ist gem. Überschrift lauflicht.c, es müsste also 
lauflicht.elf heißen, somit wieder anders.

Welches Programm hast Du hier gezeigt und welches hast Du kompiliert?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren