Not logged in. · Lost password · Register

All posts by lurxy (6)

topic: Leistungselektronik  in the forum: Vertiefungen (Bachelor und Master) Lehrstuhl für Elektrische Antriebe und Maschinen
lurxy
Member since Feb 2013
6 posts
Kennt hier zufällig jemand das Passwort für die Inhalte, die auf der EMF Seite gespeichert sind? Der "Anleitung" nach sollte es das erste Wort von Kapitel 4 im Inhaltsverzeichnis sein. Meiner Information nach wäre das "MOSFET-Schalter", allerdings funktioniert das nicht...

Edit: Hat sich erledigt, habe es doch noch wiedergefunden.
This post was edited on 2016-10-24, 18:10 by lurxy.
topic: Automatisierungstechnik auf Regelungstechnik und Sensorik beschränken?  in the forum: Vertiefungen (Bachelor und Master) Allgemeines und Studienrichtungen
lurxy
Member since Feb 2013
6 posts
Subject: Automatisierungstechnik auf Regelungstechnik und Sensorik beschränken?
Hallo liebes EEI-Forum,

Ich habe eine Frage gerade an die Leute höheren Semesters. Und zwar steht mir die Wahl der Spezialisierungsrichtung vor. Ich habe mich schon ziemlich sicher für Automatisierungstechnik entschieden, welches sich ja in drei maßgebliche Bereiche aufteilt: Antriebstechnik, Regelungstechnik und Sensorik. Meine Frage ist jetzt, ob es für das spätere Berufsleben und das allgemeine Studium Sinn macht, sich fast ausschließlich auf die Regelung und die Sensorik zu beschränken? Irgendwie interessieren mich diese zwei Teilbereiche mehr als Antriebstechnik, aber ich bin mir eben nicht sicher, ob es so gut ist, einen der drei Bereiche dann schleifen zu lassen.

Was habt ihr so für Erfahrungen gemacht?

Vielen Dank im vorraus!
topic: Klausur Juli 2013 (Aufgabe 2a remote_control)  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
lurxy
Member since Feb 2013
6 posts
In reply to post ID 6565
Wenn es recht ist, schreibe ich hier auch mal was zu der Lösung:
Schau dir bitte noch mal deinen Code zu "auf Tastendruck warten" an, da stimmt - meiner Meinung nach - etwas ganz und gar nicht...
Des Weiteren solltest du dir genau überlegen, wo du volatile brauchst: Wenn ich das richtig sehe, hast du nämlich sowohl volatile vergessen, als auch überflüssige in deinem Programm.

Oh tatsächlich, ich hab sei() und cli() jeweils genau vertauscht. Sprich, da wo ein sei() steht gehört ein cli() hin und andersherum.
Was die volatiles angeht habe ich nochmal ins Skript geschaut, die Variablen, die das Hauptprogramm und die Unterbrechungsfunktion lesen und schreiben müssen demnach volatile sein, also pressed, event und taste. Überflüssig wäre an sich ja volatile in der Laufvariable in "/* Funktion send zu Taste gehoerendes Muster mit Infrarot-LED senden */", da der Präprozessor diese Schleife ja nicht verwerfen würde, da in der for-Schleife ja Befehle stehen, oder?

    taste = PINA;    //Reicht das hier oder muss ich taste und PINA bitweise verknüpfen?

Das soll wahrscheinlich PORTA heißen oder?
An sonsten: wenn das nur den Wert des Pins zurückgibt, passt das prinzipiell.

