- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Absolut Anfänger

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    02.03.2005
    Beiträge
    70

    Absolut Anfänger

    Anzeige

    Praxistest und DIY Projekte
    Hallo, wie sehr sehr viele meiner Vorgänger bin ich absolut ein Anfänger in Sachen Mikrocontroller. Ich habe ein STK500 Testboard mit einem ATMEGA163L.

    So nun zu meinem Problem oder Problemen(;:

    Ich habe mir WINAVR besorgt, da ich den Controller in C programmieren möchte. Mit dem Programmers Notepad (PN) habe ich ein klitzekleines Programm geschrieben, welches die LEDs an Port b ansteuern soll. Und zwar sollen sie so Leuchten 10101010 das entspricht ja 0xaa.

    Das Prog lautet
    #include <avr/io.h>
    int main(void){
    DDRB = 0xff;
    while(1){
    PORTB = 0xaa;
    }
    }

    Über den PN habe ich das als diode.c abgespeichert. In MFile habe ich folgende Einstellungen:
    Main file name --> diode
    MCU type --> atmega163
    Output format --> ihex
    Optimization Level--> s
    Debug format --> ELF/DWARF-2(AVR Studio ELF, GDB[experimental])
    C standard level --> gnu99
    C/C++ Source File --> diode.c
    Assembler... --> none
    printf() options --> none
    scanf() options --> none
    Programmer --> STK500
    Port ---> COM1

    Wie kann ich jetzt eine hex-File erstellen? Ich speichere das makefile in das gleiche Verzeichnis wie diode.c. Wenn ich dann übers PN make all aufrufe bekomme ich die Meldung:

    >"make.exe" all
    ----begin----
    avr-gcc (GCC) 3.4.3
    Copyright blablabla

    make.exe:***No rule to make target 'diode.o' needed by 'diode.elf'. Stop.
    > Process Exit Code:2

    Ich denke mal ich mache irgendas grundsätzliches falsch. Kann mir einer (oder mehrere) mal sagen was ich falsch mache?
    Funktioniert "mein" Programm eigentlich so?


    2. Problem
    Ich habe auch Ponyprog2000.
    Wenn ich damit den EEPROM auslesen möchte bekomme ich die Meldung:
    "Device missing or unknowing device (-24)
    Eingestellt habe ich unter Setup-->interface setup-->Serial SIProg API Com1
    Unter Device ist der mega163 angekreuzt.
    Welche Einstellungen benötige ich noch um das STK500 anzusteuern. Ich finde keine Einstellungen für STK500 bei Ponyprog.

    Vielen Dank schon mal

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    44
    Beiträge
    464
    zu 2.
    Probiers mal mit SI Prog I/O

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    02.03.2005
    Beiträge
    70
    Danke schonmal

    Hatte ich schon Probiert. Funktioniert auch nicht. Was für Einstellungen muss man bei "Select Polarity of the control lines" tätigen?

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    15.03.2005
    Beiträge
    7
    Hallo


    Wenn Du nur die Datei diode.c verwendest, sollte im Makefile unter "C/C++ Source File" kein Eintrag vorhanden sein, da dort nur zusätzliche Dateien aufgeführt werden (Damit sollte das Problem schon gelöst sein)

    Noch ein paar Anmerkungen:
    Dein Programm sollte funktionieren. Jedoch würde ich sicherheitshalber statt "int main..." lieber "void main..." verwenden

    Den Optimierungslevel solltest Du abschalten (0). Da es als Neuling schon mal vorkommt, einfach mal diversen Code zu probieren (auch wenn er wenig Sinn macht) kann der Compiler diesen möglicherweise "wegoptimieren" (Ist mir schon passiert) .

    Gruß

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    02.03.2005
    Beiträge
    70
    Hallo,
    Hab ich gemacht, aber bekomme immer noch die gleiche Meldung
    "No rule to make target 'diode.o', needed by 'diode.elf' Stop."

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    15.03.2005
    Beiträge
    7
    OK,

    Offensichtlich ist das Problem "problematischer" als ich dachte.
    Hier noch ein paar Ideen:

    Im Makefile solltest Du unter "Default make Target" standard oder AVR Extended COFF eintragen

    Überprüf mal Deine PATH-Einstellung im Betriebssystem: Es sollten die Einträge für die Pfade "WinAVR/bin" sowie "WinAVR/utils/bin" vorhanden sein

    Falls das noch nicht hilft, solltest Du mal dein Makefile schicken (Welche Version von WinAVR verwendest Du ?

    Gruß

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    02.03.2005
    Beiträge
    70
    @d.wilken

    Version des Notepads ist 2.0.5.48, Version des Makefiles ist 1.41 vom 15.7.2004.
    Alle Compiler sind in den Verzeichnissen vorhanden. Ich benutze im übrigen Win XP, falls das damit was zu tun hat.

    Ich versuche mal mein Makefile als Attachment hinzuzufügen.
    Angehängte Dateien Angehängte Dateien

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    15.03.2005
    Beiträge
    7
    Ich kann das Problem leider nicht nachstellen, da meine Version etwas älter ist. Aber ich hätte noch folgende Ideen zum Probieren (falls Du noch nicht aufgegeben hast):

    Im Auswahlfeld "C/C++ source file(s)" solltest Du mal den Haken bei "Include diode.c" umswitschen

    Deine Hauptdatei solltest Du main.c nennen

    Ansonsten habe ich leider keine weiteren Ideen
    Gruß

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    02.03.2005
    Beiträge
    70
    Danke schon mal.
    Jetzt hat sich was geändert. Es kommt folgende Meldung:

    > "make.exe" all

    -------- begin --------
    avr-gcc (GCC) 3.4.3
    Copyright (C) 2004 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.


    Linking: main.c.elf
    avr-gcc -mmcu=atmega163 -I. -gstabs -DF_CPU=8000000UL -O0 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns= -std=gnu99 -MD -MP -MF .dep/main.c.elf.d --output main.c.elf -Wl,-Map=main.c.map,--cref -lm
    E:/winavr/bin/../lib/gcc/avr/3.4.3/../../../../avr/lib/avr5/crtm163.o(.init9+0x0): undefined reference to `main'
    make.exe: *** [main.c.elf] Error 1

    > Process Exit Code: 2

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    15.03.2005
    Beiträge
    7
    Prima !
    Dann ist das Problem ja schon so gut wie behoben !

    Ich habe mal ein bischen rumprobiert (ist ja oft die effektivste Art Probleme zu lösen).

    Ich konnte den Fehler nachstellen. Behoben wurde er durch das Setzen des Häkchens "include main.c" ("Bei Auswahl C/C++ Source file(s)" )

    Wenn Dein Projekt nur aus der Datei "main.c" besteht, wird diese durch den Haken bekannt gemacht (Und wie gesagt: kein Eintrag in der Liste der Source-Files).

    In Deinem Makefile sollte dann in etwa folgendes stehen:
    # Target file name (without extension).
    TARGET = main

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


    PS: Zum Thema "void statt int" : War kein guter Vorschlag meinerseits. Gibt Warnung "return type of 'main' is not `int' " Also doch besser int statt void

    Ich hoffe, ich konnte helfen
    Gruß

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress