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
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
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.
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
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
Sebastian schrieb: > was auch immer CKOUT ist ... Verrät einem ganz einfach das Datenblatt. Hint: In PDFs darf man nach CKOUT suchen lassen. Peter
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.