- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: adc-wert regelmässig auslesen mit interrupt

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    53
    Beiträge
    2.236
    Anzeige

    Powerstation Test
    SFIOR &= ~(1<<ADTS0) | (1<<ADTS1) | (1<<ADTS2);

    was ist das.
    habe es nicht eingesetzt, es läuft trotzdem automatisch mit dem interrupt.
    Es wird so sein:

    Alle Register haben beim einschalten den Wert 0x00

    und
    SFIOR &= ~(1<<ADTS0) | (1<<ADTS1) | (1<<ADTS2);
    setzt die Bits ADTS0 ADTS1 ADTS2 auf null.

    Mithin setzt Du null auf null, ist zwar blöd, aber ich mach es immer so, man weiß ja nie,
    und außerdem sieht man im Programm daß die Bits auf Null stehen müssen um Freerun einzuschalten.

    Deswegen wird es auch ohne diese Zeile Funktionieren.

    Gruß Sebastian

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    ich möchte auch zu dem radencoder an mux1(adc2) noch 2 weitere adc auslesen und zwar für 2x sharpsensoren (sind an adc0 und adc1).
    was muss in der main() in dem aufruf geändert werden und was in der signal-routine, oder kann man die 2xsharp auch ohne signal(sig_adc) abfragen, nur in der main() mit dem jetzigen code.

    SIGNAL (SIG_ADC)
    {
    ADMUX = (1<<REFS0) | (1<<MUX1);
    adc2_wert = ADC;
    if ((adc2_wert >400) &&( toggle==1))
    {
    radzaehler++;
    toggle=0;
    }
    if ((adc2_wert <100) &&( toggle==0))
    {
    radzaehler++;
    toggle=1;
    }
    }



    int main(void)
    {

    cli();
    ADCSRA=(1<< ADEN) | (1<<ADATE) | (1<<ADIE) | (1<<ADSC) |
    (1<<ADPS0) | (1<<ADPS1) | (1<<ADPS2);
    sei();
    }

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2005
    Beiträge
    219
    Lies das verdammte Handbuch! Da steht dass alles haarklein drin

    SIGNAL (SIG_ADC)
    {
    ADMUX = (1<<REFS0) | (1<<MUX...);

    immer schön das MUX anpassen, je nachdem was du auslesen willst.

    Allerdings braucht der A/D -Wandler u.U. noch einen (bereits begonnenen) Zyklus bis der Kanal umgeschalten wird.
    Aber ich meine mich erinnern zu können, dass der Kanal sofort umgeschalten wird, wenn der alte Wandel-Zyklus noch nicht beendet ist (ADC noch nicht ausgelesen)

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    hallo :
    #define ADMUX _SFR_IO8(0x07)
    #define MUX0 0
    #define MUX1 1
    #define MUX2 2
    #define MUX3 3
    #define MUX4 4
    #define ADLAR 5
    #define REFS0 6
    #define REFS1 7

    mux4 ist demnach der 6. pin von adca , wie spreche ich den 7. und 8. pin von adca an.
    mfg pebisoft

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hi,
    gelegentlich hilft es ins Datenblatt zu guggen,
    in diesem nach dem Register ADMUX zu suchen,
    die folgenden Zeilen beschreiben die Verwendung von MUX0..4

    HTH

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress