PORTC^=(1<<PC5); /* PortD5 wird getoggled */
So sollte diese Zeile aussehen, sonst wird nicht getoggled.
IN den Fuses JTAG löschen.
Druckbare Version
PORTC^=(1<<PC5); /* PortD5 wird getoggled */
So sollte diese Zeile aussehen, sonst wird nicht getoggled.
IN den Fuses JTAG löschen.
JTAG ist schon deaktiviert. Ich habe die Zeile in der getoggled wird jetzt von dir übernommen aber es leuchtet immer noch keine LED auf.
Ich habe das Programm von dir noch mal in mein Testboard geladen, die LED blinkt.
Da musst du noch einen anderen Wurm drinnen haben.
Mit oder ohne deiner Verbesserung?
ICh habe nur diese Zeile ausgetauscht:
PORTC^=(1<<PC5);
Ich habe also im Programm keine Fehler, denn ich habe ja den selben Code wie du in den M32 geladen. (Die Zeile ist auch genau wie bei dir ausgetauscht.) Benutzt du vieleicht keinen Quarz oder einen Quarz ungleich 16MHz? Könntest du evt. zur absuluten Sicherheit den C-Code posten den du compiliert hast?
PS: Meine LED funktioniert.
Hier die *.hex wie sie bei mir funktioniert.
Komisch, das hat jetzt geklappt. Die Hex-Datei bringt mir aber nicht viel. könntest du bitte den C-Code posten?
Nicht nur dieser, auch anderen Formulierungen stehe ich misstrauisch gegenüber, seit mir vor vielen Jahren aufgefallen war, dass die meisten Unfall- oder Katastrophenberichte etwa so beginnen: "Nach Meinung aller kompetenten Fachleute war ... alles richtig ...". Es wird allgemein anerkannt, dass die Abwesenheit von Fehlern, also die gesicherte Fehlerfreiheit, garnicht beweisbar ist. Dazu müsste der Tester nämlich 1. alle möglichen Fehler kennen und 2. deren Abwesenheit unter allen möglichen (nicht nur denkbaren) Bedingungen zweifelsfrei beweisen. Dies gilt insbesondere bei der Softwareentwicklung, siehe zum Beispiel hier, dritter Satz.Zitat:
Zitat von Mc Delta
Ja und genau deswegen bat ich um eine absulute Sicherheit, die mir der C-Code von Hubert garantieren soll.
In diesem Code ist gegenüber deinem nur diese eine Zeile geändert.Code:#ifndef MCU
#define MCU atmega32
#endif
#ifndef F_CPU
#define F_CPU 16000000UL
#endif
#include <avr/io.h>
#include <avr/interrupt.h>
volatile unsigned char time;
ISR(TIMER1_COMPA_vect){ /* ISR Timer1 Output Compare Match */
time++; /* Variable wird um 1 erhöht */
}
int main(void){
DDRC=0b11111111; /* Gesamtes PortD ist Ausgang */
OCR1A=625; /* Compare Match Wert, ergibt mit Prescaler einen 10msec Takt */
TIMSK=(1<<OCIE1A); /* Compare Match freigeben */
TCCR1B= (1<<WGM12)|(1<<CS12); /* Compare Match, Prescaler /256 */
sei();
while(1)
{
if (time>=100)
{ /* Takt mal 100 ergibt 1sec */
PORTC^=(1<<PC5); /* PortD5 wird getoggled */
time=0; /* time auf 0 stellen */
}
}
}
Wenn es wieder nicht klappt, dann schick mir mal dein *.hex File zum vergleichen.
Hat nicht geklappt. Ich compiliere mit AVR-Studio.
Dein *.hex funktioniert nicht. Es ist aber schon ein Unterschied in der Größe, meines hat 594 Byte deines hat 819 Byte.
Sind alle Einstellungen im AVR-Studio richtig, was für eine GCC-Version, richtiger Kontroller eingestellt.
Version 4.18!
In dem "Build-Bericht" steht allerdings was von Mega128. Wie kann ich das ändern?
Das hat mir nicht weitergeholfen, aber ich habe es trotzdem geschafft. Ich habe als Device den M32 ausgewählt und das Programm compiliert. Erfolgreich. Die LED blinkt.