- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 5 von 5

Thema: Erste Schritte in der Programmierung in c

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    11.10.2006
    Beiträge
    34

    Erste Schritte in der Programmierung in c

    Hallo!

    Habe bisher mit Bascom programmiert und möchte, da wir im Studium C programmieren in C umsteigen. Arbeite mit AVR Studio. Das brennen funktioniert über den mysmartUSB von myAVR ohne Probleme, nur funktioniert mein Programm nicht. Was mach ich falsch?
    Möchte erstmal einfach eine LED mit einem Schalter zum leuchten bringen.

    MfG

    Timmy

    Hier mein Code:
    Code:
    #include <avr/io.h>
    #define F_CPU 3686400UL
    
    	
    
    int main(void)
    {
    	DDRC = 0xff; /*Port C Ausgang*/
    	DDRB = 0x00; /*Port B Eingang*/
    	PORTB = 0x00; /*Pull-Up aktiv*/
    	
    if (!(PINB & (1<<2)))
    {
    PORTC &= ~(1<<1);
    
    }
    
    else
    
    {
    PORTC |= ( 1<<1 );
    
    }
    return 0;
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Der Programm landet nach dem Verlassen von main() irgendwo (bei avr-gcc in einer Endlosschleife).

    Dein Code wird also nur 1x ausgeführt. Pack ihn mal in ne Endlosschleife rein.

    Ja nach Port gibt es Sonderfunktionen, zB standardmässig aktiviertes JTAG. Also nicht vergessen das...
    Disclaimer: none. Sue me.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    11.10.2006
    Beiträge
    34
    Hallo!

    Danke erstmal für den Tip! komm aber leider nicht weiter.... hab jetzt ne Endlosschleife programmiert, aber das Programm läuft trotzdem nicht. Die angeschlossene LED leuchtet, aber wenn ich den Taster drücke tut sich nix!
    Code:
    #include <avr/io.h>
    #define F_CPU 3686400UL
    
       
    
    int main(void)
    {
       DDRC = 0xff; /*Port C Ausgang*/
       DDRB = 0x00; /*Port B Eingang*/
       PORTB = 0x00; /*Pull-Up aktiv*/
    for(;;){   
    if (!(PINB & (1<<2)))
    {
    PORTC &= ~(1<<1);
    
    }
    
    else
    
    {
    PORTC |= ( 1<<1 );
    
    }
    return 0;
    }
    }
    MfG

    Timmy

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Rücke deinen Code mal ein, dann siehst du besser was abgeht.

    Durch das return macht dein Code nix anderes als zuvor (es steht in der Schleife!).

    Wirf das return wer, das brauchst du nicht. Auch keins am Ende, der return-Code wäre wegen der Endlosschleife eh tot...
    Disclaimer: none. Sue me.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    11.10.2006
    Beiträge
    34
    Hallo!

    Dankeschön! Jetzt funktioniert es! \/ Hab das return rausgeworfen und die Pull-Ups wieder aktiviert. Hatte diese keine Ahnung warum deaktiviert. Naja,aller Anfang ist schwer..... hab zwar schon am ein wenig PC in C programmiert aber an einer Microcontroller ist es doch ein wenig anders.

    MfG

    Timmy

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress