- Modernes Energiemessgeraet         
Ergebnis 1 bis 10 von 19

Thema: RP6 fernsteuern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Also ich war mal so frei und habe für dich ins Datenblatt des Mega32 geschaut:

    COM00/COM01 heißen beim Timer1 für KanalA COM1A0 und COM1A1 und müssen gelöscht sein für keine Ansteuerung des OCR-Pins, entsprechendes gilt für CS00-02. WGM00/WGM01 heißen WGM10/WGM11 und weil der Timer1 mehr Modi hat braucht man für CTC (Mode4) zusätzlich noch WGM12/13. Außerdem besitzt der Timer1 zwei Controllregister, das Setup (ungetestet) wäre also etwa so:
    Code:
    void initRC(void)
    {
    	TCCR1A = (0 << WGM11) | (0<<< WGM10) | (0 << COM1A0) | (0 << COM1A1);	// CTC-Mode4, ohne OCR-Pin
    	TCCR1B = (0 << WGM13) | (1 << WGM12) | (0 << CS12)  | (1 << CS11) | (0 << CS10); // CTC und prescaler /8
    	TIMSK |= (1 << OCIE1A); 										// Interrupt ein
    	OCR1A  = 20; // 100kHz?
    }
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von I&amp;#9829;ROBOTIC
    Registriert seit
    15.03.2010
    Ort
    Fürstenstein
    Alter
    28
    Beiträge
    112
    Danke für die Mühe allerdings bekomm ich eine Fehlermeldung:

    Code:
    RC.c:40: error: expected expression before '<' token
    Z.40 ist die erst der Initialisierung:

    Code:
    TCCR1A = (0 << WGM11) | (0<<< WGM10) | (0 << COM1A0) | (0 << COM1A1);

  3. #3

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von I&amp;#9829;ROBOTIC
    Registriert seit
    15.03.2010
    Ort
    Fürstenstein
    Alter
    28
    Beiträge
    112
    ach danke ich hab immer nur am anfang geschaut

    auch danke an Radbruch für die Mühe sich das Datenblatt extra anzusehen.... es funktioniert jetzt einwandfrei

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Naja, da ist eben ein "<" zu viel...
    Entschuldigung. Trotz ordentlicher Formatierung ist mir das nicht aufgefallen. Naja, niemand ist perfekt. Schön, dass es nun funzt :)

    Das aktuelle funktionierende Programm würde mich noch interessieren...
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    523
    Zitat Zitat von radbruch Beitrag anzeigen
    Entschuldigung. Trotz ordentlicher Formatierung ist mir das nicht aufgefallen. Naja, niemand ist perfekt. Schön, dass es nun funzt

    Das aktuelle funktionierende Programm würde mich noch interessieren...
    Kann ja mal passieren

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied Avatar von I&amp;#9829;ROBOTIC
    Registriert seit
    15.03.2010
    Ort
    Fürstenstein
    Alter
    28
    Beiträge
    112
    Hier das Bisherige Programm:

    Code:
    #include "RP6ControlLib.h"
    #include "RP6I2CmasterTWI.h"    
    #include "RP6Control_I2CMasterLib.h"
    
    void I2C_requestedDataReady(uint8_t dataRequestID) 
    { 
       checkRP6Status(dataRequestID); 
    } 
    
    void I2C_transmissionError(uint8_t errorState) 
    { 
       writeString_P("\nI2C ERROR - TWI STATE: 0x"); 
       writeInteger(errorState, HEX); 
       writeChar('\n'); 
    }
    
    volatile uint16_t speed=0;
    volatile uint16_t dir=0;
    volatile uint16_t speedcount=0;
    volatile uint16_t dircount=0;
    
    ISR(TIMER1_COMPA_vect)
    {
    	if (PINA & ADC5)
    	{
    		speedcount++;
    	}
    	else 
    	{
    		if (speedcount > 0)
    		{
    			speed=speedcount;
    		}
    		speedcount=0;
    	}
    	
    	
    	if (PINA & ADC3)
    	{
    		dircount++;
    	}
    	else 
    	{
    		if (dircount > 0)
    		{
    			dir=dircount;
    		}
    		dircount=0;
    	}
    }
    
    void initRC(void)
    {
    	TCCR1A = (0 << WGM11) | (0 << WGM10) | (0 << COM1A0) | (0 << COM1A1);	// CTC-Mode4, ohne OCR-Pin
    	TCCR1B = (0 << WGM13) | (1 << WGM12) | (0 << CS12)  | (1 << CS11) | (0 << CS10); // CTC und prescaler /8
    	TIMSK |= (1 << OCIE1A); 										// Interrupt ein
    	OCR1A  = 20; // 100kHz?
    	
    	DDRA &= ~ADC5;
    	PORTA &= ~ADC5; 
    	DDRA &= ~ADC3;
    	PORTA &= ~ADC3; 
    }
    	
    	
    
    int main(void)
    {
    	initRP6Control();
    	initLCD();
    	initRC();
    	
    	mSleep(500);
    	
    	I2CTWI_initMaster(100);  
    	I2CTWI_setRequestedDataReadyHandler(I2C_requestedDataReady); 
    	I2CTWI_setTransmissionErrorHandler(I2C_transmissionError);
    
    	uint16_t speed1, dir1;
    	
    while(1)
    {
    	cli(); // Interrupts verbieten
    	speed1=speed;
    	dir1=dir;
    	sei(); // Interrupts wieder zulassen
    	
    	rc_pwr=0;
    	rc_dir=0;
    
    	if (dir1<130) { rc_dir=150-dir1; changeDirection(LEFT); writeInteger(dir1, DEC); writeString("\t\t");}
    	if (dir1>180) { rc_dir=dir1-110; changeDirection(RIGHT); writeInteger(dir1, DEC); writeString("\t\t");}
    	if (speed1<150) { rc_pwr=150-speed1; changeDirection(FWD); writeInteger(speed1, DEC); writeString("\n");}
    	if (speed1>160) { rc_pwr=speed1-110; changeDirection(BWD); writeInteger(speed1, DEC); writeString("\n");}
    	rc_pwr*=3;
       if (rc_pwr)
       {
    		if (dir1<150) moveAtSpeed(rc_pwr-rc_dir,rc_pwr+rc_dir);
    		else if (dir1>160) moveAtSpeed(rc_pwr+rc_dir,rc_pwr-rc_dir);
    		else moveAtSpeed(rc_pwr,rc_pwr);
       }
    	 else
    	{
    	   moveAtSpeed(rc_dir*3, rc_dir*3);
    	}
    	
    	task_checkINT0(); 
    	task_I2CTWI();
    }
    	return 0;
    }
    allerdings haut das mit dem fahren noch nicht richtig hin... wenn die fernbedienung ein ist bekomm ich unendlich errors ausgegeben (0x20) was ja soviel ich weiß heist das die Base nicht antwortet
    wenn die fernbedienung aus ist bekomm ich Nullen (logisch, da der empfänger keinen impuls sendet) und nach einer zeit reseted die M32, und der RP6 fängt an zu fahren....
    oder der ganze rp6 hängt sich auf, so dass ich nicht mal mehr das programm beenden kann

    hab ich einen fehler im prog oda so ?? ich kann mir das nämlich nicht erklären


    [EDIT] GROSSES PROBLEM !!!!

    irgendwas stimmt mit meinem RP6 nicht, der rp6 loader kann nicht verbinden (ziel reagiert nicht) und danach wird auf dem lcd nur noch die 1 zeile angezeigt, und nach 2 oder 3 maligem ein und ausschalten zeigt es garnichts mehr an (leuchtet nur noch blau) und die roten status leds der base blinken, und das verheist soviel ich weis nichts gutes

    ich lade mal die akkus auf (vll liegt es an denen, denn das lcd ist, sofern es etwas anzeigt, sehr schwach) danach sehen wir mal weiter

    [EDIT2]

    aus welchem grund auch immer geht mein rp6 auch wieder aber ich bekomm unendlich errors raus (zwischendrin auch eine weile lang servowerte) aber nach ein paar sek kommen nur noch errors und dann hängt sich der rp6 auf ... wisst ihr wo der hacken steckt ?
    Geändert von I&amp;#9829;ROBOTIC (13.04.2011 um 14:03 Uhr)

Ähnliche Themen

  1. Herd fernsteuern
    Von Gast10 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 13
    Letzter Beitrag: 10.09.2010, 15:04
  2. RP6 Fernsteuern
    Von phenom im Forum Robby RP6
    Antworten: 15
    Letzter Beitrag: 15.12.2009, 21:34
  3. Rn-Motorcotrol + Fernsteuern
    Von art01 im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 1
    Letzter Beitrag: 26.02.2007, 16:24
  4. Fernsteuern via PC
    Von sdz55 im Forum Elektronik
    Antworten: 27
    Letzter Beitrag: 21.12.2005, 17:53
  5. Fernsteuern?
    Von Dan89 im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 06.11.2005, 20:02

Stichworte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress