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?
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
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.