- 3D-Druck Einstieg und Tipps         
Seite 4 von 7 ErsteErste ... 23456 ... LetzteLetzte
Ergebnis 31 bis 40 von 64

Thema: Spannung auslesen

  1. #31
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Anzeige

    Praxistest und DIY Projekte
    So, das Board geht erst mal, waren nur kleine Verbindungsdenkfehler mit fataler Wirkung

    Naja, also den Code hab ich auch gerade ausgebessert und lade ihn jetzt auf den Chip.


    Fehlercode scheint auf:
    ""
    brennen ...
    benutze: mySmartUSB MK2 an com3 mit ATtiny13
    USB-Treiber installiert, aktiv (V 5.4.24.0), Port: com3
    Prozessor: ATtiny13
    schreibe 2968 Bytes in Flash-Memory ...
    Fehler: beim Überprüfen der geschriebenen Daten.
    Erste Abweichung bei Byte 0 , "0x09" != "0x01"
    ""

    Dann poste ich noch mal den korrigierten Code:

    Code:
    #define 	F_CPU 3686400	// Taktfrequenz des myAVR-Boards
    #include	<avr\io.h>		// AVR Register und Konstantendefinitionen
    #include    <inttypes.h> 
    //----------------------------------------------------------------------
    
    uint16_t readADC(uint8_t channel) 
    {
    	// Funktion 1 zum Auslesen der Spannung
    
    	uint8_t i;                   // Variablen definieren (Zählervariable i + Resultat)
    	uint16_t result = 0;
    
    	ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADPS1); //ADEN = ADC Enable 
    	// wenn adps1+2 on sind und adps0 off, dann ist der Teilungsfaktor 64 (Tabelle Datasheet)
    
    	ADMUX = channel; //Kanal wählen; REFs0+1 -> interne Referenz 2,56V verwenden, REFS1 gibt es bei Attiny13 nicht
    	//externen Kondensator mit 100nF (Aufdruck 104) an AREF auf Masse
    
    	//Dummy-Readout (unten), misst 1* Ergebnis, wird nicht gespeichert
    	ADCSRA = ADCSRA | (1<<ADSC); // Schaltet bei ADCSRA das ADSC-Bit ein, d.h. Messung starten
    	while(ADCSRA & (1<<ADSC)); //Warte bis Messvorgang vorbei ist
    
    	// Nun 3* Spannung auslesen, Durchschnittswert ausrechnen
    	for (i=0; i<3; i++) 
    	{
    		// Schleife, startet 3*
    		ADCSRA = ADCSRA |(1<<ADSC); // Einmal messen
    		while(ADCSRA & (1<<ADSC));  //Warte bis Messung vorbei
    
    		result = result + ADCW; // Resultate zusammenzählen (R1+R2+R3) -> später alles /3
    	}
    
    	ADCSRA = ADCSRA & (~(1<<ADEN)); //ADC wieder deaktivieren
    
    	result=result/3;    // Durchschnittswert
    
    	return result;
    }
    
    int main (void)						// Hauptprogramm, startet bei Power ON und Reset
    {
    	float spannung;    //Definiere Variable
    	DDRB=0b00001111;
    
    	while (true)
    	{
    
    		uint16_t result = readADC(0); // ruft die ADC Funktion auf an Pin0 =ADC0
    
    		(float) (result);
    		spannung=0.003086*result;
    		waitMs(400);
    
    		if ((spannung > 1.5) && (spannung < 1.7))
    		{
    			PORTB=PORTB|(1<<PB1);
    			waitMs(600);
    			PORTB=PORTB&(~(1<<PB1));
    		}
    		if ((spannung>1)&& (spannung<1.1))
    		{
    			PORTB=PORTB|(1<<PB2);
    			waitMs(600);
    			PORTB=PORTB&(~(1<<PB2));
    		}
    
    	else
    		{
    			PORTB=PORTB|(1<<PB1)|(1<<PB2);
    			waitMs(600);
    			PORTB=PORTB&(~(1<<PB1))&(~(1<<PB2));
    		}
    	}
    return 0;
    }
    Beide Schreibweisen funktionieren, jedoch ist letzteres besser, da es kürzer und übersichtlicher ist.
    Naja, der Verständlichkeit gegenüber Anfängern halber bevorzuge ich a=a|... statt a|=a denn zu Anfang konnte ich mir |= nicht erklären und fand es auch nirgendwo im Internet... als ich las, das ist das selbe wie =...|... war alles sofort klar!

  2. #32
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    30
    Beiträge
    656
    So, das Board geht erst mal, waren nur kleine Verbindungsdenkfehler mit fataler Wirkung
    Heißt das, dass das mit den LEDs funktioniert, und dass der µC auf jeden Fall läuft?

    Es gibt 3 Möglichkeiten, warum du den Fehler bekommst:
    1. Der µC ist defekt (verfused?)
    2. Es gibt Verbindungsprobleme.
    3. Der µC läuft nicht (evtl. zu niedrige Spannung, falscher Quarz,...)

    Könnte der µC durch deinen Verbindungsfehler kaputt gegangen sein?

    Edit:
    Noch ein Fehler:
    Das muss so heißen: spannung=0.003086*(float) (result);
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  3. #33
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Heißt das, dass das mit den LEDs funktioniert, und dass der µC auf jeden Fall läuft?
    Nein. ich habe mir einen baugleichen ATtiny13 damals gekauft, und der hat ein Blinkprogramm drauf.

    Das heißt also lediglich, dass die Kontakte nun passen.

    Der Computer hat ja nen Error ausgegeben, dh. der Chip wird nicht funzen...

    Edit: den (float) (result) habe ich jetzt geändert. Trotzdem Fehlermeldung.

  4. #34
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    30
    Beiträge
    656
    Funktioniert das Blinkprogramm? Hast du ein Indiz, dass der µC läuft?
    Wenn nein, überprüfe deine Schaltung und Verbindung, poste am besetn den Schaltplan. Tausche dann den µC aus und überprüfe, ob der µC erkannt wird.
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  5. #35
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Naja, ich nehme sehr stark an, dass der Chip läuft. Denn ich habe ihn (leider) schon ein paar mal (3-4 mal) falsch beschalten, und er ging immer noch. Spätestens das Programm neu draufbrennen und geht wieder. Nun passiert aber der Fehler beim neu draufbrennen also muss der Fehler im Code sein...

    Tausche dann den µC aus und überprüfe, ob der µC erkannt wird.
    Wer soll ihn erkennen?

    Ich habe dazu die altbewährte Minimalbesschaltung, um es einfacher zu gestalten. Also VCC auf Plus, GND auf -, PB0 und PB2 über 330 Ohm zu LED nach Ground.

  6. #36
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    30
    Beiträge
    656
    Wenn sich der Chip nicht brennen lässt, liegt der Fehler auf jeden Fall NICHT im Code, da es eine andere Sache ist, ob der Code funktioniert oder, ob der µC funktioniert.

    Dein Computer, genauer dein Programmer soll den Chip erkennen

    Wenn deine Schaltung schon einmal funktioniert hat und es plötzlich nicht mehr funktioniert, liegt es sicher am µC (also defekt), es sei denn, du hast irgendwas verändert oder deine SChaltung hat einen Wackelkontakt, Poste eben mal den Schaltplan.

    Programmierst du den µC per ISP (also direkt in deiner Schaltung) oder mit dem myMultiProg von myAVR?
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  7. #37
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von runner02

    Wer soll ihn erkennen?

    Ich habe dazu die altbewährte Minimalbesschaltung, um es einfacher zu gestalten. Also VCC auf Plus, GND auf -, PB0 und PB2 über 330 Ohm zu LED nach Ground.
    Der Reset Pin sollte mit ~ 10k auf VCC gelegt werden, sonst kann
    es passieren das der µC nicht läuft/anläuft. An dein Programm selber
    wird es kaum liegen das Dein Programmer den µC nicht findet/erkennt!
    Entweder hast Du noch Hardwahre Fehler oder der µC ist hinnüber.

    Gruß Richard

  8. #38
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Wenn sich der Chip nicht brennen lässt, liegt der Fehler auf jeden Fall NICHT im Code, da es eine andere Sache ist, ob der Code funktioniert oder, ob der µC funktioniert.
    Ich spiele mal den alten Blinkcode auf den Chip, wenn der dann geht (was ich vermute) ist noch ein Fehler im Code drinnen....

    An dein Programm selber
    wird es kaum liegen das Dein Programmer den µC nicht findet/erkennt!
    Ich habe ja schon mehrere Programme draufgebrannt, und gegangen ist alles immer. Dass er ihn erkennen sollte wusste ich nicht, klingt aber logisch...
    Wie gesagt, geklappt hats bisher trotzdem.

  9. #39
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    30
    Beiträge
    656
    Ich spiele mal den alten Blinkcode auf den Chip, wenn der dann geht (was ich vermute) ist noch ein Fehler im Code drinnen....
    Wird nicht gehen, wetten?
    meine Homepage: http://www.jbtechnologies.de
    Hauptprojekte: Breakanoid 2 - Sound Maker

  10. #40
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Es ist dem Chip und dem Programieradapter TOGALEGAL was Du
    ins Flasch schreibst, ein Programm oder "hallo". Wenn da keine oder
    eine fehlerhafte Verbindung vorliegt, klappt das nicht. Wenn der Chip
    defeckt oder dessen Fuses nicht richtig gesetzt sind klappt das auch
    nicht und Du kannst auch x mal Glück haben wenn falsch verdrahtet
    wurde bei x+1 ist er dann halt hin.

    Gruß Richard

Seite 4 von 7 ErsteErste ... 23456 ... LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress