- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 2 von 2

Thema: programmieren ohne verwendung von makros

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.01.2008
    Ort
    Allgäu
    Alter
    37
    Beiträge
    220

    programmieren ohne verwendung von makros

    Anzeige

    E-Bike
    hallo, um die c grundlagen mit dem rp6 mal richtig zu lernen, schreibe ich jetzt einzelne programme ohne die vordefinierten makros.

    jetzt hab ich mal ausprobiert mit einem taster eine led anzusteuern.
    Der taster ist am Register B am Pin 0 angeschlossen. Die ist am Register
    B an Pin 7 angeschlossen. hier mein programm:
    irgendwo liegt noch ein programmierfehler denn die led leuchtet nicht

    woran liegt es?


    Code:
    
    #include "RP6RobotBaseLib.h"
    
    
    void taster(void)
    
    {if (PINB & (1<<0))  //wenn PINB high (taster gedrückt)
    
      {
      PORTB |= (1<<7);}  //PIN7 von PORTB auf high
    
    else
      {PORTB &=~ (1<<7);}  //PIN7 von PORTB auf low
    
      }
    
    int main(void) //Hauptprogramm
    {initRobotBase();
    
     DDRB&=~ (1<<0);  //PIN0 von PORTB als Eingang
    DDRB |= (1<<7);   //PIN7 von PORTB als Ausgang
    
     taster();
    }
    gruß

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Versuche das mal ohne RP6-Library:

    Code:
    #include <avr/io.h>			// I/O Port definitions
    //#include "RP6RobotBaseLib.h"
    
    void taster(void)
    {
    	if (PINB & (1<<0))  //wenn PINB high (taster gedrückt)
    	{
    		PORTB |= (1<<7);  //PIN7 von PORTB auf high
    	}
    	else
    	{
    		PORTB &=~ (1<<7);  //PIN7 von PORTB auf low
    	}
    }
    int main(void) //Hauptprogramm
    {
    	//initRobotBase();
    
    	DDRB&=~ (1<<0);  //PIN0 von PORTB als Eingang
    	DDRB |= (1<<7);   //PIN7 von PORTB als Ausgang
    
    	while(1) taster(); //endlos Taster abfragen
    }
    Ich hoffe, das funktioniert, ich habe es nicht getestet. Beachte die Anzahl der Bytes ohne RP6-Library!

    Ein Programm für einen AVR darf nie beendet werden, deshalb muss immer eine Endlosschleife am Ende ausgeführt werden.

    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!

Berechtigungen

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

Labornetzteil AliExpress