- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 19

Thema: RP6 fernsteuern

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von I♥ROBOTIC
    Registriert seit
    15.03.2010
    Ort
    Fürstenstein
    Alter
    27
    Beiträge
    112

    Ausrufezeichen RP6 fernsteuern

    Hallo RN,

    ich hab radbruchs videos gesehen, in denen er seinen RP6 ferngesteuert hat. ich hab seine programme ausprobiert aber bei mir funktionieren die iwie nicht (empfänger ist richtig angeschlossen).. also hab ich mir gedacht, versuche ich selbst ein programm zu schreiben. erst mal eins zum auslesen der "Servopostitionen"

    Hier das Programm:
    Code:
    #include "RP6ControlLib.h"
    
    uint16_t speed=0;
    uint16_t dir=0;
    uint16_t speedcount=0;
    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 << WGM00) | (1 << WGM01);					// CTC-Mode
    	TCCR1A |= (0 << COM00) | (0 << COM01);					// ohne OCR-Pin
    	TCCR1A |=	(0 << CS02)  | (1 << CS01) | (0 << CS00);	// prescaler /8
    	TIMSK |= (1 << OCIE1A); 								// Interrupt ein
    	OCR1A  = 9; // 100kHz?
    }
    
    int main(void)
    {
    	initRP6Control();
    	initLCD();
    	initRC();
    
    while(1)
    {
    	writeInteger(speed, DEC);
    	writeString("\t\t");
    	writeInteger(dir, DEC);
    	writeString("\n");
    }
    	return 0;
    }
    Es soll nur messen wie lange die Ports high sind und das dann ausgeben, aber irgendwie bekomm ich immer nur 0en raus...

    mein empfänger bekommt strom, denn wenn ich testweise eine servo dranhänge bewegt er sich einwandfrei.

    ich hoffe ihr könnt mir helfen den Fehler zu finden, denn ich hab keine lust mich morgen auch nochmal den ganzen Tag hinzusetzen..

    könnte es sein dass es an der Timerinitaliesierung liegt ?? die hab ich nämlich nicht selbst geschrieben (kenn mich mit dem Bitschubsen nicht aus), die ist noch von Radbruchs Programm...

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Versuche es mal so:

    Code:
    volatile uint16_t speed=0;
    volatile uint16_t dir=0;
    volatile uint16_t speedcount=0;
    volatile uint16_t dircount=0;
    Läuft das m32 nicht mit 16MHz? Dann sollte OCR1A mit 20 geladen werden um einen 100kHz-Takt zu erreichen. Aber eigentlich ist der absolute Messwert der Impulslänge ja nicht wichtig, es funktioniert auch so.

    Vorsicht bei 16-Bit-Werten. Sie könnten während der Ausgabe von der ISR verändert werden:
    Code:
    uint16_t speed1, dir1;
    while(1)
    {
    	cli(); // Interrupts verbieten
    	speed1=speed;
    	dir1=dir;
    	sei(); // Interrupts wieder zulassen
    	writeInteger(speed1, DEC);
    	writeString("\t\t");
    	writeInteger(dir1, DEC);
    	writeString("\n");
    	mSleep(100);
    }
    Gruß

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

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von I&amp;#9829;ROBOTIC
    Registriert seit
    15.03.2010
    Ort
    Fürstenstein
    Alter
    27
    Beiträge
    112
    danke für die schnelle Antwort, aber leider bringts nichts... ich bekomm im Terminal nur Nullen ausgegeben

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

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von I&amp;#9829;ROBOTIC
    Registriert seit
    15.03.2010
    Ort
    Fürstenstein
    Alter
    27
    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);

  6. #6

Ähnliche Themen

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

Stichworte

Berechtigungen

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

Labornetzteil AliExpress