Gast
#443307
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