Archiv verlassen und diese Seite im Standarddesign anzeigen : ADCC Interrupt
robby-fant
25.08.2006, 15:42
Hallo, wie kann man die ADCC-Interrupt-Routine in Bascom erstellen?
On Adc Adc_routine
Sreg.7 = 1 'alle Interrupts zulassen, geht natürlich auch der Bascombefehl, weiss den aber nicht mehr auswendig
....
....
....
Adc_routine:
Return
robby-fant
25.08.2006, 16:32
...geht nicht...
Guck dir aml das ADIF Bit aus dem ADCSRA Register an. Da muss eine "1" stehen. Zusammen mit der globalen Zulassung aller Interrupts löst es dann nach Beendung der A/D Wandlung die entsprechende ISR aus.
Datenblatt hilft sehr viel!
robby-fant
25.08.2006, 20:27
Stimmt nicht, habe den fehler gefunden!
Geht nur wenn "Nosave" oder andere Registersicherungen festgelegt werden.
Also: On Adc Adc_routine Nosave
Adc_routine:
Return
Das Datenblatt wäre hier Asche gewesen und wenn ich die ganzen 800 Seiten durchgelesen hätte.
Diese reichen aus :
Adcsr.aden = 1
Adcsr.adsc = 1
Adcsr.adate = 1
und Admux.mux0 = 1 für den ADC1
ADIF braucht gar nicht gesetzt werden. Der Radencoder läuft jetzt wunderbar.
Du irrst Dich, Nosave ist ein falscher Freund.
Die Lösung für Dein Problem ist $HWSTACK.
Du solltest mehr lesen. Z.B.: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=21482
robby-fant
25.08.2006, 23:18
Es ging darum, das Bascom eine Fehlermeldung ausgeworfen hat, die gesagt hat, das der obengenannte Befehl nicht komplett ist und das Compilieren abgebrochen hat. Nachdem ich "Nosave" hintenangestellt hatte wurde der Code compiliert.
Nosave ist ein richtiger Freund.
Du solltest dich mal mit dem Compiler auseinandersetzen.
............................................
Vermeide LOCAL Variable
Vermeide SUB mit Parameterübergabe
Vermeide Bit-Variable
Vermeide a>b, verwende a>=c oder b<a (RISC-Prozessor kennt kein größer als)
Vermeide Single/Long etc. und dazugehörige Matheoperationen (am besten nur Byte und Word)
............................................
Derjenige, der das geschrieben hat, sollte auf Winavr-c umsteigen und sich nicht mehr mit Bascom beschäftigen. Er fährt auf der falschen Wellenlänge.
Derjenige, der das geschrieben hat, sollte auf Winavr-c umsteigen und sich nicht mehr mit Bascom beschäftigen.
Du weißt selber, wer Derjenige ist.
Ich habe mir in den letzen Tagen 6 mal die Zeit genommen, in diesem Forum Deine Software-Fragen zu beantworten. :-s
Nosave ist ein richtiger Freund.
Du solltest dich mal mit dem Compiler auseinandersetzen.
Aus Deinen Codeschnipseln war nicht zu erkennen, ob Du in der ISR die Register rettest.
Viele Einsteiger vergessen dass. Bei einfach struktierten Programmen kann es passieren, dass es kurzfristig anscheinend fehlerfrei läuft...
Nachdem ich "Nosave" hintenangestellt hatte wurde der Code compiliert.
ON ADC erzwingt definitiv kein NOSAVE. Der Fehler liegt woanders. Kenne Deinen Code nicht...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.