mikrocontroller.net

Forum: Compiler & IDEs Atmel Studio 7.0 einbinden von avr/io.h klappt nicht


Autor: Kennis Bröker (kennis_b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an Alle :)

ich benutze Windows 10 und einen Atmega8 16-PU mit einem ISP Programmer 
der als STK500 Programmer erkannt wird. Die Übertragung funktioniert 
soweit auch.

ich habe "normal" die Bib avr/io.h eingebunden (code folgt) zudem habe 
ich delay.h eingebunden. wenn ich auf delay.h klicke zeigt er mir oben 
in der Leiste den ganzen Pfad an, bei io.h tut er es nicht, zudem kann 
ich mit "goto Implementation" nicht zu der Bib kommen.
ich denke das sie so in Wirklichkeit garnicht eingebunden ist und habe 
dann immer avr/iom8.h extra nochmal eingebunden.

(habe geprüfugt ob die datein alle existieren und das tun sie)

habe nun gesehen das in der VA View neben io.h (unresolved) steht
nach etwas suche habe ich dieses hier gefunden:

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Mor Shuk wrote on Fri, 13 April 2012 01:50

is there any chance you could give me a more detailed intruction on how 
to do this?! cause im trying and jut cant get it done...(working eclipse 
on ubuntu 11.10)

- Open Project Properties->C/C++ Build->Environment
- click Select.. and choose LANG
- use empty value for LANG
- repeat above step for LANGUAGE
- repeat above step for LC_ALL but use the value en_GB.UTF-8

Rebuild project and index
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

ich verstehe aber nicht wirklich was ich tun soll? es scheint ja die 
sprache irgendwie falsch eingstellt zu sein... meinen die einen ordner 
im explorer oder ist das im atmel studio zu ändern? jemand schon 
erfahrung hiermit gemacht ?

(ich bin etechnik student im 2ten Semester wir haben leider 
Mikrokontroller noch nicht behandelt :D )
Vielen Dank und Liebe Grüße

: Verschoben durch Moderator
Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du denn einen Prozessor ausgewählt?

io.h verzweigt auf die verschieden Prozessoren, dafür muss er aber 
bekannt sein.

