Auswertung von ADC bei Tiny13

Gast #443307
Lesenswert?
• ▲
▼
Hallo zusammen,

ich versuche gerade ein kleines Programm für den ATTiny13 zu schreiben, 
welches auf ADC1 einen Potiwert ausliest und auf PB0,1,3,4 als 
4-Bit-Wert wieder ausgibt.

Allerdings funzt das folgende Programm nur begrenzt. Bei den Werten aus 
datenh macht es nicht das, was es soll. Ich habe im Datenblatt 
nachgeschaut: es ist ein 10bit-Wert, welcher vom ADC kommt. Hat jemand 
von euch eine Idee, was ich falsch mache?

Ich habe zur Kontrolle vier LEDs angeschlossen. Diejenigen an PB0 und 
PB1 gehen richtig. Die an PB3 und PB4 werden falsch angesteuert... :-(

  .include "tn13def.inc"      ;Definitionsdatei laden


  .def akku = r16
  .def datenl = r17
  .def datenh = r18
  .def a4 = r19
  .def a8 = r20

  .cseg          ;Beginn eines Code-Segmentes
  rjmp start
  .org 0x09
  rjmp fertig
  .org 0x0B

start:

  ldi akku, LOW(RAMEND)
  out SPL, akku

  ldi akku, 0b00000001
  out ADMUX, akku    ; ADC1 aufPB2 gewählt

  ldi akku, 0b11101000
  out ADCSRA, akku    ; ADC ein, Start, Dauer, 0, Int.
                                       frei, Teiler 2

  sbi DDRB,0
  cbi PORTB,0

  sbi DDRB,1
  cbi PORTB,1

  sbi DDRB,3
  cbi PORTB,3

  sbi DDRB,4
  cbi PORTB,4

  sei



loop:
    cpi   datenl, 64
    brsh    n1
    cbi   PORTB, 0
    cbi   PORTB, 1
    rjmp    ndatenh

n1:    cpi    datenl, 128
    brsh  n2
    sbi  PORTB, 0
    cbi  PORTB, 1
    rjmp  ndatenh

n2:    cpi    datenl, 192
    brsh  n3
    cbi  PORTB, 0
    sbi  PORTB, 1
    rjmp  ndatenh

n3:    sbi  PORTB, 0
    sbi  PORTB, 1



ndatenh:
    andi  datenh, 0b00000011
    cpi  datenh, 0
    brsh   n1h
    cbi  PORTB, 3
    cbi  PORTB, 4
    rjmp   end

n1h:           cpi    datenl, 1
    brsh  n2h
    sbi  PORTB, 3
    cbi  PORTB, 4
    rjmp  end

n2h:           cpi    datenl, 2
    brsh  n3h
    cbi  PORTB, 3
    sbi  PORTB, 4
    rjmp  end

n3h:           sbi  PORTB, 3
    sbi  PORTB, 4

end:  rjmp loop


fertig:

  in r17, ADCL
  in r18, ADCH


  reti
  .EXIT


Wäre super, wenn mir jemand einen Tip hätte, wo mein Denkfehler liegt.

Danke und Gruß
Markus

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.