www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik io.h falsch?


Autor: mil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen

ich bin gerade an den ersten schritten mit avr studio 4 und gcc.
als beispiel möchte ich folgenden code testen :

#include <avr/io.h>
#include <util/delay.h>


int main(void)
{

  /* Setzt das Richtungsregister des Ports A auf 0xff
       (alle Pins als Ausgang): */
  DDRA = 0xff;

  /* Setzt PortA auf 0x00, alle "low": */
    PORTA = 0x00;

  while (1)
  {

  PORTA |= (1 << 2);    /* setzt Bit 2 an PortA */
  _delay_ms(1000);
  PORTA &= ~(1 << 2);   /* loescht Bit 2 an PortA */
  _delay_ms(1000);
  }
}


allerdings erhalte ich immer build-errors :

../test-gcc.c:10: error: `DDRA' undeclared (first use in this
function)
../test-gcc.c:10: error: (Each undeclared identifier is reported only
once
../test-gcc.c:10: error: for each function it appears in.)
../test-gcc.c:13: error: `PORTA' undeclared (first use in this
function)


laut avr-gcc-tutorial ist die io.h einzubinden, da darin DDRA definiert
werde. das ist aber nicht der fall.. ? mit der iom48.h geht es auch
nicht...
kann mir jemand weiter helfen. vielen dank

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Evtl hat der µC kein DDRA, PORTA bzw PINA??

kommen sonnst noch warnings?

Autor: mil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups, vergessen : habe einen atmega48 definiert

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LOL
eine frage, wie kommst du auf PORTA??

Hast du eine Funkverbindung zum PORTA des M48??

Autor: mil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, genau das wars !

mit DDRD und PORTD geht es natürlich..

vielen dank

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine frage, funktioniert dein kopf???
Wie kommst du eigendlich auf PORTA?

Autor: Jojo S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und das nächste Problem wird vermutlich das '_delay_ms(1000);' So eine
lange Zeit kriegst du nur bei sehr langsamen Takt hin. Die maximale Zeit
ist abhänging vom CPU Takt weil nur einfache Warteschleife geflogen
wird, gucke mal in die Doku oder das Headerfile, da steht die Formel
für die Berechnung drin.

Autor: mil (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter : kopf funktioniert, wieso?
porta habe ich aus dem avr-gcc-tutorial...

johannes: danke für den hinweis.
The maximal possible delay is 262.14 ms / F_CPU in MHz.

heisst das 262ms / 10 bei 10 Mhz?

wie wird ein einsekunden delay realisiert generell? mit verschachtelten
schleifen?

danke

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> heisst das 262ms / 10 bei 10 Mhz?
Genau, also 26,212 ms max.

> wie wird ein einsekunden delay realisiert...
Einsekunden-Delays macht man einfach nicht! Wenn Du wirklich ne Sekunde
warten musst, dann aktivier nen Timer, schick den µC schlafen und lass
ihn von nem Timer-Interrupt wieder aufwecken. Wenn Du es aber UNBEDINGT
mit Zeitschleifen willst, kannste die natürlich beliebig
verschachteln...

Autor: Jojo S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
um für den ersten Versuch eine LED im Sekundentakt blinken zu sehen ist
eine einfache Zeitschleife aber ok, das mit Interrupts zu erledigen
wäre vielleicht Übung Nr.2. Also einfach z.B. 50x20ms warten.

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.