Forum: Mikrocontroller und Digitale Elektronik hello world funktioniert nicht einmal


von M. S. (ekkie)


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

von M. S. (ekkie)


Lesenswert?

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

steht auch noch davor..

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Falscher Takt eingestellt?  Wenn du davon ausgehst, dein Controller
würde mit 8 MHz laufen, aber er läuft (wegen voreingestellter
CKDIV8-Fuse) nur mit 1 MHz, dann musst du da schon eine ganze Weile
warten, bis es das erste Mal blinkt …

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

ps: AVCC und/oder AGND nicht ordentlich angeschlossen?  Port C wird
von AVCC gespeist, da er die Eingänge des ADC beinhaltet.

von Karl M. (Gast)


Lesenswert?

Ohne flashen keine Programm.
Was liefert avrdude für eine Meldung?

Aber wie sieht die Schaltung aus?
Wie sehen keinen Schaltplan.

von M. S. (ekkie)


Lesenswert?

Wie stelle ich denn den Takt von 1MHz ein?


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?

von A. S. (Gast)


Lesenswert?

Reset-Signal OK? Oszillator schwingt? Falscher Pin?(ggf mehrere dauernd 
togglen, ohne delay)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von M. S. (ekkie)


Lesenswert?

danke schon mal für die Infos,

ich habe jetzt noch vorab
1
#define F_CPU 1000000
gesetzt und das delay_ms mit _delay_ms ausgetauscht.

leider funktioniert es immer noch nicht.

die LED leuchtet einfach nur, blinken tut da gar nichts.

von A. S. (Gast)


Lesenswert?

Meik S. schrieb:
> und das delay_ms mit _delay_ms ausgetauscht.

Ähm, was meldet denn der Compiler? Und der linker?

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Ist da nicht irgendwelches JTAG oder so Geruempel am Port C?
Mir ist als haett' ich da irgendwas im Hinterkopf...

Gruss
WK

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dergute W. schrieb:
> Ist da nicht irgendwelches JTAG oder so Geruempel am Port C?

Hat der ATmega328 nicht.

von Stefanus F. (Gast)


Lesenswert?

Zeige deinen Schaltplan.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

… und schreibe endlich mal paar Worte zu der Umgebung, mit der du
arbeitest.  Ich vermute ja mal, dass es nicht "vi", "make" und die
Kommandozeile sind, sondern irgendwas vorgefertigtes.

Außerdem wurdest du schon mehrmals aufgefordert, alle Meldungen der
beteiligten Programme (Compiler, AVRDUDE) zu zeigen.

von M. S. (ekkie)


Lesenswert?

mit BASCOM funktionierts. muss also irgendwas beim Programmieren oder 
Bei den Einstellungen sein

von M. S. (ekkie)


Lesenswert?

ich hab vergessen "Build Solution" anzuwählen.

..war ne harte Woche, sorry.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Meik S. schrieb:
> ich hab vergessen "Build Solution" anzuwählen.

;-)

OK.  Das nächste Mal trotzdem paar Worte mehr schreiben, dann stochern
wir nicht so viel im Nebel.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.