hello world funktioniert nicht einmal

OP #5516665
Lesenswert?

Hallo

habe ein atmega328p angeschlossen und folgendes Programm geschrieben.
1
#include <util/delay.h>
2
#include <avr/io.h>
3

4
int main (void) {
5

6
    DDRC  = 0xff;
7

8
  while(1) {
9
      PORTC |= (1<<PC1);    
10
      delay_ms(500);       
11
      PORTC &= ~(1<<PC1);  
12
      delay_ms(500);       
13
  }
14
    return 0;
15
}

versuche es auf meinen µc zu flashen funktioniert aber nicht. avrdude 
erkennt den Kontroller und atmel flashed ihn auch, allerdings blinkt in 
meiner schlatung keine LED. Die LED funktioniert an sich auch.

Erkennt jemand meinen Fehler?

Meik
Moderator Persönliche Seite #5516697
Lesenswert?

Meik S. schrieb:
> Wie stelle ich denn den Takt von 1MHz ein?

Den Takt stellst du im Controller ein, aber der steht halt initial
auf 1 MHz.

Der wird den Delay-Funktionen über den Makro F_CPU kund getan.  Da
du diesen Makro nicht in deinem Quelltext stehen hast, musst du ihn
dem Programm auf andere Weise mitgegeben haben – wie genau, das können
wir nicht wissen, denn wir haben die Umgebung nicht, mit der du das
alles gemacht hast.

> und generell kann mir jemand sagen wo ich alle Befehle und Funktionen
> für C finde, die ich in Atmel nutzen kann, wo man sowas mach nachschauen
> könnte?

Das avr-libc-Manual wäre die erste Anlaufstelle.

C sollte man aber natürlich erst einmal grundlegend können, dort sind
nur die AVR-Besonderheiten dann dokumentiert.

Ähem, du schreibst "delay_ms".  Dann musst du noch etwas als Umgebung
haben, was du uns nicht genannt hast.  Die entsprechende Funktion der
avr-libc heißt _delay_ms.

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