Hier hatte ich auch an den Pull Up Widerstand gedacht, da die Tasten ja als Eingänge konfiguriert sind. In dem Moment gibt PORTA ja nur noch Aussagen über den Pull Up und man muss mit PINA den Zustand schreiben/lesen.

            if(event==1) {        //Diese if-Abfrage ist ja nur gültig, wenn in der for-Schleife nicht nur eine Taste gedrückt wurde und damit event=0 eintritt, oder?

Wenn ich deinen Code richtig verstehe, wird dieser Abschnitt nie aufgerufen, weil in der for-Schleife drüber auf jeden Fall event=0; ausgeführt wird.

Ich weiß nicht, ob ich jetzt einen Fehler im Code habe, aber die Absicht war, dass in der for-Schleife vorher event nur dann auf 0 gesetzt wird, wenn taste genau einem 8-Bit Code mit einer Einsstelle entspricht ( in der Angabe steht hier, man soll send() nur aufrufen, wenn nur eine Taste gedrückt wird, ansonsten soll die Fehler LED auf PB4 leuchten). Kann natürlich aber auch sein, dass ich irgendwo etwas übersehen habe und event dennoch immer 0 gesetzt wird.
topic: Klausur Juli 2013 (Aufgabe 2a remote_control)  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
lurxy
Member since Feb 2013
6 posts
Subject: Klausur Juli 2013
Hallo liebe GspiCler,

Ich hab mich heute mal an der Programmieraufgabe vom Juli 2013 versucht und wollte fragen, ob jemand da vielleicht kurz mal drüber schauen kann. Ich bin mir an einigen Punkten noch nicht ganz sicher. Diese Punkte hebe ich mal mit farbigem Kommentar hervor.

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>
#include <stdint.h>
#define LOOPS_PER_MS 50
#define NBLINK 5
static uint16_t muster[8] = {420,680,210,160,370,110,920,750};
   
/* Funktionsdeklarationen, globale Variablen, etc. */
static uint8_t taste;     //Ist es für die Klausur wichtig, dass die globalen Variablen und Funktionen static sind? Es gibt letztendlich ja nur ein Modul.
static uint8_t pressed;
static uint8_t event;
static void wait(uint16_t ms);
static void send(uint8_t button);
static void init(void);

/* Unterbrechungsbehandlungsfunktion */
ISR (INT0_vect) {
    if(pressed==1) {
        event = 1;
        taste = PINA;    //Reicht das hier oder muss ich taste und PINA bitweise verknüpfen?
        pressed = 0;
    }       
}


/* Funktion main */
void main (void) {
/* Initialisierung und lokale Variablen */
    init();
/* Hauptschleife */
    while(1) {
/* auf Tastendruck warten */
        sleep_enable();
        sei();
        while(!event) {
            cli();
            sleep_cpu();
            sei();
        }
        cli();
        sleep_disable();     //Kann ich das sleep_disable() auch weglassen und das sleep_enable einmalig in der init() schreiben?
/* Betaetigung von Tasten auswerten */
        for(volatile uint8_t i=0; i<=7;i++) {
            if(taste==(1<<i)) {
                send(i);
                event=0;
                pressed=1;
                taste=0;
            }
        }
        if(event==1) {        //Diese if-Abfrage ist ja nur gültig, wenn in der for-Schleife nicht nur eine Taste gedrückt wurde und damit event=0 eintritt, oder?
            PORTB &= ~(1<<PB4);
            wait(1000);
            PORTB |= (1<<PB4);
            pressed=1;
            taste=0;
            event=0;
        }       
/* Ende main */
        pressed=1;     //Macht es hier Sinn, pressed, taste und event nochmal zurückzusetzen? Letztendlich passiert das in allen Fällen auch vorher schon, oder?
        taste=0;
        event=0;
    }
}
/* Funktion send
zu Taste gehoerendes Muster mit Infrarot-LED senden */
static void send(uint8_t button) {
    for(volatile uint8_t i=0; i<NBLINK; i++) {
        PORTC &= ~(1<<PC0);
        wait(muster[ button ]);
        PORTC |= (1<<PC0);
        wait(500);
    }
}   

/* Initialisierungsfunktion */
static void init(void) {
    DDRC |= (1<<PC0); //Infrarot LED
    PORTC |= (1<<PC0);

    DDRB |= (1<<PB4); //Fehler LED
    PORTB |= (1<<PB4);

    DDRA &= 0x00; //Taster 0-7
    PORTA |= 0xff;

    DDRD &= ~(1<<PD2); //Interrupt Leitung     //Interruptleitungen müssen immer als Eingang gesetzt werden, oder?
    PORTD |= (1<<PD2);
    GICR |= (1<<INT0);
    MCUCR &= ~(1<<ISC00);
    MCUCR |= (1<<ISC01);
    taste=0;
    pressed=1;
    event= 0;
}
/* Wartefunktion */
static void wait(uint16_t ms) {
    for(volatile uint16_t i =0; i<=(ms * LOOPS_PER_MS);i++) {}
}


Danke im Vorraus für die Zeit :)
topic: Problem mit Build im AVR Studio  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
lurxy
Member since Feb 2013
6 posts
In reply to post ID 6535
Das war wohl wirklich das Problem, jetzt funktionierts!

Dankesehr!
topic: Problem mit Build im AVR Studio  in the forum: 2. Semester Grundlagen der systemnahen Programmierung in C
lurxy
Member since Feb 2013
6 posts
Subject: Problem mit Build im AVR Studio
Hallo,

Ich wollte heute mal die Übungen aus der Vorlesung wiederholen und habe mir dafür das AVR Studio 5.1 (von der GSPIC Seite) runtergeladen, installiert (hatte den Rechner zwischenzeitlich neu aufgesetzt), die libspic Library sowie das Template eingebunden und ein Programm geschrieben:

#include <led.h>

void main (void) {
    while(1) {
    sb_led_on(GREEN0);
    while(volatile int i <= 0xff) {
        i=i+1;
    }
    sb_led_off(GREEN0);   
    }
}

Ich habe bei den Properties des Projekts die Pfade zu der libspic geändert und als Tool den AVRISPmkII mit ATmega 32 angegeben. Wenn ich jetzt mein Programm "builden" will, bekomme ich folgende Fehlermeldung:

Error    1    Invalid command line switch for "make". Value cannot be null.
Parameter name: source    C:\Program Files (x86)\Atmel\AVR Studio 5.1\Vs\Compiler.targets    4    5    Klausurvorb

18:40:24: [ERROR] Failed to generate the make file for building the Klausurvorb project. Value cannot be null.
Parameter name: source
(Das hier ist der Output, wenn ich auf Build klicke)

Kann es sein, dass mir das WinAVR oder soetwas fehlt? Ich kann mich allerdings nicht erinnern, dass ich das seperat installieren musste beim ersten Installieren.
Wie bekomme ich das Problem in den Griff?

Danke für eure Mühen!
Close Smaller – Larger + Reply to this post:
Special characters:
Go to forum
Powered by the Unclassified NewsBoard software, 20110527-dev, © 2003-8 by Yves Goergen