Welche Quarzfrequenz?
Welches Programm?
Schon mal Fuses gecheckt / jemals eingestellt (z.B. mit Ponyprog) ?? Daran liegts höchstwahrscheinlich. Um rauszufinden, wie du die Fuses setzen musst, such mal in google nach "avr fuse calculator"
Hallo,
habe mir ein kleines Testboard für einen Mega32 gebaut. Und nun habe ich dass Problem, dass es wohl so aussieht als das der Takt nicht hinkommt. Ich stelle 100ms ein und die LED blinkt alle 1-2 Minuten. Also sie bleibt um die 2 Minuten aus und geht dann 2 Minuten an. Kann es am Quarz liegen oder wie kann ich dies ausschließen oder was sind andere Fehlerquellen?
Welche Quarzfrequenz?
Welches Programm?
Schon mal Fuses gecheckt / jemals eingestellt (z.B. mit Ponyprog) ?? Daran liegts höchstwahrscheinlich. Um rauszufinden, wie du die Fuses setzen musst, such mal in google nach "avr fuse calculator"
Quarzfrequenz ist 16Mhz.
Haben ihn sowohl mit Bascom als auch mit C beschrieben beide male gleiches Ergebnis.
Fusebit KLA 987 steht auf 001111 Ext. Crystal/Resonator High Freq.
Andere Fusebits habe ich nicht umgestellt.
Zeig doch mal, wie du die "100ms eingestellt" hast.
BASCOM
CCode:$regfile = "m32def.dat" $crystal = 16000000 Config Porta = Output Config Portc = Output Do Portc = &B00000000 Porta = &B00000001 Waitms 100 Porta = &B00000010 Waitms 100 Porta = &B00000100 Waitms 100 Porta = &B00001000 Waitms 100 Porta = &B00010000 Waitms 100 Porta = &B00100000 Waitms 100 Porta = &B01000000 Waitms 100 Porta = &B10000000 Waitms 100 Porta = &B00000000 Portc = &B10000000 Waitms 100 Loop
Sollte eigentlich stimmen. Also noch jemand ne idee?Code:#include <avr/io.h> // (1) #ifndef F_CPU #warning "F_CPU war noch nicht definiert, wird nun mit 16000000 definiert" # define F_CPU 16000000UL #endif #include <util/delay.h> int main (void) { // (2) DDRB = 0x00; //PORTB = 0xff; DDRA = 0xff; // (3) //PORTA = 0xff; // (4) PORTA = 0x00; //PORTA = (1 << PA7); while(1) { // (5a) /* "leere" Schleife*/ // (5b) PORTA |= (1<<PA0) | (1<<PA7); _delay_ms(100); PORTA = 0x00; _delay_ms(100); } // (5c) /* wird nie erreicht */ return 0; // (6) }
Hallo
Der Defaulttakt des Mega32 ist intern 1MHz (Datenblatt Seite 25, "Default Clock Source") Schreibt doch mal was mit blinkenden Leds im Sekundentakt und 1MHz Kontrollertakt. Dann siehst du gleich ob die Fuses stimmen.
Das wäre dann aber nur Faktor 16 und kein Effekt wie du ihn beschreibst. Schwingt dein Quarz überhaupt? Wenn dein Mega32 mit internem Takt normal läuft stimmt etwas mit dem Quarz oder seinen Kondensatoren nicht. Da kenne ich mich aber nicht aus...
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Habe jetzt mal im C-Programm auf 1Mhz umgeschaltet aber ist weiterhin unregelmäßig. Wenn ich aber nun auf Intern 1 Mhz umschalte dann ist es richtig. Aber ich möchte ja meinen externen 16Mhz nutzen.
Bei dem C Programm muß man mit Optimierung übersetzen, ohne stimen die Zeiten aus Delay nicht - man sollte dann aber eine Warnung erhalten.
Okay und wie tue ich das? Ich bin grade erst auf C umgestiegen. Aber denkt ihr denn nicht, dass es eher ein Hardware Problem ist? Denn warum sonst sollte der Takt nicht richtig funktionieren? Sowohl in C als auch in Bascom
wie hast du denn den takteingang beschalten?
hast du ein oszi?
Lesezeichen