Problem mit ADC bei AtMega2560 (assembler)

Gast #2963129
Lesenswert?
• ▲
▼
Hallo Leute :)
Ich hab vor mir einen Atmega2560. Ich möchte an ADC0 analog die Spannung 
messen, und sie binär auf Port L ausgeben. An Port L sind LED's 
angeschlossen damit ich was sehen kann.
Relevant sind nur die 8 hochwertigsten bits.

Damit es kein Durcheinander gibt soll man ja die Register ADCL und ADCH 
erst auslesen wenn der ADC mit dem Messen Rechnen etc. fertig ist.
Mit einem AtMega 8 hab ich das schon oft gemacht und da sind auch keine 
Probleme aber bei dem 2560' tauchen immer wieder neue Befehle auf wie 
STS und LDS und alte Codes und Schleifen funktionieren nicht mehr.

Ich hab da mal was gebastelt und es sieht aus als würde es 
funktionieren, aber kann da mal einer drüber sehen und mir sagen ob der 
auch wirklich in der Schleife ADC_wait wartet bis die Register ADCL und 
ADCH updatet sind ?

Mfg Christian

1
/*
2
 * ADC_übung.asm
3
 *
4
 *  Created: 19.12.2012 09:59:55
5
 *   Author: *************
6
 */ 
7

8

9
         ldi r16, HIGH(RAMEND)            ; HIGH-Byte der obersten RAM-Adresse
10
         out SPH,r16
11
         ldi r16, LOW(RAMEND)             ; LOW-Byte der obersten RAM-Adresse
12
         out SPL,r16
13

14
     ldi r16,255                          ; PORT L als ausgang
15
     STS DDRL,r16
16

17
     ldi r16, (0<<REFS1) | (1<<REFS0) | (1<<ADLAR) | (0<<MUX4) | (0<<MUX3) | (0<<MUX2) | (0<<MUX1) | (0<<MUX0)
18
     STS ADMUX,r16           ;REFEREZNSPANNUNG 5V (VCC) / Ausgabe linksbündig / Kanal0
19

20
     ldi r16, (0<<ACME) | (0<<MUX5) |(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0)
21
     STS ADCSRB,r16
22

23
     ldi r16, (1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0)
24
     sts ADCSRA,r16              ;ENABLE /  Vorteiler 128
25

26

27
loop:
28

29
          ldi r16, (1<<ADEN) | (1<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0)
30
         sts ADCSRA,r16          
31

32
         wait_adc:
33
         LDS r16,ADCSRA
34
         andi r16,0b01000000
35

36
         cpi r16,0b01000000
37
         breq wait_adc
38

39

40
         LDS r16,ADCL
41
         lds r17,ADCH
42

43
         STS portl,r17
44

45
rjmp loop

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.