hallo zusammen, ich versuche gerade den ADC zum laufen zu bekommen. atmega8, avr-studio 4.18, usbtiny2313-isp .include "m8def.inc" .def temp = r16 .def time = r17 .def null = r18 .def state = r24 .org 0x0000 rjmp main .org ADCCaddr rjmp ADC_1 main: ldi temp, LOW(RAMEND) out SPL, temp ldi temp, HIGH(RAMEND) out SPH, temp ldi temp, 0xFF out PORTD, temp ldi temp, 0b01100010 out ADMUX, temp ldi temp, 0b10000111 out ADCSRA, temp ADC_1: sbi ADCSRA, ADSC loop: sbic ADCSRA, ADSC rjmp loop in temp, ADCH out PORTD, temp rjmp ADC_1 das ganze ist wie im toturial aufgebaut nur das die ergebisse direkt auf PORTD ausgegeben werden. linksbündig, AREF=VCC, ADC2-Port, Prescaler=128 -> 62,5kHz dise version sollte auch ohne interrupt gehn, aber es kommt garnix an -.- vielleicht kann mir einer sagen warum ^^ lg Hannes
Statt ldi temp, 0xFF out PORTD, temp schreiben ldi temp, 0xFF out DDRD, temp Die Bitorgie 0b01100010 und 0b10000111 habe ich nicht aufgedröselt. Ich verwende da immer symbolische Bitnamen. > .org ADCCaddr > rjmp ADC_1 Ist vermutlich überflüssig, weil die ISR und das Anschalten des Interrupts fehlt.
Hallo, ich vermisse die Konfiguration von Port D als Ausgang. Wie soll sonst dort etwas ausgegeben werden? Der Code in "main": > ldi temp, 0xFF > out PORTD, temp schaltet lediglich die Pullup-Widerstände ein; der Port ist aber Eingang (ist Standard nach Reset). Port D als Ausgang muss heissen: ldi temp, 0xFF out DDRD, temp Der Rest der Routine sieht korrekt aus.
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.