ADC bei Attiny13 funktioniert nicht

Gast #1871356
Lesenswert?
• ▲
▼
Hallo Leute

Ich habe folgender Code geschrieben (siehe unten) und er funktioniert 
nicht.
Habe schon 2 Tag rumgetüftelt und es geht einfach nicnt. Ich wil eine 
Analoge Spannung bei Port 4 einlesen und dann auf PortB ausgeben.
Ist nur einen Test. Mir ist auch klar das der Controller auch zwischen 
verschieden Werten umher schaltet. Aber die höchsten bbit sollten ja 
stehen bleiebn.

Aber es geht nichts! Warum ?

Kann mir jemand auf die Sprünge helfen ?

Besten Dank


.include  "tn13def.inc"

begin:  rjmp  main  ; 1 Reset Handler
  reti    ; 2 INT0 IRQ0 Handler
  reti    ; 3 PCINT0 Handler
  reti    ; 4 TIM0_OVF Timer0 Overflow Handler
  reti    ; 5 EE_RDY EEPROM Ready Handler
  reti    ; 6 ANA_COMP Analog Comparator Handler
  reti    ; 7 TIM0_COMPA Timer0 Compare A Handler
  reti    ; 8 TIM0_COMPB Timer0 Compare B Handler
  reti    ; 9 WDT Watchdog Time-out Handler
  reti    ;10 ADC Conversion Complete Handler

;----------------------------------------------------------------------- 
-
; Initialisierungen
;----------------------------------------------------------------------- 
-
main:
;--- Stack Initialisierung ---
  ldi  r16,low(RAMEND)
  out  SPL,r16
; Ports initialisieren
  sbi  DDRB,0  ; PORTB0 auf Ausgang
  sbi  DDRB,1  ; PORTB1 auf Ausgang
  sbi  DDRB,2  ; PORTB2 auf Ausgang
  sbi  DDRB,3  ; PORTB3 auf Ausgang
  sbi  DDRB,4  ; PORTB4 auf Ausgang

; ADC initialisieren
  ldi  r16,0b00100010; Port, Referenzspannung und Auflösung
  out  ADMUX,r16
  ldi  r16,0b10000100  ; Modus, Interrupt und Start
  out  ADCSRA,r16

;----------------------------------------------------------------------- 
-
; Hauptprogramm-Schleife
;----------------------------------------------------------------------- 
-
mainloop:  wdr
  rjmp  getValueADCandWait
  out  PORTB,R16
  rjmp  mainloop  ; Sprung zum Beginn der Hauptprogrammschleife
;--------------------------------------------------------------------
; getValueADCandWait - Digitalisiert einen Analogwert und wartet auf das 
Ergebnis
; PA: r16 = Ergebnis
;--------------------------------------------------------------------
getValueADCandWait:
  sbi  ADCSRA,6  ; Start ADC
getValueADCandWait1:
  sbic  ADCSRA,6  ; Test ob fertig
  rjmp  getValueADCandWait1  ; wenn nicht fertig
  ldi  r16,ADCH  ; Einlesen des Analogwertes
  ret

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.