- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: LEDs mit Poti zuschalten über µC

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Hallo,
    Also ich habe nun ein Paar Versuche gemacht und dabei ist mir aufgefallen, dass selbst wenn ich den text von oben 1:1 in mein geany schreibe, geany alles rot unterstreicht und die konvertierung verweigert. Ligt das an geany??

    MfG
    Michael
    Meine eigene cnc-Fräse:
    mihuno.oyla3.de

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Kann der geany (weiss nur das es ein Editor ist) für den AVR kompilieren?
    Ich nehme mal an das er mit dem Code einfach nichts anfangen kann.
    Geändert von Hubert.G (27.11.2012 um 21:37 Uhr)
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Hallo,

    Ja das Kompilieren funktionierte bisher mit meinen einfachen if-else programmen immer unter geany. sollte ich mal einen anderen editor verwenden? falls ja, was wird empfohlen?

    MfG
    Michael
    Meine eigene cnc-Fräse:
    mihuno.oyla3.de

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.02.2012
    Beiträge
    127
    Mit Geany kannst auch für die µC's compilen, man muss halt dafür'n paar Einstellungen zurechtbasteln und des avr-gcc draufhaben.

  5. #5
    Hallo,

    Also ich habe mich in den letzten Tagen dann nochmal an das Projekt gesetzt und nun kann ich erfolge vermerken:

    #include "avr/io.h"
    #include "util/delay.h"
    #include "stdlib.h"
    #include "avr/interrupt.h"
    #include "stdio.h"

    int main (void) {

    DDRD = 0xff; //DDRD alle Pins Ausgang
    ADMUX = 0x40; // Avcc=Referenz--> AVCC geschalten wie
    // im datenblatt seite 196, abbildung 96, Rechtsbündig, PC0 gewählt
    ADCSRA = 0x83; // ADC eingeschaltet, Taktung/8

    while(1)
    {
    ADCSRA |= (1<<ADSC); // start conversion

    if(ADCW<=200)
    {
    PORTD |= (1<<PD5);
    PORTD &= ~(1<<PD6);
    }
    else
    {
    PORTD |= (1<<PD6);
    PORTD &= ~(1<<PD5);
    }
    }
    return 0;
    }

    //das war ja einfach

    Ach ja: Ich habe den atmega16 aus versehen geschrottet, indem ich die internen 2,5V referenz eingeschalten habe und ihn extern mit 5V bestromt habe deswegen ist dieses Programm für einen Atmega8. beim atmega16 müsste das programm aber eigendlich nahezu gleich aussehen

    PS: ich habe noch ein Programm geschrieben, wo der controller mehrere messwerte nimmt und dann den durchschnitt errechnet, um messfehler zu verringern. das programm wird demnächst folgen

    MfG
    Michael
    Meine eigene cnc-Fräse:
    mihuno.oyla3.de

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    34
    Beiträge
    1.192
    Hallo,
    erst mal Glückwunsch, dass es soweit funktioniert
    Ich würde noch empfehlen, nach "start conversion" zu warten, bis der AD-Wandler wirklich fertig ist.
    Das geht mit
    Code:
        while(ADCSRA & (1<<ADSC));    //Warte bis Wandlung wirklich fertig ist
    Wenn du es wiederverwendbar programmieren möchtest, kannst du aus deiner Analog-Wandler-Routine eine Funktion (Methode) machen, die du immer wieder aufrufen kannst.
    Grüße, Bernhard

  7. #7
    Hallo,

    Na diese berichtigung nehme ich gerne an und baue sie noch schnell in mein programm ein:

    #include "avr/io.h"
    #include "util/delay.h"
    #include "stdlib.h"
    #include "avr/interrupt.h"
    #include "stdio.h"

    int main (void) {

    DDRD = 0xff; //DDRD alle Pins Ausgang
    ADMUX = 0x40; // Avcc=Referenz--> AVCC geschalten wie
    // im datenblatt seite 196, abbildung 96, Rechtsbündig, PC0 gewählt
    ADCSRA = 0x83; // ADC eingeschaltet, Taktung/8

    while(1)
    {
    ADCSRA |= (1<<ADSC); // start conversion
    while(ADCSRA & (1<<ADSC)); //Warte bis Wandlung wirklich fertig ist

    if(ADCW<=200)
    {
    PORTD |= (1<<PD5);
    PORTD &= ~(1<<PD6);
    }
    else
    {
    PORTD |= (1<<PD6);
    PORTD &= ~(1<<PD5);
    }
    }
    return 0;
    }


    Und wie versprochen noch das programm, das den wert öfters misst und dann mit dem durchschnittswert arbeitet. in meinem Fall wird 30x gemessen und dann der errechnete endwert ausgegeben:
    #include "avr/io.h"
    #include "util/delay.h"
    #include "stdlib.h"
    #include "avr/interrupt.h"
    #include "stdio.h"

    int main (void) {

    uint8_t durchlaufzaehler=0; //zählt die durchgänge
    uint16_t messwerte=0; //messwerte werden hier abgespeichert
    uint16_t endwert=0; //errechneter endwert

    DDRD = 0xff; //DDRD alle Pins Ausgang


    while(1)
    {
    for(durchlaufzaehler=0;durchlaufzaehler<30;durchla ufzaehler++) //diese schleife wird 30x durchlaufen
    {
    ADMUX = 0x40; // Avcc=Referenz--> AVCC geschalten wie
    // im datenblatt seite 196, abbildung 96, Rechtsbündig, PC0 gewählt
    ADCSRA = 0x83; // ADC eingeschaltet, Taktung/8
    ADCSRA |= (1<<ADSC); // start conversion
    while(ADCSRA & (1<<ADSC)); //Warte bis Wandlung wirklich fertig ist
    messwerte+=ADCW; // aufsummierung der messwerte
    }

    endwert=messwerte/30; //durchschnitt errechnen

    if(endwert<=200)
    {
    PORTD |= (1<<PD5);
    PORTD &= ~(1<<PD6);
    }
    else
    {
    PORTD |= (1<<PD6);
    PORTD &= ~(1<<PD5);
    }
    }
    return 0;
    }
    so, ich denke damit kann so mancher anfänger was anfangen
    Geändert von frankensteins-freund (23.12.2012 um 11:53 Uhr)
    Meine eigene cnc-Fräse:
    mihuno.oyla3.de

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 19.11.2006, 19:52
  2. Antworten: 7
    Letzter Beitrag: 12.07.2006, 00:52
  3. Motor über Poti steuern
    Von FoCus im Forum Elektronik
    Antworten: 22
    Letzter Beitrag: 11.07.2006, 12:12
  4. getriebemotor über poti ansteuern
    Von RedEagle667 im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 22.08.2005, 06:49
  5. Poti über uC Steuern
    Von Superhirn im Forum Sensoren / Sensorik
    Antworten: 8
    Letzter Beitrag: 28.04.2005, 16:22

Berechtigungen

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

12V Akku bauen