-         

Ergebnis 1 bis 5 von 5

Thema: Compare Register

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    12.09.2005
    Beiträge
    35

    Compare Register

    Anzeige

    Hallo,
    ich brauche dringend Hilfe , ich bin neue Mikrokontroller_einsteiger.ich arbeite momentan mit AVR AT90s8515 . ich möchte OC1 steuren duch TCNT1H/L und Vergleichsregister OCR1A aber es hat nicht geklappt . "ich habe Datenblatt gelesen aber hat nicht geholfen",ich möchte OC1 nur mit Timer setzen und zurücksetzen für 1s und COMPARE INTERRUPT muss Timer stopen.

    viel Güsse Majid

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.08.2005
    Ort
    49.80248 8.59252
    Alter
    33
    Beiträge
    172
    Na zeig mal dein bisheriges Programm.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    12.09.2005
    Beiträge
    35
    hallo ,
    ich bedanke mich, für deinen Antwort.
    Code:
    /*************************************************************************
    *                                 ______                            _______
    *         PORTA  _______|          |_______________|          |________
    * .C                                 ____                               ____ 
    *          OC1  ___________|      |_________________|      |_________
    **************************************************************************/
    
    #include <avr\io.h>		       // Wir brauchen Zugriff auf die I/O's des Controllers
    #include <avr\signal.h>
    #include <avr\interrupt.h>
    #include <avr\eeprom.h>	     // Und auf das Flash
    #include <inttypes.h>
    
    
    
    volatile int  timer_flag1, timer_flag;
    long t1s;
    #define FCLOCK   8000000
    #define TCNT0_Reload 6
    /*************************************************************************
    *
    * für Quartz 8.000MHz
    *
    *************************************************************************/
    SIGNAL(SIG_OVERFLOW0) {
    	outb(TCNT0, TCNT0_Reload);  
    	timer_flag=1;
    }
    
    
    
    INTERRUPT(SIG_OUTPUT_COMPARE1A){				/* Compare Match INTERRUPT */
    outb(TCCR1B, 0x00); // Timer stoppen
    }
    
    
    
    int main(void) {
    outb(DDRA, 0xff);  /* A als Ausgang*/
    outb(DDRD, 0xff);  /* D als Ausgang OC1A*/
    
    outb(TCNT0, TCNT0_Reload);
    outb(TCCR0,  0x03);          // CPU/64
    
    outb(TCNT1H,0xC2);
    outb(TCNT1L,0xF7);
    
    outb(TCCR1B, 0x03);// ab hier fängt Zähler zu zählen
    
    outb(TIMSK, inb(TIMSK) | BV(TOIE0));    /* enable T0 IRQ */
    outb(TIMSK, inb(TIMSK) | BV(OCIE1A));   /* wenn dieses Bit gesetzt ist, wird beim Erreichen
                                            // des Vergleichswert ein Compare Match INTERRUPT ausgelöst*/
    outb(OCR1AH, 0x3D);  /* vergleichwert wird in Vergleichregister (OCR1A) gelegt */
    outb(OCR1AL, 0x09);
    
    outb(TCCR1A, (1<<COM1A1)|(1<<COM1A0));
    sei();                 /* hier wird Interrupt1 gesetzt*/
    
    /*************************************************************************
    * MAIN_Loop
    */
    	for(;;) { // ... ever
    
    		while(timer_flag==0) {
    
    		}
        timer_flag=0;
    
        t1s++;
        if(t1s>=1000){
    		t1s=0;
    			if(bit_is_clear(PORTA, PINA0)){
    				sbi(PORTA, 0);
    				sbi(PORTA, 2);
    				sbi(PORTA, 4);
    
    			}else{
    				cbi(PORTA, 0);
    				cbi(PORTA, 2);
    				cbi(PORTA, 4);
    
    		}
    
    }
    
    } // for(;;)
    return 0;
     }

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.08.2005
    Ort
    49.80248 8.59252
    Alter
    33
    Beiträge
    172
    Was mir sofort auffaelt ist, dass du PORTA als Ausgang eingestellt hast, aber hier: if(bit_is_clear(PORTA, PINA0)) benutzt du PINA. Da sollte schon PA0 stehen. Man benutzt ueberigends auch kein cbi, sbi und out mehr.
    Versuch mal folgendes Tutorial durchzuarbeiten, dann findest sicher noch mehr Fehler. Vorallem Kapitel 8 sollte interesannt sein:
    http://www.mikrocontroller.net/artic...R-GCC-Tutorial

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.09.2005
    Beiträge
    35
    hi,
    danke für dein Tips

Berechtigungen

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