www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehler am ATMEGA88 + LED --> Keine Funktion


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe einen ATMEGA88 mit VCC + GND versehen.
Dann habe ich die Programmer Pins angeschlossen.
das ganze läuft mit 3,3 volt.

nun eine LED von 3,3V über 300 Ohm an PB0.
LED Leuchtet jetzt schon.

das der Code dazu:


#include <avr/io.h>
#include <stdio.h>
#include <inttypes.h>
#ifndef F_CPU
#define F_CPU 8000000UL     /* Internal Quarz 8 Mhz*/
#endif
#include <util/delay.h>

int main()
{
  DDRB = 0b11111111; //Port B alle = Ausgang
while(1)
{
   _delay_ms (1000);
   PORTB |= (1<<PB0);
   _delay_ms (1000);
   PORTB &= ~(1<<PB0);
}
}

LED leuchtet aber immer noch dauernd. Kein blinken.
Warum die einfache Schaltung ?
Ich habe vorher mit den fuses in WINAVR gespielt.

BOOTSZ = 1024 adresse $0C00
Bootrst = off
RSTDISBL = off
DWEN = off
SPIEN = kleines Symbol
WDTON = off
EESAVE = off
BODLEVEL = disable
CKDIV8 = on
CKOUT = on
SUT_CKSEL = Intern 8Mhz

Programieren geht wunderbar. aber ich habe das gefühl der Code startet 
nicht. oder er schwinkt nicht.

ich habe schon mehere port pins probiert. alle das gleiche problem.

hat jemand eine idee
wie kann ich den MEGA88 wiederbeleben oder TESTEN ???

grüße
Sebastian
Stuttgart

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ckdiv8 aktiviert ist, hast du einen Takt von 8MHZ / 8.

Das würde bedeuten, dass dein Blinken 8 mal so lange dauert wie geplant.
Eventuell liegt es daran.

Gruß Skriptkiddy

Autor: reimann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.include "m88def.inc" vergessen?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian schrieb:

> nun eine LED von 3,3V über 300 Ohm an PB0.
> LED Leuchtet jetzt schon.

Das ist richtig. Deine LED ist active low angeschlossen. LOW am PB0 
lässt die LED leuchten. LOW am PB0 hast du unmittelbar nachdem du PB0 
(genauer -- alle Pins an PORTB -- warum?) per DDRB auf Ausgang gestellt 
hast.

> #define F_CPU 8000000UL     /* Internal Quarz 8 Mhz*/
> _delay_ms (1000);
> CKDIV8 = on

Wie lange wartest du auf das Blinken? Länger als 8s?

Ich denke dein Atmega8 läuft bei diesen Einstellungen (CKDIV8 = on) 
nicht mit 8 MHz sondern mit 1 MHz.

Entferne den F_CPU Teil aus dem Quellcode und setze F_CPU korrekt in AVR 
Studio bei den Projektoptionen oder im Makefile. Optimierung anschalten. 
Achte auf Fehlermeldungen und Warnungen beim Kompilieren.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur kurze Antwort vom iPhone:

Danke fuer die antworten. Die Led war länger als 1 Stunde an. Ich habe 
den Code mehrfach geändert. Warum ich das mit der LED gemacht habe war 
nur zum testen. Das eigentliche Projekt ging auch nicht. Deshalb jetzt 
ganz einfach mit LED.

Ich werde das dann gleich alles mal testen.

Und mich wieder melden.

Gruesse
Sebastian

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey DANKE !!!

also in WINAVR war noch ATMEGA128 eingestellt. Aber das war nicht der 
Fehler. Der Fehler lag in den Fuses:

CKDIV8 = on
CKOUT = on

ist falsch. Das CKDIV8 auf off und es geht noch immer nicht. aber dann 
das CKout = off und schon blinkt alles ...

super DANKE

was auch immer CKOUT ist ...

GRüße
Sebastian

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian schrieb:
> was auch immer CKOUT ist ...

Verrät einem ganz einfach das Datenblatt.

Hint:
In PDFs darf man nach CKOUT suchen lassen.


Peter

Autor: xurpcha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan B. schrieb:
> Entferne den F_CPU Teil aus dem Quellcode und setze F_CPU korrekt in AVR
> Studio bei den Projektoptionen oder im Makefile. Optimierung anschalten.
> Achte auf Fehlermeldungen und Warnungen beim Kompilieren.

Das ist ein sehr blöder Ratschag, F_CPU sollte schon da stehen.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt keine Notwendigkeit, dass F_CPU an dieser Stelle in dieser Weise 
definiert wird. Die zur Definition von F_CPU vorgesehenen Stellen sind 
ausreichend, gut dokumentiert und allgemeiner Usus.

Es gibt mehr Nachteile als Vorteile, wenn man F_CPU nicht an den 
vorgesehenen Stellen und vor allem auf diese Weise definiert.

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.