Forum: Compiler & IDEs mega32 -> mega8: Auswertung des ICP geht nichtmehr


von Claas R. (cascade)


Angehängte Dateien:

Lesenswert?

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.

von risu (Gast)


Lesenswert?

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

von Stefan E. (sternst)


Lesenswert?

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.

von Claas R. (cascade)


Lesenswert?

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

von risu (Gast)


Lesenswert?

Hallo Claas,

>... 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...

ISR vs. SIGNAL ist eine Frage der WinAVR Version, nicht der AVRStudio 
Version: http://sourceforge.net/project/showfiles.php?group_id=68108

Gruß
 risu

von Claas R. (cascade)


Lesenswert?

Moin,

ich hab nun neue WinAVR Version genommen und es laeuft mit -Wall alles 
durch... und drehen tut sich der spass auch :)

Unter http://forum.mikrokopter.de/topic-5794.html gibts Bilder, Videos 
und den Source...

Vielen dank fuer die Hilfe nochmal, haettet ihr nicht gesagt das geht 
bei euch haette ich ewig den simulator angeguckt und mich geaergert...

von Falk B. (falk)


Lesenswert?

@  Claas R. (cascade)

>Unter http://forum.mikrokopter.de/topic-5794.html gibts Bilder, Videos

Das ist ja wirklich eine Propeller Uhr ;-)

Schick.

MFG
Falk

von risu (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.