-         

Ergebnis 1 bis 5 von 5

Thema: Asuro US an RN-Control

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260

    Asuro US an RN-Control

    Anzeige

    Hio.
    Ich hab ein ziemlich dringendes Problem. Und zwar versuche ich gerade das US Modul vom Asuro mit einem RN-Control zu verbinden und es will einfach nicht tun. Ich schreib schnell wie ich das gemacht habe und ich wäre wirklich jedem sehr dankbar, der mir einen Tipp geben könnte, was falsch ist.
    Also, ich schließe den Pin ADC3 der Erweiterungsplatine an den Pin AIN1 am RN-Control (also invertierter Eingang des Komparators) und den Pin PD6 (AIN0) der Erweiterungsplatine an AIN0 am RN-Control an (jeweils direkt den Draht an den Pin). Nun schließe ich noch den Pin OC2 (PD3) der Erweiterungsplatine an PD7 (OC2) an das RN-Control an. Mein Programm sieht nun so aus:

    Code:
    #include "asuro.h"
    #include "uart.h"
    
    void LocalInit(void)
    {
    	// Change Oscillator-frequency of Timer 2
    	// to 40kHz, no toggling of IO-pin:
    	TCCR2 |= (1 << WGM21) | (1 << CS20);
    	OCR2 = 0x64;				// 40kHz @8MHz crystal 
    	ADCSRA = 0x00;				// ADC off
    	// Analog comparator:
    	ACSR = 0x02;				// Generate interrupt on falling edge
    								
    	SFIOR |= (1 << ACME);		// Enable muliplexing of comparator
    	DDRB &= ~((1 << PB2) | (1 << PB3));		// Port B Pin 2 and 3 is input
    }
    
    
    void Ping(unsigned char length)
    {
    	count72kHz = 0;
    	TCCR2 |= (1 << WGM21) | (1 << COM20) | (1 << CS20); // Toggling of IO-Pin on
    	
    	// generate the Chirp
    	while(count72kHz < length) {
    		OCR2 = 0x64 + length / 2 - count72kHz;
    	}
    	
    	TCCR2 |= (1 << WGM21) | (1 << CS20);		// Toggling of IO-Pin off
    	OCR2 = 0x64;
    }
    
    
    int main(void)
    {
    	// LEDs aus vom RN-Control
    	DDRC = 0xFF;
    	
    	int pos, i;
    	int posmarker;
    	uart_init();
    
    	LocalInit();
    	
    	while(TRUE) {
    		posmarker = 0;
    		Ping(20);
    		for(pos = 0; pos < 100; pos++) {
    			Sleep(10);
    			if((ACSR & (1 << ACI)) != 0) {
    				if(posmarker == 0) { posmarker = pos; }
    			}
    			ACSR |= (1 << ACI);
    		}
    		if(posmarker < 10) {
    			PORTC &= ~((1<<PC1));
    			PORTC |= (1<<PC0);
    		}
    		else {
    			PORTC &= ~((1<<PC0));
    			PORTC |= (1<<PC1);
    		}
    			
    		uart_putc(posmarker);
    	}
    	
    	return 0;
    }
    [/b]
    posmarker ist immer 0. An den Eingängen des Komparators tut sich auch nix. Da zeigt mein billig Multimeter immer 2,47 V an...

    Was ist da falsch ? Hab ich irgendwas falsch verbunden? Ich hab das strenge Gefühl das der Timer nicht tut, keine Ahnung, kann das aber nicht messen, weil ich kein Oszi hab.

    Ich wär für einen Hinweis wirklich sehr sehr dankbar.

    Gruß
    Lutz

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260
    Hio.
    Wenn ich klatsche, dann kann ich mit dem US mein Klatschen hören. Anscheinend tut der nicht chripen...

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.08.2004
    Ort
    Zwolle
    Alter
    61
    Beiträge
    531
    Hallo,

    Tip1: kauf dir ein Oszi.
    Tip2: kauf dir ein Oszi.
    Tip3: kauf dir ein Oszi.

    Tip4: ist ADMUX okay?

    Tip5: ich weiss nicht warum aber die "while(count72kHz < length)" da konnte was schief gehen wenn in die Mitte/wahrend von/die (count72kHz < length) ein interrupt entsteht. Hat etwas mit 'atomic' oder sonstiges zu tun. Daruber gibts ein artikel in RN-Wissen.

    Die Timer init scheint mir weiter okay.

    Gruss

    Henk

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.05.2005
    Ort
    Stuttgart
    Beiträge
    260
    Hio.
    Was meinst du mit ADMUX? Ich hab den negativen Eingang des Komparators einfach bei AIN1.

    Ich versteh die Welt nicht mehr. Am Asuro tut das Teil und am RN-Control nicht...
    Vielleicht fehlt ja ein elektr. Bauteil irgendwie? Ein Widerstand ist da im Schaltplan eingezeichnet bei ADC3, der bei mir ja "widerstandslos" in AIN1 gestöpselt wird.

    Gruß
    Lutz


    Edit: Wenn ich das US-Modul am Ausro hab, dann reagiert das nicht auf Klatschen...

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.08.2004
    Ort
    Zwolle
    Alter
    61
    Beiträge
    531
    Ja hallo,

    da hab ich mich geirrt, die Admux hat ja nichts damit zu tun.

    ich kenne nur Asuro nicht die RN-Control.

    Du sprichtst:

    >Nun schließe ich noch den Pin OC2 (PD3)

    ich nehme an OC2 ist PD3.

    Ist port PD3 auch wie Ausgang programmiert?
    Denn ohne dies geht's nicht (nicht im Asuro Atmega8L)

    Gruss

    Henk

Berechtigungen

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