Autor: Kennis Bröker (kennis_b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim Start des Projektes habe ich Atmega8 ausgewählt.
kann man denn irgendwie prüfen ob das richtig geklappt hat?

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennis B. schrieb:
> Beim Start des Projektes habe ich Atmega8 ausgewählt.
> kann man denn irgendwie prüfen ob das richtig geklappt hat?

schreibe doch einfach mal eine kleine Blink-Programm.

Autor: Kennis Bröker (kennis_b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich hatte folgendes Programm geschrieben das so auch funktionierte:

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
/*
 * Test1.c
 *
 * Created: 22.08.2016 21:54:36
 * Author : kennis
 */
#define F_CPU 1000000UL
#include <avr/io.h>
//#include <C:/Program Files 
(x86)/Atmel/Studio/7.0/toolchain/avr8/avr8-gnu-toolchain/avr/include/avr 
/io.h>
#include <stdint.h>  // Standard Datentypen einbinden
#include <kennis.h>  // funktion Siebensegment
#include <util/delay.h>
#include <avr/interrupt.h>

uint8_t isa;
uint8_t zeitzaehler = 0;
uint8_t zeitzaehler2 = 0;

int main(void)
{

  DDRD = (1 << DDD0) | (1 << DDD1) | (1 << DDD2) | (1 << DDD3) | (1 << 
DDD4) | (1 << DDD5) | (1 << DDD6) | (1 << DDD7);



  PORTC = (1 << DDC6) | (1 << DDC5) | (1 << DDC4) | (1 << DDC3) | (1 << 
DDC2);
        // Alle Eingänge am PortC mit PullUp Widerstand schalten


  TCCR0 = (1<<CS02);

  // Overflow Interrupt erlauben
  TIMSK |= (1<<TOIE0);

  // Global Interrupts aktivieren
  sei();


    /* Replace with your application code */
    while (1)
    {
    if (zeitzaehler>10)
    {
      zeitzaehler2++;
      zeitzaehler = 0;
    }
    if(zeitzaehler2>9) zeitzaehler2=0;
    isa = zeitzaehler2;
    PORTD = siebensegment(isa);

  }



  }

  ISR (TIMER0_OVF_vect)
  {
    zeitzaehler++;

  }
 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Hier hatte ich nun delay.h nicht benutzt. delay.h funktionierte nämlich 
leider nicht. ich habe da den Zusammenhang zu der fehlenden 
Initialisierung von io.h gezogen

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennis B. schrieb:
> Hier hatte ich nun delay.h nicht benutzt. delay.h funktionierte nämlich
> leider nicht.

und was funktioniert da nicht?

Autor: Kennis Bröker (kennis_b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die funktion _delay_ms hat nichts gemacht das programm ist da einfach 
gestoppt und ging nicht weiter... obwohl die F_CPU definiert war.

ist es denn normal das er bei io.h den Pfad nicht anzeigt?

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennis B. schrieb:
> die funktion _delay_ms hat nichts gemacht das programm ist da einfach
> gestoppt und ging nicht weiter... obwohl die F_CPU definiert war.
merkwürdig, gab es eine Warnung beim build?

> ist es denn normal das er bei io.h den Pfad nicht anzeigt?
keine Ahnung, hat mich noch nie interessiert. Sollte aber keine Rolle 
spielen, weil das nur das Studio betrifft.

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennis B. schrieb:
> die funktion _delay_ms hat nichts gemacht das programm ist da einfach
> gestoppt und ging nicht weiter... obwohl die F_CPU definiert war.

Nachtrag:

Hast du wirklich lange genug gewartet? Die Simulation ist nicht in 
Echtzeit. Und wenn du keine Optimierung aktiviert hast dauert es noch 
länger.

Autor: Kennis Bröker (kennis_b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
leider gab es weder eine Fehler noch eine Warn meldung

Nachtrag:
habe nun mal folgenden code getestet:

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
/*
 * 16bit timer.c
 *
 * Created: 19.09.2016 12:34:36
 * Author : kennis
 */

#define F_CPU 1000000UL
#include <avr/io.h>
#include <kennis.h>  // funktion Siebensegment
#include <util/delay.h>

int main(void)
{

DDRD = (1 << DDD0) | (1 << DDD1) | (1 << DDD2) | (1 << DDD3) |  (1 << 
DDD4) | (1 << DDD5) | (1 << DDD6) | (1 << DDD7);



PORTC = (1 << DDC6) | (1 << DDC5) | (1 << DDC4) | (1 << DDC3) | (1 << 
DDC2);
        // Alle Eingänge am PortC mit PullUp   Widerstand schalten

  while(1)
  {
    PORTD = 0xff;
    _delay_ms(1000);
    PORTD = 0x00;
  }

}


<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

das müsste doch funktionieren oder nicht?

Nachtrag Nachtrag: alle Leds gehen an und nicht wieder aus am Port D

: Bearbeitet durch User
Autor: Arduinoquäler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennis B. schrieb:
> das müsste doch funktionieren oder nicht?

Versuch es doch mal so:
  while(1)
  {
    PORTD = 0xff;
    _delay_ms(1000);
    PORTD = 0x00;
    _delay_ms(1000);
  }

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kennis B. schrieb:
> while(1)
>   {
>     PORTD = 0xff;
>     _delay_ms(1000);
>     PORTD = 0x00;
>   }

dann überlege mal was Genau passiert, oder kannst du µ-Sekunden mit dem 
Auge sehen?

Autor: Kennis Bröker (kennis_b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh Gott peinlich:D das funktioniert nun, tut mir leid :D

ich finde es immer noch komisch das er mir den Pfad nicht anzeigt aber 
solange es funktioniert ist ja alles gut.
vielen Dank für eure schnelle Hilfe :)

(hatte in C programmierung nur ne 2,7 :D )

: Bearbeitet durch User

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.