-         

Ergebnis 1 bis 10 von 10

Thema: Hilfe beim Facharbeitsprojekt

  1. #1

    Hilfe beim Facharbeitsprojekt

    Anzeige

    Hallo Asuro Freunde,
    kurze Einleitung:

    Ich bin gelernter Elektroniker und mache nun meinen Staatlich Geprüften Techniker in Elektronik und habe mir als Projekt den Asuro ausgesucht.

    Das zusammen löten verlief natürlich ohne Probleme.
    da wir in der Schule jedoch das Thema Micro Controler erst später bekommen aber es zeitlich sonst zu spät wäre habe ich jetzt schon angefangen und muss ohne den Stoff klar kommen und ich hoffe ich bekomme hier etwas unterstützung.

    für den Anfang habe ich folgendes Problem:


    ich habe die lib folgendermaße eingebunden

    C:ASURO_src -> AsuroLib-v280rc1
    ->FirstTry
    ->SelfTest
    das makefile habe ich nicht verändert weil ich

    # additional Include path for libraries
    LIBPATH = ../../lib


    darin nicht gefunden habe an der stelle steht bei mir:


    # Additional libraries
    #
    # Minimalistic printf version
    #LDFLAGS += -Wl,-u,vfprintf -lprintf_min
    #
    # Floating point printf version (requires -lm below)
    #LDFLAGS += -Wl,-u,vfprintf -lprintf_flt
    #
    # -lm = math library
    LDFLAGS += -lm


    WinARV habe ich das aktuellste genommen
    C:WinAVR-20100110
    habe ich im Makefile eingebunden

    Wenn ich Programme ein spiele auch fertige... bekomme ich Fehler (folgen)
    habe ein einfaches Programm mal geschrieben:
    Beispiel:

    Code:
    #include "asuro.h"
    
    int main(void)
    {
    	Init();
    	StatusLED(RED);
    	Sleep(200);
    	StatusLED(YELLOW);
    	Sleep(200);
    	StatusLED(OFF);
    	Sleep(200);
    	StatusLED(GREEN);
    	while(1);
    	return 0;
    }
    es wird auch ohne Fehler comprimiert nur eine Warnung tritt auf:

    from test.c:1:
    c:/winavr-20100110/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."


    Die Hexe-Datei wird erzeugt.
    dann habe ich das Programm ohne Probleme via Infrarot übertragen und es leuchten gleich nach der initialisierung die grüne LED

    -ist es noch ein Fehler bei der Einrichtung des Compailers oder ein programmier Fehler???
    - wenn ich die Zeit statt 200 auf 500 oder 1000 ,was eine Sekunde sein sollte, setze, kommt n Fehler der Wert sei zu hoch wie hoch darf der sein was entsprechen die Zahlen an Zeit?
    vielen Dank im Vorraus!!!

    Gruß Chris

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    25.10.2010
    Alter
    22
    Beiträge
    21

    Re: Hilfe beim Facharbeitsprojekt

    Zitat Zitat von t1000hh
    - wenn ich die Zeit statt 200 auf 500 oder 1000 ,was eine Sekunde sein sollte, setze, kommt n Fehler der Wert sei zu hoch wie hoch darf der sein was entsprechen die Zahlen an Zeit?
    sie darf max 255 sein erklärung findest du hier: http://www.arexx.com/downloads/asuro..._manual_de.pdf
    Diese Funktion lässt den Prozessor für eine einstellbare Zeit warten. Damit kann man prima
    Verzögerungen programmieren. Diese Funktion basiert auf einem 72kHz-Timer und kann als
    Parameter maximal den Wert 255 übergeben bekommen (unsigned char)4.
    Beispiel: 0,003s
    Der Prozessor soll für ca. 3ms warten ==> 1 = 216. Die Funktion Sleep () wird für 3ms
    langes Warten wie folgt aufgerufen: 72KHz
    Sleep (216) ;
    Bei deinem anderen Fehler kann ich dir nicht helfen, soviel weis ich dann doch noch nicht.

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von avrrobot
    Registriert seit
    12.01.2011
    Beiträge
    210
    Blog-Einträge
    9
    bei mir geht das programm einwandfrei, und wennich im programmers notepad auf make all klicke kommt kein fehler. es könnte sein, dass der fehler durch falsches benutzen der Sleep(ms) funktion kommt, da das das einzige ist, was interrupts verwendet. ist aber nur eine theorie.

    zu dem problem mit dem Sleep ich empfehle dir folgende funktion:

    int wait(int ms){
    int integer; //kann man natürlich nennen wie man will
    while(integer<ms){
    integer++;
    Sleep(72);
    }
    }

    wer fehler findet, darf sie behalten!

    avrrobot

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    from test.c:1:
    c:/winavr-20100110/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
    Da steht doch ganz genau was das Problem ist und wie es behpben werden kann! Falls du/ihr der englischen Sprache nciht so mächtig seid, gibts übersetzungstools im Internet.
    Die signal.h ist veraltet, benutze die interrupt.h

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Sicherer wäre so:

    int integer=0; //kann man natürlich nennen wie man will

    Meine Datei asuro.h beginnt so:

    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    //#include <avr/signal.h>
    #include <stdlib.h>
    Gruß

    mic

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

  6. #6
    erstmal an alle vielen dank für so schnelle Antworten!!

    Zitat Zitat von TobiKa
    from test.c:1:
    c:/winavr-20100110/lib/gcc/../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
    Da steht doch ganz genau was das Problem ist und wie es behpben werden kann! Falls du/ihr der englischen Sprache nciht so mächtig seid, gibts übersetzungstools im Internet.
    Die signal.h ist veraltet, benutze die interrupt.h
    ja das konnte ich mir denken nun die frage wie benutze ich die interrupt.h
    und wo wird die signal.h verwendet das sagt mir irgendiwe garnichts.

    und irgendwie kommt mir das so vor als ob man die Zeitverzögerung "Sleep()" nur für miliSekunden verwenden kann geht es auch für Sekunden?
    zum Beispiel LED leuchtet 2 Sekunden Grün dann 2 Sekunden Rot usw

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Du hast jetzt für dein erstes Problem einen Beispielcode bekommen und für dein zweites auch. Liesst du die anderen Posts nicht?

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

    Für uns "alte Hasen" scheint das einfach, für Einsteiger ist es aber möglicherweise verwirrend. Die Frage ist: Wo steigt man ein beim Erklären?

    Die Warnung beim Kompilieren wird von folgendem Eintrag in der Datei asuro.h verursacht:

    #include <avr/signal.h>

    signal.h wurde früher von WinAVR verwendet und ist in der aktuellen Version durch interrupt.h ersetzt worden. Deshalb muss die Zeile nun so aussehen:

    #include <avr/interrupt.h>

    In der orginalen CD-Version der asuro-Library verwendet sleep() einen 72kHz-Timer zur Zeitmessung. Deshalb dauert die kleinste Verzögerung von sleep(1) genau 1/72000 Sekunden, sleep(72) dauert entsprechend 1/1000 Sekunde. Eine Verzögerung von einer Sekunde erreicht man durch mehrfachen Aufruf von sleep() in einer Schleife:

    int i;
    for(i=0; i<1000; i++) sleep(72);

    Was mich stört: Du scheinst du Version 2.8 der Library zu verwenden. Warum tritt trotzdem die Warnung auf? Ich dachte, die aktuelle Lib würde interrupt.h verwenden. Möglicherweise ist die Library nicht richtig installiert.

    Alle Libs nach ca. V2.1 sollten auch die Funktion Msleep() kennen. Diese verzögert um 1/1000 Sekunde und möchte einen 16-Bit-Parameter. Damit sind Verzögerungen bis ca. 65 Sekunden machbar.

    Gruß

    mic

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

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.04.2010
    Beiträge
    1.249
    Ja hast schon recht, war auch nicht so ernst gemeint wie es vielleicht rüberkam!!

  10. #10
    nochmals vielen dank an die Zahlreichen Beiträge
    @TobiKa sorry blicke da noch nicht so ganz durch habe zwar Grundkenntnisse von C++ aber das mit der lib ist doch etwas verwirrend dafür das man in der Praxis nichts damit zu tun hatte.

    Ich habe das nun so hin bekommen, dass es keine Fehler und Warnungen mehr gibt nach meinem ersten Programm.

    Ich habe die asuro.h Datei aus C:ASURO_src ->FirstTry gelöscht und
    die asuro.h Datei von
    C:ASURO_src -> AsuroLib-v280rc1 dort rein kopiert
    wie gesagt nun Funktioniert es oder war das jetzt nicht so ne gute Idee?

    und durch die Schleife
    Code:
    int i;
    for(i=0; i<1000; i++) sleep(72);
    geht es so wie ich es wollte vielen Dank!!!
    =D>

Berechtigungen

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