Hi, Ich schreib euch mal wieder :-) Diesmal habe ich ein Problem mit dem ADC. Die serielle Verbindung fiunktioniert dank eurer Hilfe perfekt, nochmal Danke. Also bei dem angehängten Programm sollte der ADC eigentlich einen Interrupt auslösen und die Messwerte sollten in den Registern stehen, wenn ich aber das AVR-Studio starte und die Simulation laufen lasse bekomme ich keinen ADC-Interrupt. Was hab ich falsch gemacht? Könnt ihr mir helfen? Binomie
Hallo! > Ich schreib euch mal wieder :-) Nur zu! ;-) > Diesmal habe ich ein Problem mit dem ADC. > Die serielle Verbindung fiunktioniert dank eurer Hilfe > perfekt, nochmal Danke. > Also bei dem angehängten Programm sollte der ADC eigentlich > einen Interrupt auslösen und die Messwerte sollten in den > Registern stehen, wenn ich aber das AVR-Studio starte und die > Simulation laufen lasse bekomme ich keinen ADC-Interrupt. Was > hab ich falsch gemacht? Könnt ihr mir helfen? Sieht eigentlich soweit ok aus, das Programm (kann es jetzt leider nicht testen, da ich Windows erst neu installiert habe, werd ich aber nachholen). Hast du geschaut, ob das Bit 4 in ADCSR in der Simulation gesetzt wird, oder tut sich da garnichts? Hast du im AVR-Studio den richtigen Controller ausgewählt? Lang genug auf den Interrupt gewartet? Vielleicht funktioniert das Programm ja in "Real-Life"? Bau in der Interruptroutine halt mal einen Befehl zum LED-anschalten ein, dann siehst du ob was passiert. Ich hab mal ein kleines Programm angehängt, das den auf dem 1. Kanal eingelesenen Wert übers UART als Hex-Zahl ausgibt. Allerdings habe ich da den Free-Run-Mode aktiviert. Find ich auch viel schöner so, ohne das umständliche Interrupt-Gebastel, man kann den Wert einfach einlesen wenn man ihn braucht und muss nicht irgendwo zwischenspeichern. MfG Andreas
AVR-Studio löst keinen Interrupt vom ADC aus, da der Zeitpunkt abhängig von der Eingangsspannung und der Einstellung des Prescalers ist. Lösung: Mit ALT-F5 ein I/O-Fenster öffnen und bei A/D Converter- ADC-Controll das ADIF-Bit von Hand setzen. Dann die "Messwerte" in ADC-High und ADC-Low eintragen und Simulation starten. Achtung! Fehler in der Interrupt Vector Liste, es fehlt ein ret für INT1. Besser mit der Anweisung: .org ADCCaddr rjmp xxx Dann kann man sich auch das Schreiben der ganzen ret-Anweisungen sparen. Siehe 2333def.inc MfG Reiner
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.