Fehler am ATMEGA88 + LED --> Keine Funktion

Gast #1982001
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
Persönliche Seite #1982018
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.
Gast #1982043
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
Gast #1982220
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

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