HI, ich danke allen, die mir geholfen haben. Ich habe mir nochmal das Datenblatt angeguckt. Ich denke ich verstehe jetzt sehr gut, wie das ganze Teil funktioniert. Aber leider kriege ich von dem ADC keinen Wert. Weiss jemand, warum das nicht funktioniert? Ich habe den ADC so eingestellt das er im Freilaufenden MODUS arbeitet und der Teilungsfaktor beträgt 8. (1MHz / 8 = 125kHz) Ich habe einfach nur zum Test an PortB 8 LEDs angeschlossen und an PIN 20(ADC0) einen Potenziometer mit 100kOhm das an +5V und Masse angeschlossen ist. Mein Assembler-CODE sieht so aus: .include "tn26def.inc" LDI r16, 0b11111111 OUT DDRB, r16 LDI r16, 0b00000000 OUT ADMUX, r16 LDI r16, 0b11100011 OUT ADCSR, r16 LOOP: IN r16, ADCL IN r17, ADCH ADD r16, r17 OUT PORTB, r16 RJMP LOOP Habe ich was vergessen? Sencer.
Das habe ich einfach nur zur Sicherheit in den CODE geschrieben, damit die LEDs auch wirklich was anzeigen.
komische Sicherheit, du addierst da zwei 8 Bit Register, von denen eines aber eigentlich eine höhere Wertigkeit hat. Das ergibt einfach recht wenig Sinn...
Naja, sollte wieso nur ein Test-Code sein. ADCL beinhaltet 8 bits und das andere Register 2 bits. Was ist den nun mein fehler oder was habe ich vergessen?
Hi! Mach mal alles am ADC0 weg und probier mal folgendes: Von +5V zum ADC0 (Pin 20) einen Widerstand mit 10K. Das Poti machst Du vom ADC0 zur Masse. Je höher der Widerstand am Poti je höher der ADC-Wert. Den Code probierst Du mal wie folgt: .include "tn26def.inc" LDI r16, 0b11111111 OUT DDRB, r16 LDI r16, 0b00100000 ;ADLAR-Bit setzen. OUT ADMUX, r16 LDI r16, 0b11100011 OUT ADCSR, r16 LOOP: IN r16, ADCH ;ADC-Bits 2 - 9 sind jetzt in R16 COM r16 ;Dadurch leuchtet eine LED wenn ein ADC-Bit 1 ist. OUT PORTB, r16 RJMP LOOP Durch das setzten von ADLAR auf 1 sind die ADC-Bits 2 - 9 in ADCH und 0 und 1 in ADCL an den Bit-Nr. 6 und 7 (left adjusted). Gruß Andi
Es funktioniert tadellos. Mit meinem CODE hätte es bestimmt auch funktioniert, ich habe einfach nur vergessen, das Bit7 an PORTB gleichzeitig der RESER PIN ist. Das wurde über die LED auf Masse gelegt. MASSE = Programmier MODUS. Anfänger fehler... Naja, jetzt geht es. Danke für deine Hilfe.
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.