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
Dein Programm verstehe ich nicht. Warum nimmst Du nicht einfach linksbündige ADC-Werte, schiebst ADCH 4x nach rechts und schreibst die 4 verbleibenden Bits auf PORTB ?
weil ich bei PortB nur 0,1,3,4 zur Verfügung habe, um die Werte auszugeben...
Vielleicht ist es nützlich, unter n1h und n2h das richtige Datenbyte zu befragen ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.