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
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
Ich würde ja gern die Welt verändern..., doch Gott gibt mir den Quellcode nicht!
...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!
Ich würde ja gern die Welt verändern..., doch Gott gibt mir den Quellcode nicht!
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/ze...ag.php?t=21482
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.
Du weißt selber, wer Derjenige ist.Zitat von robby-fant
Ich habe mir in den letzen Tagen 6 mal die Zeit genommen, in diesem Forum Deine Software-Fragen zu beantworten.
Aus Deinen Codeschnipseln war nicht zu erkennen, ob Du in der ISR die Register rettest.Zitat von robby-fant
Viele Einsteiger vergessen dass. Bei einfach struktierten Programmen kann es passieren, dass es kurzfristig anscheinend fehlerfrei läuft...
ON ADC erzwingt definitiv kein NOSAVE. Der Fehler liegt woanders. Kenne Deinen Code nicht...Zitat von robby-fant
Lesezeichen