- 12V Akku mit 280 Ah bauen    Werbung      
Ergebnis 1 bis 10 von 18

Thema: 72kHz / 32kHz

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    13.07.2011
    Beiträge
    20
    Beim Tiny mit 9,6MHz klappt das nicht so einfach: 9600000/36000=266. Leider zuviel für den 8-Bit-Timer.
    das habe ich mir schon gedacht,

    ich habe mir wieder gedanken gemacht und rum gerechnet und mal sehen ob ich es richtig verstanden habe,
    folgendes kam raus:

    nehme ich die interne Taktfrequenz von 4,8kHz

    rechne ich 1,2MHz/72kHz =66 oder 67
    1,2Mhz durch 66 ergibt 72,7Hz die sollten für die Minesweeper Erweitung in Ordnung sein

    der Zähler wird wieder im CTC Betrieb betrieben und
    OCRA0= 256-(66:2)=223
    TCNT0=256-66+3("Für das Laden des Zählregisters")

    haut das so hin?
    Gruß aus Hamburg

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    63
    Beiträge
    5.799
    Aha, es lichtet sich. Ich habe nun deinen Spulenthread gefunden und das von Manf verlinkte PDF gelesen:
    http://www.produktinfo.conrad.com/da...ER_BAUSATZ.pdf

    Grundsätzlich sind wir auf dem richtigen Weg, denn die Variable count72kHz zeigt eindeutig, dass es sich um die 72kHz-Lib des asuro von der CD handelt. Diese Version 2.1 kann man hier runterladen: http://sourceforge.net/projects/asuro/files/AsuroLib/

    Daraus nun der Ausschnitt mit der Timerparametrierung und der ISR:
    Code:
    volatile unsigned char count72kHz;
    
    /* uses timer2 (36kHz for IR communication */
    /* counts falling and rising edge => 36kHz*2 = 72kHz */
    SIGNAL (SIG_OUTPUT_COMPARE2)
    {
    	count72kHz ++;
    }
    
    /* Init function Processor will be initalized to work correctly */
    void Init (void)
    {
    	//-------- seriell interface programmed in boot routine and already running -------
    	//  prepare 36kHz for IR - Communication
    	TCCR2 = (1 << WGM21) | (1 << COM20) | (1 << CS20);
    	OCR2  = 0x6E; // 36kHz @8MHz
    	TIMSK |= (1 << OCIE2); // 36kHz counter for sleep
    WGM21 gesetzt bedeutet CTC, COM20 bedeutet "Toggle OC2 on Compare Match", also Ausgangspin umschalten bei Match. CS20 schaltet den Prescaler aus, somit ergeben 0x6e oder 110 im OCR2-Register etwa 8000000/110= 72727 Matches pro Sekunde und ebensoviele Aufrufe der ISR. Da bei jedem Match der Ausgang getogglet wird, ergeben sich am OC2-Pin 36kHz.

    Hier mal ein Testprogramm, keine Ahnung ob das so funktioniert:
    Code:
    // Ansteuerung der Minesweeper-Erweiterung für den asuro mit einem Tiny13    1.9.2011 mic
    // Basis ist das Testprogramm aus der Anleitung Seite 10
    
    // Asuro:                           Tiny13:
    // Ausgang der 36kHz (OC2): 			PB1 (OC0B, Pin6)
    // Eingang für das Signal (INT0): 	PB0 (PCINT0, Pin5)
    // Ausgang für LED (PD6):           PB2 (Pin7)
    
    // Der Eingang ist wie beim asuro interruptfähig.
    
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    volatile unsigned char count72kHz;
    ISR(TIM0_COMPB_vect)
    {
    	count72kHz ++;
    }
    
    int main(void)
    {
    	TCCR0A = (0 << WGM00) | (1 << WGM01); // CTC-Mode
    	TCCR0A |= (1 << COM0B0) | (0 << COM0B1); // Toggle OC0B on Compare Match
    	TCCR0B = (0 << CS02) | (0 << CS01) | (1 << CS00); // kein prescaler!
    	TIMSK0 = (1 << OCIE0B); // Interrupt ein
    	OCR0B = 9600/72; // 9,6MHz/72kHz = 133,3
    	sei();
    
    	DDRB |= (1<<PB2) | (1<<PB1); // LED und 36kHz sind Ausgänge
    
    	unsigned char oscillation;
    
    	PORTB &= ~(1<<PB2); // LED aus
      	while(1)
      	{
    		count72kHz=0;
    		oscillation = 0;
    		while (count72kHz<100) {
    		// Detect low level
    		if ((PINB & (1<<PB0)) == 0) oscillation = 1;}
    		// If oscillator is running, no metal object is within
    		// range, so LED should be off
    		if (oscillation) PORTB &= ~(1<<PB2); else PORTB |= (1<<PB2); // LED schalten
    	}
    	return(0);
    }
    Gruß

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

Ähnliche Themen

  1. Problem mit 32kHz Uhrenquarz am timer1
    Von FeiaDragon im Forum PIC Controller
    Antworten: 6
    Letzter Beitrag: 29.08.2008, 22:03

Berechtigungen

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

    Werbung      12V Akku bauen