-         

Ergebnis 1 bis 1 von 1

Thema: Probleme beim Auslesen des Luftdruckmodules HP03 mit einem Atmega8

  1. #1
    Neuer Benutzer Öfters hier Avatar von Spitfire
    Registriert seit
    09.07.2012
    Ort
    Niederösterreich
    Beiträge
    28

    Timer richtig eingestellt ???

    Anzeige

    Hallo zusammen !!!!

    Ich möchte das Luftdruckmodul HP03 von Hope RF (bei Pollin bestellt) auslesen. Es werden die Temperatur, der Luftdruck und weitere 11 Koeffizienten ausgelesen. Temperatur, Luftdruck, und 7 Koeffizienten sind 16 bit Wörter. Die restlichen Koeffizienten sind 8 bit Wörter. Die Koeffizienten sind, mit Ausnahme von den beiden C4 und C7 im Rahmen der Vorgaben lt. Datenblatt. Bei der Temperatur bekomme ich überhaupt nur `0` als ergebnis. Wenn ich nun mit den Werten die Temperatur, bzw. den Luftdruck berechne (Zur Probe in einem Excel-Formular) kommt alles andere als nur annäherd ein richtiges Ergebnis heraus. Ich vermute, dass die ergebnisse zwar im Rahmen sind, aber vielleich noch nicht die richtigen. Da dieser Baustein neben dem SCK, und dem SDA noch einen seperaten Tackt (MCLK) mit 32 kHz benötigt, habe ich diesen an den PB1 angeschlossen, und einen Tackt mit einen Timer generiert. Leider habe ich keine Möglichkeit diesen mit einem Messgerät zu kontrollieren. Vieleich kann einer von euch meine Rechnung und die Einstellungen des Timer kontrollieren, ob ich da wirklich einen Tackt von ca. 32 kHz erhalte.
    An meinem Prozessor ist ein Quarzoszillator mit 4Mhz angeschlossen. Bei 32kHz soll der Ausgang (PB1) 32 000 mal High, und 32 000 mal Low geschalten werden. Als 64 000 mal den Zustand ändern. Der Quarzoszillator gibt 4 000 000 Tackte in der Sekunde vor. Benötigt werden aber nur 64 000. Deshalb habe ich die 4 000 000 mit 64 000 dividiert, und bin auf ein Ergebniss von 62 gekommen. Deshalb lasse ich den Timer alle 62 Tackte (0x3E) den Zustand des PB1 (High oder LOW) ändern. Liege ich mit dieser Rechnung richtig ?? Erhalte ich wirklich einen Tackt von ca 32 kHz.

    Zur Kontrolle auch noch der Programmteil für den Timer:

    Code:
    ldi temp1,HIGH(RAMEND)			;Stackpointer Initialisieren
    out SPH,temp1
    ldi temp1, LOW(RAMEND)
    out SPL,temp1
    
    main:
    
    	
    	ldi temp1,(1<<COM1A0) |(1<<FOC1A)		;csoo setzen:Teiler 1;
    	out TCCR1A,temp1
    
    	ldi temp1,  1<<WGM12 | 1<<CS10 ;CS10--> Vorteiler 1 für den Timer 1
    	out TCCR1B,temp1
    
    	ldi temp1, 0x6f
    	out icr1h,temp1
    
    	ldi temp1,0xff
    	out icr1l, temp1
    
    	ldi temp1, 0x00
    	out ocr1ah,temp1
    
    	ldi temp1,0x3E				;Den Timer nur bis 3E (62) Zählen lassen
    	out ocr1al, temp1
    Für den Teil mit icr... und ocr.. habe ich leider keine Erklätung. Ohne diese Einstellungen wird der Ausgang nicht geschalten. Das habe ich zwar nach einigem Probieren gefunden, kann aber leider nicht sagen Warum.

    Danke vorerst für die Hilfe.
    Spitfire
    Geändert von Spitfire (16.02.2013 um 12:24 Uhr)

Ähnliche Themen

  1. Gameboy Camera, Probleme bei dem Auslesen des Bildes
    Von batti112 im Forum C - Programmierung (GCC u.a.)
    Antworten: 502
    Letzter Beitrag: 30.05.2011, 11:29
  2. Ersatz des atmega8 mit einem atmega32
    Von inka im Forum Asuro
    Antworten: 102
    Letzter Beitrag: 24.01.2008, 15:00
  3. Probleme mit Powerdown beim Atmega8 mit Softclock
    Von Andree-HB im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 21.08.2007, 17:16
  4. Aufteilung und Nutzung des Flash-Roms beim Atmega8
    Von mkiehn im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 14.02.2007, 18:58
  5. Problem mit Config des Timer2 beim ATMega8 bzgl. PWM
    Von tauruz im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 11
    Letzter Beitrag: 15.03.2006, 20:28

Stichworte

Berechtigungen

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