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

Thema: avr-eeprom programmiern?

  1. #11
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Anzeige

    Praxistest und DIY Projekte
    Woher weist du das die Konvertierung fertig ist? So wie ich das sehe liest du unmittelbar nach dem Start aus.

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2006
    Ort
    Salzgitter
    Alter
    35
    Beiträge
    25
    achso. daran hab ich gar nicht gedacht.
    wie lang sollt ich denn nach dem start der konvertierung warten?

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Das mit dem C-Programmieren sollte auch noch etwas geübt werden,
    Edit: ich wollte ja sagen, in dei Header-Datei kommt normalerwese kein Code, da gibts die .cpp-Datei dafür,
    dann hätten wir hier auch schöne Unterforen die speziell dem Programmieren dienen, und nicht der Elektronik !

    Dann zum ADC, Du schaltest den ADC immer aus beim starten der Messung, so kann da nix rauskommen, und wie Hubert.G schon sagte, muss man noch auf das Ende der Messung warten bevor man die Werte ausliest.
    Man wartet nicht eine bestimmte Zeit, sondern bis der ADC sagt, das er fertig ist.

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2006
    Ort
    Salzgitter
    Alter
    35
    Beiträge
    25
    sorry, den einwand mit dem programmiern hab ich nich verstanden.

    ok. dass man warten, bis der adc sagt, dass er fertig ist, hab ich grad nachgelesen.
    warum schalt ich denn den adc aus, wenn ich ne messung starte?

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    am Anfang setzte Du dieses Bit zum aktivieren des ADC:
    Code:
    ADCSRA = (1<<ADEN);
    passt so,
    eine Zeile weiter setzt Du diese Bits:
    Code:
    ADCSRA = (1<<ADPS2) | (1<<ADPS0);
    da diese im gleichen Register stehen wie ADEN, dieses aber hier nicht mehr gesetzt wird, ist es 0, also wird der ADC wieder deaktiviert, genauso bei den anderen Zeilen in denen ADCSRA bearbeitet wird.

    Am einfachsten zu lösen lässt es sich wenn bei weitern Bits das Register so behandelt wird:
    Code:
    ADCSRA |= (1<<ADSC);
    wichtig ist das | vor dem =
    so bleiben alle andern Bits gesetzt die vorher schon gesetzt waren.

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2006
    Ort
    Salzgitter
    Alter
    35
    Beiträge
    25
    hm. eigentlich ganz schön logisch.
    muss ich gleich mal ausprobiern.

    danke.

  7. #17
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Am schönsten geht es meiner Ansicht nach mit dem Interrupt

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    02.01.2006
    Ort
    Salzgitter
    Alter
    35
    Beiträge
    25
    und wie gehts ohne interrupt?

  9. #19
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Also das Datenblatt eines AVR hat alle Infos die man dazu braucht, und im Wiki sind auch ziemlich viel Infos und Beispiele enthalten.


    Einfach warten bis der ADC fertig ist, das gibt das Bit ADIF in ADCSRA an, wenn das gesetzt ist, ist er fertig:
    Code:
    while (!(ADCSRA & (1 << ADIF)));	// wait for conversion complete
    danach muss man das Bit ADIF setzen, damit es gelöscht wird um ein weitersmal messen zu können.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad