www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik mal wieder ein neuer


Autor: Gerhard G. (xjrler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guten abeend AVR gemeinde,

ich habe mich bisher noch nicht mit AVR´s beschäftigt wollte aber für 
meinen röhrenverstärker eine Anzeige für verschiedene betriebsdaten wie 
anodenströme, lautstärkeeinstellung mittels vcd display anzeigen.
zur ansteuerung dieser sollten sich diese dinger ja eigentlich perfekt 
eignen, wobei ich mir nach den ersten erfahrungen nicht mehr sicher bin 
ob ich mir das antun soll.
nun aber genung  da komme ich auch schon zu meinem problem.
ich habe mir bei der firma myavr ein lpt board mit atmega 8l gekauft und 
zusammangabaut.
zu beginn hatt ich kommunikationsprobleme welche durch biosumstellung 
der lpt schnittstelle  gelöst werden konnten.
danach habe ich win avr installiert bekomme aber keine kommunikation mit 
dem board zustande

beim win avr habe ich folgende einstellungen vorgenommen
- im make file den prozessor angepasst (atmega 8)
- im make file die lpt1 eingestellt (funktioniert mit myavr auch)
- das make file ist im selben verzeichniss wie das "neue" projekt 
kopiert
- den projektcode im winavr ins "programmers notepad" kopiert und mit 
make all versucht es in den avr zu bekommen
- eigentlich alle verschiedene einstellungen für das "board" ausprobiert 
(stk200, stk500.........................................)

die fehlermedlung im output fenster ist immer

> "make.exe" all

-------- begin --------
avr-gcc (GCC) 4.2.2 (WinAVR 20071221rc1)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is 
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.

make.exe: *** No rule to make target `main.elf', needed by `elf'.  Stop.

> Process Exit Code: 2
> Time Taken: 00:02

vielleicht hat jemand von euch eine idee

lgg

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Willkommen

> make all

Übersetzt nur den Quelltext und bereitet daraus die zu übertragende 
HEX-Datei vor.

> make.exe: *** No rule to make target `main.elf', needed by `elf'.  Stop.

Wie heisst deine Quelldatei. Sie muss wahrscheinlich unter main.c 
abgespeichert werden. Genaueres könnte man sagen, wenn man sich die 
Datei Makefile ansieht (das nächste Mal bitte anhängen).

Das eigentliche Programmieren kann man aus PN heraus mit

make program

machen. Allerdings muss das makefile davor an den verwendeten Programmer 
(z.B. sp12 auf dem myavr-lpt-1,52 Board) angepasst worden sein.

Wie diese Anpassung vorzunehmen ist, kann man bei myavr.de erfahren.

Grundsätzlich unterstützt myavr die Programmiersoftware AVRDUDE die im 
WinAVR Paket enthalten ist. Nur die genaue Kommandozeile ist halt 
anzupassen.

Ich schätze dieses PDF Seite 8 hilft weiter:
http://www.myavr.de/download/techb_myavr_board_lpt.pdf

Darin ist diese Beispielkommandozeile angegeben:
avrdude.exe -p Attiny12 -e -c sp12 -U:flash:w:"test.hex":i -P lpt1

Was welches Argument bedeutet, sieht man in der AVRDUDE Doku,

Autor: Gerhard G. (xjrler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
danke für die rasche hilfe - komme aber trotdem nicht weiter

ich möchte die myavr software nicht benutzen weil ich nur die demo 
version habe und nach einer halben stunde dauernd meldungen kommen daher 
dachte ich winavr wäre die beste alternative.

weil ich im i net gelesen habe das aktuelle winavr versionen tw nicht 
funktionieren habe ich version winavr 2006 01 25 installiert
bekomme dabei aber auch folgende fehler


> "make.exe" all

-------- begin --------
avr-gcc (GCC) 3.4.5
Copyright (C) 2004 Free Software Foundation, Inc.
Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es
gibt KEINE Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE 
ZWECKE.

g++    -c -o main.o main.cc
process_begin: CreateProcess((null), g++ -c -o main.o main.cc, ...) 
failed.
make (e=2): Das System kann die angegebene Datei nicht finden.

make.exe: *** [main.o] Error 2

> Process Exit Code: 2
> Time Taken: 00:01


ich habe folgendes patch file geschrieben
""avrdude.exe -p ATmega8 -e -c sp12 -C avrdude.conf -e -i -P lpt1""
um das zeug nicht immer eingeben zu müssen


die Datei avrdude.conf habe ich wie folgt angepasst.

programmer
#       id       = "sp12";          # <idN> are quoted strings
#       desc     = "Steve Bolt's Programmer";       # quoted string
#       type     = par;            # programmer type
#       baudrate = <num> ;                          # baudrate for 
avr910-programmer
#       vcc      = 4,5,6,7,8;          # pin number(s)
#       reset    = 3;                          # pin number
#       sck      = 2;                          # pin number
#       mosi     = 9;                          # pin number
#       miso     = 11;                          # pin number
#       errled   = <num> ;                          # pin number
#       rdyled   = <num> ;                          # pin number
#       pgmled   = <num> ;                          # pin number
#       vfyled   = <num> ;                          # pin number
#     ;
#

die projektdatei und das aktuelle make file habe ich im selben 
verzeichnis
der name des projektes ist main.cc


ist sicher ein bedienerfehler, aber vielleicht hat jemand weitere ideen

lgg

Autor: Gerhard G. (xjrler)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ich glaube nun der verweis auf die programmdatei gefunden zu haben, und 
habe im make file die dateieindung auf cc angepasst.

""# List C source files here. (C dependencies are automatically 
generated.)
SRC = $(TARGET).cc""


nun kommt nicht mehr die meldung "kann angegeben datei nicht finden" 
sondern

> "make.exe" all

-------- begin --------
avr-gcc (GCC) 3.4.5
Copyright (C) 2004 Free Software Foundation, Inc.
Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es
gibt KEINE Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE 
ZWECKE.


Linking: main.elf
avr-gcc -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL  -Os 
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=main.cc  -std=gnu99 -MD -MP -MF 
.dep/main.elf.d main.cc --output main.elf -Wl,-Map=main.map,--cref 
-lm
cc1plus.exe: Warnung: Kommandozeilenoption "-Wstrict-prototypes" ist 
gültig für C/ObjC, aber nicht für C++
cc1plus.exe: Warnung: Kommandozeilenoption "-std=gnu99" ist gültig für 
C/ObjC, aber nicht für C++
main.cc:1: Fehler: expected unqualified-id vor »+«-Zeichen
main.cc:2: Fehler: expected unqualified-id vor »|«-Zeichen
main.cc:2: Fehler: verirrtes »\252« im Programm
main.cc:3: Fehler: expected unqualified-id vor »+«-Zeichen
main.cc:4: Fehler: expected unqualified-id vor »|«-Zeichen
main.cc:4: Fehler: verirrtes »\246« im Programm
main.cc:5: Fehler: expected unqualified-id vor »|«-Zeichen
main.cc:6: Fehler: expected unqualified-id vor »|«-Zeichen
main.cc:7: Fehler: expected unqualified-id vor »+«-Zeichen
main.cc:8: Fehler: expected unqualified-id vor »|«-Zeichen
main.cc:9: Fehler: expected unqualified-id vor »|«-Zeichen
main.cc:10: Fehler: expected unqualified-id vor »|«-Zeichen
main.cc:11: Fehler: expected unqualified-id vor »|«-Zeichen
main.cc:11:13: zu viele Dezimalpunkte in Zahl
main.cc:12: Fehler: expected unqualified-id vor »|«-Zeichen
main.cc:13: Fehler: expected unqualified-id vor »|«-Zeichen
main.cc:13: Fehler: verirrtes »\228« im Programm
main.cc:14: Fehler: expected unqualified-id vor »+«-Zeichen
main.cc:16: Fehler: expected unqualified-id vor »--«-Zeichen
main.cc:17: Fehler: expected constructor, destructor, or type conversion 
vor »&&«-Zeichen
main.cc:17: Fehler: expected constructor, destructor, or type conversion 
vor ».«-Zeichen
main.cc:18: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:19: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:20: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:21: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:22: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:23: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:24: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:25: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:26: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:27: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:28: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:29: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:30: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:31: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:32: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:33: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:34: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:35: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:35: Fehler: verirrtes »\178« im Programm
main.cc:36: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:37: Fehler: expected unqualified-id vor »--«-Zeichen
main.cc:38: Fehler: expected constructor, destructor, or type conversion 
vor »,«-Zeichen
main.cc:38: Fehler: expected constructor, destructor, or type conversion 
vor "ON"
main.cc:42: Fehler: »Init« bezeichnet keinen Typ
main.cc:43: Fehler: »PORTD« bezeichnet keinen Typ
main.cc:45: Fehler: »alle« bezeichnet keinen Typ
main.cc:48: Fehler: expected unqualified-id vor numerischer Konstante
main.cc:49: Fehler: expected unqualified-id vor »--«-Zeichen
main.cc:51: Fehler: »wait« bezeichnet keinen Typ
main.cc:53: Fehler: »wait« bezeichnet keinen Typ
main.cc:55: Fehler: »Lauflicht« bezeichnet keinen Typ
main.cc:57: Fehler: expected unqualified-id vor »--«-Zeichen
main.cc:58: Fehler: expected constructor, destructor, or type conversion 
vor »-«-Zeichen
main.cc:59: Fehler: »Ausgabe« bezeichnet keinen Typ
main.cc:60: Fehler: verirrtes »\252« im Programm
main.cc:60: Fehler: »R« bezeichnet keinen Typ
main.cc:61: Fehler: expected unqualified-id vor »--«-Zeichen
make.exe: *** [main.elf] Error 1

> Process Exit Code: 2
> Time Taken: 00:03


das program ist im anahng

lgg

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich glaube nun der verweis auf die programmdatei gefunden zu haben, und
> habe im make file die dateieindung auf cc angepasst.

Also vom Regen in die Traufe... mach das wieder rückgängig.

.cc sind Quelldateien für die Sprache C++ und den Kompiler G++. Das 
willst du nicht haben, siehe die vielen Fehler bei den beiden neuen 
Kompilierversuchen.

Das Makefile sieht OK aus. Die Quelldatei wird dort in diesen beiden 
Zeilen definiert:

TARGET = main
SRC = $(TARGET).c

Somit ist main.c der korrekte Quelldateiname.

Mein Kompilierversuch mit deinen Dateien endet in einer langen 
Fehlerliste.
Der Grund ist klar: Es handelt sich überhaupt nicht um einen 
C-Quelltext. Dein main.c ist ein Assembler-Quelltext!

Teste mal diese main.c für dein Blinklicht:

#include <avr/io.h>

#define NOSIM 1

int main(void)
{
  unsigned char r16;
  unsigned char r17;
  unsigned char r18;

  //  ldi  r16,0b11111111  ;PORTD auf Ausgang
  //  out  DDRD,r16
  r16 = 0xFF;
  DDRD = r16;

  //   ldi  r16,0b00000000  ;alle Bits auf Low
  //   out  PORTD,r16
  r16 = 0;
  PORTD = r16;

  //  ldi  r17,0b00000000
  //  ldi  r18,0b00000001  ;1 Lauflicht-Bit
  r17 = 0;
  r18 = 1;

  // mainloop:
  //    wdr
  do
  {
    //  inc  r16  ;wait
    r16++;

    //  brne  skip
#if NOSIM
    if (!r16)
#else
    if (!(r16 % 2))
#endif
    {
      //  inc  r17  ;wait
      r17++;

      //  brne  skip
#if NOSIM
      if (!r17)
#else
      if (!(r17 % 2))
#endif
      {
        //  rcall  run  ;Lauflicht
        PORTD = r18;
        r18 = (r18 << 1) | ((r18 & 0x80) ? 1 : 0);
      }
    }
  // skip:
  //     rjmp  mainloop
  } while (1);
}



Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerhard, schonmal drueber nachgedacht C zu verwenden?

Autor: Dieter Bohlen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, willst du da ASM als C++ kompilieren?!

Autor: Gerhard G. (xjrler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Stefan - funktioniert

lgg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.