-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 29

Thema: Takt funktioniert nicht richtig

  1. #1
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    13.01.2008
    Ort
    Nordrhein-Westfalen
    Alter
    25
    Beiträge
    125

    Takt funktioniert nicht richtig

    Anzeige

    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?

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    26
    Beiträge
    1.192
    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"

  3. #3
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    13.01.2008
    Ort
    Nordrhein-Westfalen
    Alter
    25
    Beiträge
    125
    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.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Zeig doch mal, wie du die "100ms eingestellt" hast.

  5. #5
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    13.01.2008
    Ort
    Nordrhein-Westfalen
    Alter
    25
    Beiträge
    125
    BASCOM
    Code:
    $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
    C
    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)
    }
    Sollte eigentlich stimmen. Also noch jemand ne idee?

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    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

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    13.01.2008
    Ort
    Nordrhein-Westfalen
    Alter
    25
    Beiträge
    125
    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.

  8. #8
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Bei dem C Programm muß man mit Optimierung übersetzen, ohne stimen die Zeiten aus Delay nicht - man sollte dann aber eine Warnung erhalten.

  9. #9
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    13.01.2008
    Ort
    Nordrhein-Westfalen
    Alter
    25
    Beiträge
    125
    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

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.09.2006
    Alter
    28
    Beiträge
    841
    Blog-Einträge
    1
    wie hast du denn den takteingang beschalten?

    hast du ein oszi?

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •