Kann mir bitte einer weiter helfen!!!
ich bin am durchdrehn.
Will einfach nur mit dem Timer Überlauf Interrupt den PIN B0 auf high
setzen. Ich bekomm aber keinen Interrupt.
Kann mal wer den Code kontrollieren ob ich eine Fehler drin hab?
Schreib mal für welchen Controller.
Und schmeiss die magischen Zahlen aus dem Code. Du sollst das Handbuch
wälzen und nicht die Leute, die dir helfen wollen...
...ist bäääh. Bitte gewöhne Dir an, die Bitnamen zu benutzen. Oder
willst Du, dass jeder, der helfen will, erstmal im Datenblatt
nachschlagen muss, welche Bits da überhaupt gesetzt werden und ob Du die
richtigen Bits gesetzt hast? Kein Wunder, dass Du da selbst die
Übersicht verlierst...
AVR-GCC-Tutorial lesen!
Johann L. wrote:
> Schreib mal für welchen Controller.
Naja, in dem Fall reicht es, zu wissen, dass es ein AVR ist und dass bei
keinemAVR die Timer von selbst (Werkseinstellung) laufen...;-)
Ist für nen Atmega8.
Ich ein Schulkollege hat gemeint dass es funktionieren müsste.
kann mir keiner ein Beispiel geben wies funktioniert.
Ich hab nämlich überhaupt keinen Plan mehr.
Daniel P. wrote:
> Ist für nen Atmega8.> Ich ein Schulkollege hat gemeint dass es funktionieren müsste.
Wie viele Jahre wartet Dein Schulkollege schon auf den ersten Interrupt?
> kann mir keiner ein Beispiel geben wies funktioniert.
Doch, im AVR-GCC-Tutorial stehen Beispiele drin...
> Ich hab nämlich überhaupt keinen Plan mehr.
Nicht mehr oder noch nicht?
Oh, warte mal, RUDER ZURÜCK ich seh da doch grad die Initialisierung
vom TCCR0...
ALSO: Zumindest der Timer müsste laufen...
Wie hast Du den programmiert?
Johannes M. wrote:
> Johann L. wrote:>> Schreib mal für welchen Controller.> Naja, in dem Fall reicht es, zu wissen, dass es ein AVR ist und dass bei> keinemAVR die Timer von selbst (Werkseinstellung) laufen...;-)
Sorry Jahannes, dass ich mal wieder nörgeln muss. ;-)
Der Timer wird gestartet.
EDIT: Oh, sehe gerade, dass du es schon selber gemerkt hast. ;-)
Daniel P. wrote:
> Nein hab das Oszi meines Vaters dranhängen.
Der Code ist grundsätzlich ok.
Bist du sicher, dass dein Problem in Wirklichkeit nicht ein Oszi Problem
ist? Wenn du ein Voltmeter hast, dann benutz doch dieses mal. An PB0
müssen konstant 5V anliegen. Gleich daneben, an PB1 müssen es 0V sein.
Nein das ist sicherlich kein Oszi Problem.
Da wenn ich den Port in der While schleife setze dann wird dieser auch
gesetzt. Nun müsste der Port eigentlich immer low sein und der Interrupt
diesen dann einschalten. Nur es tut sich nichts.
ich bin fertig mit den Nerven. ;-(
Daniel P. wrote:
> Nein 0 Warnings gar nix.> Zum Mäusemelken!!!!!
Das kann, mit Verlaub, nicht wirklich sein...
Also:
- Du sagst, Hardware funktioniert (getestet mit Setzen des Bits in
main() ohne Interrupt).
- Du sagst, Programm compiliert ohne jegliche Warn- oder Fehlermeldung.
Da bleibt nicht viel übrig.
- Programm für einen falschen Controller compiliert
=> würde vermutlich entweder zu Fehlermeldungen führen (unbekannter
Interrupt-Vektor, unbekannte Register etc.) oder zu einem völligen
nicht-Funktionieren des Codes führen (inklusive des Testcodes ohne
Interrupt)
- sonstige Einstellungen dürften keinen Einfluss haben, es müsste
zumindest nach recht kurzer Zeit etwas passieren...
Binde doch mal die util/delay.h ein und lasse z.B. mit _delay_ms(100) in
der main-Schleife den Portpin wackeln (mit nem XOR).
Programmierst Du Deinen Controller aus dem AVRStudio heraus? Falls ja:
Check mal in der Programmer-Dialogbox, ob auch wirklich die richtige
HEX-Datei geflasht wird. Es gab Leute hier, die den Controller nach
Fehlerberichtigungen im Code versehentlich immer wieder mit der alten
HEX-Datei programmiert haben, und sich wunderten, warum der Fehler
weiterhin auftrat.
gast wrote:
> Und ob der richtige Controller in den Projekteinstellungen steht
Johannes M. wrote:
> - Programm für einen falschen Controller compiliert> => würde vermutlich entweder zu Fehlermeldungen führen (unbekannter> Interrupt-Vektor, unbekannte Register etc.) oder zu einem völligen> nicht-Funktionieren des Codes führen (inklusive des Testcodes ohne> Interrupt)
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.