mega32 -> mega8: Auswertung des ICP geht nichtmehr

OP #976822
Moin,

ich bin noch recht neu mit AVR Programmierung aber hab schon quasi das 
Hello-World der AVR-Welt umgesetzt (siehe angehaengtes Bild).

Nun wollte ich von dem Mega32 aus der Bastelkiste auf einen Mega8L 
umziehen, eigentlich ja nicht das Problem dachte ich.

Vorher hatte ich an PORTC die 8LEDs haengen und einen HALL-Sensor am ICP 
vom Mega32, also PD6.

Nun wollte ich die LEDs an PORTD haengen und den HALL an PB0.

Dafuer muesste ich ja >nur< die Ausgaben der LED-Stellungen aendern, 
denn Init vom Capture Pin solle ja gleich bleiben.

Jedoch kann ich den PB0 so oft im Sim rumklicken wie ich will, ich lande 
nie in meinem Interrupt-Handler :(

Hier mal das wichtige bevor man sich in meinem verworrenen Code 
verlaeuft:
1
SIGNAL(SIG_INPUT_CAPTURE1)
2
{
3
  //[lots of useless code]
4
  TCNT1 = 0;              // timer reset, das sollte man sehen im Sim
5
  //[a lot more of useless code]
6
}
7

8
int main(void)
9
{
10
    sei();                // Interrupt aktivieren
11
    TCCR1B = (1<<ICES1)  | (1<<CS10);   // Input Capture Edge, kein PreScale, kein CTC Mode
12
    TIMSK = (1<<TICIE1) | (1<<TOIE1);    // Interrupts akivieren, Capture + Overflow
13

14
   DDRB = 0x00;            // Set up PortB (MEGA8) da PB0 der ICP ist einfach alle auf EINGANG
15

16

17
    while(1)
18
    {
19
      //[code galore]
20
    }
21
}

Wie gesagt, mitm Mega32 laeuft sowohl aufm AVR als auch im Sim. Da kann 
ich den PD6 togglen und sehe das der Timer dann wunderbar auf 0 gesetzt 
wird. Mit Mega8 bekomme ich das nicht hin.
Ich les seit 3Std hier im forum und ueberall da wo google mich hinwirft 
aber ich bekomms nicht hin.

Waere super falls jemand dazu ne Idee hat.
Angehängte Dateien:
Gast #976900
Hallo,

außer dass "sei();" am Ende der vollständigen I/O+SFR-Initialisierung 
stehen sollte (in Deinem Beispiel also direkt vor dem "while(1)"), sehe 
ich keine Probleme mit Deinem Code. Mit der Dezember 2007 WinAVR Version 
("SIGNAL" dafür natürlich durch "ISR" ersetzt!) und AVRStudio v.4.14 
lässt sich Dein Code auch korrekt simulieren.

Gruß
 risu
#976903
Du hast den Overflow-Interrupt freigeschaltet, aber keine ISR dafür. 
Wahrscheinlich kommt jetzt:
"Doch, ich habe eine Overflow-ISR, nur nicht gepostet."
In dem Fall liegt der Fehler auch irgendwo im "nicht gepostet", denn der 
Codeschnipsel oben, ergänzt durch eine leere Overflow-ISR, funktioniert 
im Simulator einwandfrei.
OP #977172
Morgen Leute,

vielen Dank. Ich hab den Fehler jetzt gefunden, oh Gott ist das 
peinlich...

Ich hab zwr im Project Config auf Atmega8 umgestellt aber der Simualtor 
hatte unten noch Mega8 stehen. Dann laeuft der ganze kram natuerlich 
auch nicht so wie man will. Ich hab eben einfach neues Projekt und den 
Code eingefuegt und es laeuft.

Werft Steine, es ist peinlich :)

Aber danke, ich lad nebenbei mal die neue AVR-Studio (man ist der Server 
lahm) evtl hab ich dann auch aktuelleren Code irgendwann was SIGNAL vs 
ISR angeht etc...

MFG
Claas
Gast #979438
Hallo Claas,

danke für die Rückmeldung: Nett, dass Du uns das Ergebnis mitgeteilt 
hast und der Thread nicht einfach im Sande verläuft.

Weiter viel Spaß und Erfolg!

Viele Grüße
         risu

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.