PDA

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?

hacker
25.08.2006, 15:48
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...

hacker
25.08.2006, 19:09
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.

-tomas-
25.08.2006, 20:48
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.

-tomas-
27.08.2006, 11:55
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...