Forum: Mikrocontroller und Digitale Elektronik Problem mit AVRStudio Simulator und Tiny2313?


von Nils (Gast)


Lesenswert?

Hallo,

ich bin ein bißchen mit dem Simulator (AVR Studio 4.15 Build 623) am 
verzweifeln. Und zwar geht es darum ein Input Capture Event zu 
simulieren. Ich weiß nicht ob das noch wichtig ist, aber ich verwende 
einen Tiny2313 mit GCC. Compilieren tut er ohne Fehlermeldung. Dann 
starte ich den Simulator. Alles funktioniert einwandfrei. Der Counter 
scheint auch schön zu zählen. Dann setze ich das Interrupt flag per 
Hand. Jetzt springt der Simulator schön in die Interrupt Routine. Aber 
der Counterstand wird nicht in die ICR Register geschrieben. Diese 
bleiben immer auf null. Was mache ich falsch? Hat dieses Problem schon 
mal jemand gehabt?

Dies ist meine initialisierung vom Timer1:
1
void init_timer1(void)
2
{                  
3
  TCCR1A = 0;
4
  // start Timer mit Systemtakt, steigende Flanke, noise canceller
5
  TCCR1B = (1 << ICNC1) + (1 << CS10) + (1 << ICES1);
6
7
  TCNT1H = 0;            // Counter auf null setzen
8
  TCNT1L = 0;            // Counter auf null setzen
9
  TIMSK |= (1<<ICIE1);   // Capture Interrupt freigeben
10
}

Gruss
Nils

von Michael K. (mmike)


Lesenswert?

Es kann sein dass das ein Bug des Simulator ist. Kann mich dunkel 
erinnern, dass bei den Timern manchmal nicht alles 100%ig funktioniert 
hat. Einfach mal in der Buglist nachschauen.

Grüße,
Michael

von Michael U. (amiga)


Lesenswert?

Hallo,

abgesehen davon, daß ich von der ganzen Simuliererei nicht viel halte:

Du solltest wohl eher das zugehörige Capture-Pin setzen, das sorgt für 
das Triggern der Logik und setzt dann das Interruptflag.

Egal wie gut die Simulation auch ist: das auslösende Ereignis kann ja 
nur der Pegelwechsel am Capture-Pin sein.
Zumindest bei meinen Tiny2313 ist nämlich kein Draht zum Setzen des 
Interruptflags rausgeführt. ;-)

Gruß aus Berlin
Michael

von Nils (Gast)


Lesenswert?

Ja Ja, manchmal hat man echt ein brett vorm Kopf. Genau das war es. Man 
sollte auch nur das nehmen, was man auch als echte Hardware zur 
Verfügung hat. Nachdem ich den ICP Pin gesetzt habe, hat er auch den 
Timerstand in die ICP Register geschrieben. Dankeschön.

Gruss
Nils

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.