-
        

Ergebnis 1 bis 7 von 7

Thema: Asuro PCDemo Programm

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.01.2006
    Ort
    Straubing
    Alter
    40
    Beiträge
    698

    Asuro PCDemo Programm

    Anzeige

    Hallo Leute,

    ich habe gestern einen Asuro bekommen. Und nun bin ich schon ganz fleißig am experementieren. Allerdings habe ich so die ersten Startschwierigkeiten, und hoffe auf Eure Hilfe

    Ich habe das Programm PCDemo erfolgreich compiliert und habe es geflasht. Allerding steht nach dem Start der suro nur da und mach seine selbsttest. Der sollte doch auf die Eingaben auf die Ziffern reagieren und entsprechend fahren. In dem Terminal sehe ich Ausgaben wie
    Line Test
    Switch Test Odometrie Test usw.

    Wie löse ich den nun die Fernsteuerung aus das er losfährt?

    Danke im Voraus
    Gruß Eddie
    __________________________________________________ ___________________
    Habe keine Angst davor, etwas Neues auszuprobieren, ein Amateur hat die Arche gebaut, Profis die Titanic!

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.01.2006
    Ort
    Straubing
    Alter
    40
    Beiträge
    698
    Hier der Code den ich verwende
    Code:
    #include "asuro.h"
    #include <stdlib.h>
    
    #define OFFSET	0x3F
    #define STEP	5
    
    #define RWD_KEY   '2'
    #define FWD_KEY   '8'
    #define LEFT_KEY  '4'
    #define RIGHT_KEY '6'
    #define STOP_KEY  '5'
    
    volatile unsigned char switchPressed;
    int speedLeft,speedRight;
    
    SIGNAL (SIG_INTERRUPT1)
    {
    	unsigned int i;
    
    	DDRD |= SWITCHES;				// Switches as Output
    	SWITCH_ON;						// Output HIGH for measurement
    	ADMUX = (1 << REFS0) | SWITCH;	// AVCC reference with external capacitor
    	for (i = 0; i < 0xFE; i++);
    
    	ADCSRA |= (1 << ADSC);			// Start conversion
    	while (!(ADCSRA & (1 << ADIF)));	// wait for conversion complete
    	ADCSRA |= (1 << ADIF);			// clear ADCIF
    	i = ADCL + (ADCH << 8);
    
    	// und ab gehts --- fahr zurьck
    	MotorDir(RWD,RWD);
    	MotorSpeed(200,200);
    	FrontLED(ON);
    	BackLED(ON,ON);
    	for (i = 0; i < 0xFFFD; i++);   // Sleep does not work here
    
    	switchPressed = TRUE;
    	SWITCH_OFF;
    	DDRD &= ~SWITCHES;					// Switches as Input => ext. Int 1 
    }
    
    void PCFwd(void)
    {
    	speedRight += STEP;
    	speedLeft  += STEP; 
    	if (speedLeft < 0 && speedLeft >= -OFFSET) speedLeft = 1; 
    	if (speedRight < 0 && speedRight >= -OFFSET) speedRight = 1; 
    	FrontLED(ON);
    	BackLED(OFF,OFF);
    }
    
    void PCRwd(void)
    {
    	speedRight -= STEP;
    	speedLeft  -= STEP;
    	if (speedRight > 0 && speedRight <= OFFSET)  speedRight = -1; 
    	if (speedLeft > 0 && speedLeft <= OFFSET)  speedLeft = -1; 
    	FrontLED(OFF);
    	BackLED(ON,ON);
    }
    
    void PCLeft (void)
    {
    	speedLeft  -= STEP;
    	if (speedLeft > 0 && speedLeft <= OFFSET) speedLeft = -1;
    	speedRight += STEP;
    	if (speedRight < 0 && speedRight >= -OFFSET) speedRight = 1;
    	FrontLED(OFF);
    	BackLED(ON,OFF);
    }
    
    void PCRight (void)
    {
    	speedLeft  += STEP;
    	if (speedLeft < 0 && speedLeft >= -OFFSET) speedLeft = 1; 
    	speedRight -= STEP;
    	if (speedRight > 0 && speedRight <= OFFSET) speedRight = -1; 
    	FrontLED(OFF);
    	BackLED(OFF,ON);
    }
    
    
    void PCStop(void)
    {
    	speedRight = speedLeft = 0;
    	FrontLED(OFF);
    	BackLED(OFF,OFF);
    }
    
    
    void PCDemo(void)
    {
    	unsigned char cmd;
    	unsigned char leftDir = FWD, rightDir = FWD;
    
    	Init();
    	StartSwitch();
    	sei();
    	for(;;) {
    		cmd = 0;	
    		SerRead(&cmd,1,0xFFFE);
    		switch (cmd) {
    			case RWD_KEY :	PCRwd(); break;
    			case FWD_KEY :	PCFwd(); break;
    			case LEFT_KEY :	PCLeft(); break;
    			case RIGHT_KEY : PCRight(); break;
    			case STOP_KEY :	PCStop(); break;
    		}
    		if (speedLeft > 0 && speedLeft <  OFFSET) speedLeft += OFFSET;
    		if (speedLeft < 0 && speedLeft > -OFFSET) speedLeft -= OFFSET;
    		if (speedRight > 0 && speedRight <  OFFSET) speedRight += OFFSET;
    		if (speedRight < 0 && speedRight > -OFFSET) speedRight -= OFFSET;
    	
    		if (switchPressed) {
    			speedLeft  = 0;
    			speedRight = 0;
    			switchPressed = FALSE;
    		}
    
    		leftDir = rightDir = FWD;
    		if (speedLeft < 0)  leftDir = RWD; 
    		if (speedRight < 0) rightDir = RWD; 
    			
    		if (speedLeft >   255) speedLeft  =  255; 
    		if (speedLeft <  -255) speedLeft  = -255;
    		if (speedRight >  255) speedRight =  255;
    		if (speedRight < -255) speedRight = -255;
    
    		MotorDir(leftDir,rightDir);
    		MotorSpeed(abs(speedLeft),abs(speedRight));
    	} 	
    }
    Gruß Eddie
    __________________________________________________ ___________________
    Habe keine Angst davor, etwas Neues auszuprobieren, ein Amateur hat die Arche gebaut, Profis die Titanic!

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.378
    füge doch bitte vor den code ein [ c o d e ] und dahinter ein [ / c o d e ] ein (natürlich ohne leerzeichen) macht den text ungemein lesbarer als zentriert ... bekommt man ja fast augenweh ^^ aber interessanter vesuch die einrückung zu umgehen

    kann es sein dass du deine textdatei vor dem compilieren nicht gespeichert hast ^^ ... wenn er noch immer das demoprogramm abfährt, hast du ihm näcmlich garnichts geflasht

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.01.2006
    Ort
    Straubing
    Alter
    40
    Beiträge
    698
    Ich habe den CODE Tag benutzt. Und bei mir zeigt er auch alles sauber an!
    Gruß Eddie
    __________________________________________________ ___________________
    Habe keine Angst davor, etwas Neues auszuprobieren, ein Amateur hat die Arche gebaut, Profis die Titanic!

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.01.2006
    Ort
    Straubing
    Alter
    40
    Beiträge
    698
    Ich nutze das Win AVR und er erstellt mir dann eine hex Datei, diese tu ich dann ja via flash.exe übertragen. Davor war da ein anderes Programm drauf. Und dieses ist nun weg. Also hat er etwas geflasht.

    Ich sehe das was mit Interrupt und Funktion StartSwitch() kann es sein dass ich etwas bestimmtes drücken muss, damit er das Programm startet?
    Gruß Eddie
    __________________________________________________ ___________________
    Habe keine Angst davor, etwas Neues auszuprobieren, ein Amateur hat die Arche gebaut, Profis die Titanic!

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Hallo,

    Wie du in dem code lesen kannst steht dar gar keinen "Line Test" oder "Switch Test" tekst-zeile drin. Entweder dein program ist nicht richtig compiliert oder du hast den falschen Hex datei im Asuro geflasht. (sieht aus wie die selbtest hex datei) Versuchs nochmal zu flaschen mit den richtigen hex, oder poste den compiler error report bitte wenn das fehlt.

  7. #7
    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

    In dem Terminal sehe ich Ausgaben wie
    Line Test
    Switch Test
    Odometrie Test usw.
    In deinem PCDemo-Programm finde ich nirgends diese Ausgaben. Wie du schon richtig vermutest scheint das der Selbsttest zu sein. Weil der asuro immer nur ein Programm im Speicher haben kann ist wohl das Flashen von PCDemo fehlgeschlagen. Oder du hast die falsche Hex-Datei geflusht. Einfach nochmal versuchen oder ein kleines Testprogramm flashen.

    Gruß

    mic

    [Edit] Bin mal wieder zu langsam :)

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

Berechtigungen

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