www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC mit 8535 und UART


Autor: Thorsten Schmidt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich wollte mit dem angehängten Programm den ADC vom AVR 8535 testen.

Es soll einfach nur ein Wert auf Channel 0 im Free Running Mode
eingelesen werden und über das Uart ausgegeben werden.(ich geb einfach
nur das low Byte aus um zu sehen ob überhaupt was funktioniert)
Nur leider tut es das nicht.
Ich hab das ganze mit dem AVR-Studio 4.0 und VMLab simuliert.
Und auch real auf dem Prozessor, das UART Register wird aber nicht
aktualisiert.
Es läuft alles Perfekt bis zur Zeile

out UDR, lADC    ;Low Byte des ADC Wertes ausgeben (nur zu
Testzwecken)

Kann mir da jemand weiterhelfen warum UDR nicht aktualisiert wird?

Autor: Thorsten Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier nochmal das Programm mit dem Anhang hat irgendwie nicht geklappt.


.include "8535def.inc"



.def temp = r16
.def hADC = r17
.def lADC = r18


.cseg
rjmp  Initial  ; nach RESET zum Hauptprogramm
reti          ;External Interrupt0 Vector Address
reti          ;External Interrupt1 Vector Address
reti          ;Timer2 compare match Vector Address
reti          ;Timer2 overflow Vector Address
reti          ;Timer1 Input Capture Vector Address
reti          ;Timer1 Output Compare A Interrupt Vector Address
reti          ;Timer1 Output Compare B Interrupt Vector Address
reti          ;OverflowTimer1 Interrupt Vector Address
reti           ;OverflowTimer0 Interrupt Vector Address
reti          ;SPI Interrupt Vector Address
reti            ;UART Receive Complete Interrupt Vector Address
reti            ;UART Data Register Empty Interrupt Vector Address
reti          ;UART Transmit Complete Interrupt Vector Address
rjmp Analog      ;ADC Conversion Complete Interrupt Vector Address
reti          ;EEPROM Write Complete Interrupt Vector Address
reti             ;Analog Comparator Interrupt Vector Address







Analog:

in hADC,ADCH
in lADC,ADCL
reti






Initial:

;Stackpointer initialisieren
ldi temp, LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse
out SPL, temp
ldi temp, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse
out SPH, temp

ldi temp,8000000/(9600*16)-1   ;Baudrate 9600 einstellen
out UBRR,temp
sbi UCR,TXEN                   ;TX aktivieren



ldi temp,0b11101110              ;ADC aktivieren free running mode
Interrupt aktiviert
out ADCSR,temp                 ;Vorteiler 64

ldi temp,0b00000000              ;ADC Channel wählen Channel=0
out ADMUX,temp





sei                            ;Interrupsts Global freigeben


main:
sbis UBRR,UDRE   ;Warten, bis UDR bereit ist
rjmp main
out UDR, lADC    ;Low Byte des ADC Wertes ausgeben (nur zu
Testzwecken)
rjmp main

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.