INT0 ISR Zeitversatz, für Startbiterkennung per Flanke von 1-wire Software UART

Gast #1748675
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe ein Problem mit dem Zeitversatz von einer Flanke am INT0 
Eingang zur Ausführung der INT0 ISR.

Anwendung: Eine Software UART über einen Pin des uC. Die fallende Flanke 
soll das Startbit erkennen und danach den Timer0 passend triggern.

uC: ATTiny45 @ 8 MHz, Clock prescaler ist 0

ISR'en: nur INT0 aktiv, alle anderen sind auskommentiert.


Hier meine Einstellungen:
1
// Set to falling edge
2
ClearBit(MCUCR, ISC00); 
3
SetBit(  MCUCR, ISC01); 
4

5
// Clear INT0 Flag
6
SetBit(GIFR, INTF0); 
7

8
// Enable INT0 Interrupt
9
SetBit(GIMSK, INT0);

bzw. die ISR:
1
ISR ( INT0_vect )
2
{
3
  char cSREG;
4
  cSREG = SREG; /* store SREG value */
5
  
6
  PORTB ^= (1<<PORTB0);
7

8
  SREG = cSREG; /* restore SREG value (I-bit) */
9
}


Das Problem ist, dass ich einen Zeitversatz von der Flanke zum togglen 
des Ports von 240us habe.

Auch der ASM Code im Lss file sieht nicht wirklich viel aus.

Somit kann ich nicht verstehen, warum der uC 1920 Ticks braucht um den 
Port zu tooglen.


Leider konnte ich diesbezüglich nichts im Tutorial oder bei google 
finden. Ist das Verhalten normal oder hab ich etwas vergessen?


Gruß
Daniel
#1748759
Lesenswert?
• ▲
▼
Daniel schrieb:

>
1
> ISR ( INT0_vect )
2
> {
3
>   char cSREG;
4
>   cSREG = SREG; /* store SREG value */
5
> 
6
>   PORTB ^= (1<<PORTB0);
7
> 
8
>   SREG = cSREG; /* restore SREG value (I-bit) */
9
> }
10
>

Lass das SREG in Ruhe!
Darum kümmert sich schon der Compiler. Das ist nichts was dich als C 
Programmierer etwas angehen würde.

> Somit kann ich nicht verstehen, warum der uC 1920 Ticks braucht um den
> Port zu tooglen.

Kompletten Code
Gast #1748852
Lesenswert?
• ▲
▼
Danke für die Ratschläge.


Problem hat sich gelöst, es lag an der Eingangsbeschaltung. Ein 
Kondensator hatte aus meiner Flanke einen Aufladefkt gemacht.


Somit sind es nun nur noch 2 us ohne den C.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.