Forum: Mikrocontroller und Digitale Elektronik TCNT1 zählt in Simulation nicht hoch!


von Steven Z. (steven84)


Lesenswert?

Hallo liebe MC Freunde,



ich werd hier noch wahnsinnig, ich initialisiere einen Timer1 und das 
Register TCNT1 zählt nicht hoch, wenn ich es in Bascom simuliere... :(
Hab ich evtl was vergessen?

Das ganze soll eine Phase and Frequency korrekte PWM werden aber dazu 
muß doch mal das TCNT1 anlaufen damit ich überhaupt was sehe denn ohne 
das nützt mir die PWM herzlich wenig.

Ich hoffe jemand weiß einen Rat!

Danke!


______________________________________________________________________

$regfile = "m8def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32

Tccr1a = &B11000001
Tccr1b = &B00000001                                         'prescaler 1
Timsk = &B00000000



Do

Loop

End

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Also bei mir läufts...
Hakerl bei Sim Timers vergessen?

von Helfer (Gast)


Lesenswert?

Das Codestück ist korrekt. Ich habe die C-Entsprechung simuliert.
1
#include <avr/io.h>
2
3
int main(void)
4
{
5
  TCCR1A = 0b11000001; // COM1A1 COM1A0 WGM10
6
  TCCR1B = 0b00000001; // Prescaler 1                                        
7
  TIMSK = 0b00000000;
8
  while(1) {
9
  }
10
}

Im AVR Studio zählt TCNT1 hoch. Allerdings kann man das nicht ohne 
weiteres beim Einzelschritt durch den C-Code sehen. Dafür ist der 
Anweisungsblock innerhalb des while zu klein. Das ist ja auf 
Assemblerebene nur ein Befehl (RJMP).
1
  LDI  R24,0xC1  ; R24 = 0b11000001
2
  OUT  0x2F,R24  ; TCCR1A = R24
3
  LDI  R24,0x01  ; R24 = 0b00000001
4
  OUT  0x2E,R24  ; TCCR1B = R24
5
  OUT  0x39,R1   ; TIMSK = (R1 = 0; AVR-GCC spezifisch)
6
LOOP:
7
  RJMP PC-0x0000 ; DO LOOP

Der Simulator scheint sich aufzuhängen. Aber wenn man ein break macht, 
sieht man eine Änderung an TCNT1. Man sieht das Hochzählen besser, wenn 
man im Disassembler-Modus simuliert.

Möglicherweise ist das gleiche Problem bei der Simulation in BASCOM 
vorhanden. Setze einfach mal eine Anweisung in die DO LOOP rein.

von Steven Z. (steven84)


Lesenswert?

Hallo danke für Eure Tipps werd das mal ausprobieren.

Es sieht wohl eher so aus, als wenn ich ein Haken vergessen habe.

Hab auch schon ein Programm simuliert, wo in der DO....LOOP Schleife ein 
Prog steht aber TCNT1 zählt auch da nicht hoch.

Ich geb auf jedenfall mal ein Feedback ;)


Danke....

von Steven Z. (steven84)


Lesenswert?

Ich habs geahnt ein verdammter Hacken, Manfred du hast den Nagel auf den 
Kopf getroffen. Danke



...jetzt kanns endlich weiter gehen...


Wünsche noch eine schöne Woche


Gruß


Steven Z.

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Super Steven,

danke auch für deine Rückmeldung

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.