- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 2 von 2

Thema: RC5 Dekoder aus empfängt nur Nullen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    08.08.2005
    Beiträge
    7

    RC5 Dekoder aus empfängt nur Nullen

    Anzeige

    E-Bike
    Hallo zusammen,

    ich habe diesen http://www.rn-wissen.de/index.php/RC...%C3%BCr_ATMega Dekoder in einen ATmega8 programmiert.

    TSOP1838 hängt am INT0
    F_CPU ist 7372800
    Prescaler ist 1024

    In "rc5.c" habe ich unten stehendes Programm angehängt.

    UART läuft. Aber das Ding empfängt nur Nullen. Habe 3 Fernbedienungen ausprobiert, alle gehen, aber es kommt immer Adresse und Code = 0 raus.

    Was kann ich tun? Habe ich was falsch gemacht?

    Grüße
    Martin

    Code:
    int uart_putc (char c)
    {
        while (!(UCSRA & (1<<UDRE))); // warten bis Senden moeglich
        UDR = c;                      // sende Zeichen
        return 0;
    }
    
    void uart_puts (char *s)
    {
        while (*s)
        {   // so lange *s != '\0' also ungleich dem "String-Endezeichen"
            uart_putc(*s);
            s++;
        }
    }
    
    int main (void)
    {	
    	uint8_t Hunderter;
    	uint8_t Zener;
    	uint8_t Einer;
    
    	UCSRB = (1<<RXEN)|(1<<TXEN);					// rx INT, rx/tx en
    	UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);		// 8 Bit
    	UBRRL = 47;										// 9.600 Baud	
    	
    	DDRB = (1<<PB1)|(1<<PB2);
    	
    	/* der ensprechende INT-Port muss INPUT sein */
    	/* RC5 initialisieren, alle Adressen zulassen */
    	rc5_init (RC5_ALL);
    	/* Interrupts zulassen */
    	sei();
    
    	while(1)
    	{
    		while (rc5.flip == -1);
    		uint8_t code = rc5.code;
    		uint8_t addr = rc5.addr;
    		
    		Hunderter = 0;
    		Zener = 0;
    		Einer = addr;
    
        	while(Einer >= 100)
    		{
          		Einer = Einer - 100;
    	  		Hunderter = Hunderter + 1;
    		}
        	while(Einer >= 10)
    		{
          		Einer = Einer - 10;
    	  		Zener = Zener + 1;
    		}
    
    		uart_puts("Adresse:");
    		uart_putc(48+Hunderter);
    		uart_putc(48+Zener);
    		uart_putc(48+Einer);
    		uart_putc(10);  
    		uart_putc(13);
    
    		Hunderter = 0;
    		Zener = 0;
    		Einer = code;
    
        	while(Einer >= 100)
    		{
          		Einer = Einer - 100;
    	  		Hunderter = Hunderter + 1;
    		}
        	while(Einer >= 10)
    		{
          		Einer = Einer - 10;
    	  		Zener = Zener + 1;
    		}
    
    		uart_puts("Code:");
    		uart_putc(48+Hunderter);
    		uart_putc(48+Zener);
    		uart_putc(48+Einer);
    		uart_putc(10);  
    		uart_putc(13);
    
    
    
    		rc5.flip = -1;
    
    
    
    
    	}
    
    
    }

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    08.08.2005
    Beiträge
    7
    Fehler gefunden, sorry...

    http://www.rn-wissen.de/index.php/Di...%C3%BCr_ATMega

    ganz unten. Das war in der RN-Wissen Seite noch nicht aktualisiert!

    Martin

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress