Forum: Mikrocontroller und Digitale Elektronik Signale an INT0 pin und Programmierung ATTiny45


von Conny G. (conny_g)


Lesenswert?

Hi,

habt ihr Erfahrung oder Vorschläge zu folgendem Problemchen:

ich benutze einen ATTiny45 um ein Funksignal empfangen.
Das Funksignal wird über einen Schmitt aufbereitet und an INT0 angelegt, 
bei jedem INT0 prüft meine Empfangsroutine ob das Bit-Timing stimmt und 
speichert es ggf. ab oder resettet den Eingangspuffer.
Ziel ist es eine definierte Präambel zu empfangen und dann weiter zu 
machen.

Nun ist es so, dass an dem INT0 ständig Signale kommen vom üblichen 
Grundrauschen des Funksignals.

Das hat nun allerdings zur Folge, dass ich zum Programmieren des ATTiny 
das Signal nicht anliegen lassen kann, weil es sonst dazwischenfunkt und 
die Programmierung nicht klappt (INT0 = SCK des SPI ports), ich muss 
also auf dem Breadboard immer das Kabelchen abziehen.

Erstens nervt das und zweitens kann ich so keine Produktionsschaltung 
auf echter Platine draus machen, also suche ich nach einer eleganten 
Lösung wie ich das Signal am INT0 stoppen kann für die Zeit des 
Programmierens.

Ich hätte so Ideen wie:
Eine NE555 Timerschaltung wird vom RESET-Signal ausgelöst und fängt z.B. 
über einen Transistor das Signal am INT0 ab.
Oder der Schmitt wird über den NE555 mit Strom versorgt und dann 
abgeschaltet, wenn die RESET line den NE555 Timer triggert.
Oder dasselbe statt Timer mit Flipflop und der ATTiny schaltet quasi den 
Funkempfang aktiv ein.

Ich gehe dabei davon aus, dass das RESET Pin nur kurz gesetzt wird und 
nicht während des gesamten Programmiervorgangs an bleibt. Sonst wäre es 
ja etwas einfacher als Timer oder Flipflop.

Da mir das obige aber alles etwas aufwändig vorkommt ... geht's 
einfacher, eleganter?

VG,
Konrad

von Karl H. (kbuchegg)


Lesenswert?

Konrad G. schrieb:

> Ich gehe dabei davon aus, dass das RESET Pin nur kurz gesetzt wird und
> nicht während des gesamten Programmiervorgangs an bleibt.

Doch, das ist so.

Der Programmer zieht RESET auf Low.
Dann programmiert er.
Und wenn er fertig ist, gibt er den RESET wieder frei und der 
eigentliche µC läuft wieder an.

Kannst du natürlich ausnutzen :-)

von Conny G. (conny_g)


Lesenswert?

Ha! Danke! Das ist schon mal cool.
Trotzdem ... was mach ich dann am elegantesten?
Wie kann ich mit meinem RESET Signal am einfachsten und solidesten den 
Schmitt
(Texas Instruments SN 74 HC 14 N) ausser Gefecht setzen?
Das RESET mit auf's Eingangssignal beim Schmitt schalten oder sowas 
ähnliches?
Oder brauch ich einen NAND/Komparator dazwischen?

Wie man merkt bin ich noch nicht ganz sattelfest in der Elektronik ... 
gefährliches Halbwissen sozusagen.

VG,
Konrad

von Conny G. (conny_g)


Angehängte Dateien:

Lesenswert?

So, heftig nachgedacht, das wär jetzt mein Konzept mit der Bitte um 
Kommentare.

Ein NPN-Transistor hängt über einen 10k Vorwiderstand am RESET Pin, der 
Emitter ist mit GND verbunden, der Kollektor an GND des Schmitt Trigger 
IC und über einen 2,2k Widerstand mit VCC. VCC des Schmitt an VCC.

Das soll nun funktionieren wie folgt:

1. RESET Pin auf HIGH (Normalzustand)
- Transistor leitend, Kollektor-Emitter-Widerstand = Null, die gesamte 
Spannung fällt am R2 ab, der Schmitt wird mit Spannung/Strom versorgt.

2. RESET Pin auf LOW (Programmierung)
- Transistor sperrt, CE-Widerstand = unendlich, die gesamte Spannung 
fällt am Transistor ab, keine Spannung an R2, Schmitt wird nicht mit 
Spannung versorgt.

Infolgedessen kommt während RESET am Pin INT0 = SCK des ATTiny kein 
Funksignal mehr an und der ISP kann in Frieden programmieren.

Mir fällt nur gerade auf, dass der R2 evtl. höher sein könnte (10k? oder 
100k?), sonst fliesst dort zuviel Strom, gehe davon aus, dass der 
Schmitt wenig Strom braucht (ah ja, 20 uA) also vergleichsweise recht 
"hochohmig" ist ggü den R2.

Was haltet ihr davon?

Als Transistor den BC547B?  Hab ich als kleinsten grad da, der bräuchte 
wohl nicht viel Verstärkung und nicht viel Kollektorstrom. Was würdet 
ihr nehmen?

VG,
Konrad

von Peter D. (peda)


Lesenswert?

Das geht so nicht, der HC14 kann kein Tristate.

Schalte einfach 4,7k in Reihe zum HC14 Ausgang.
Der Programmer überschreibt dann das Signal am 4,7k.

Peter

von Conny G. (conny_g)


Lesenswert?

Hallo Peter,

danke. So einfach, einfach einen Widerstand!? Genau sowas hab ich 
gesucht.

Tristate: das stimmt, das kann der Schmitt nicht, so hatte ich das auch 
nicht gedacht. Ich wollte ihm einfach mit dem Transistor den Strom 
abdrehen, d.h. wenn RESET auf LOW geht sperrt der Transistor und der 
Schmitt bekommt keine Versorgungsspannung mehr.
Geht das nicht?
Du meintest den Ausgang des Schmitt via Tristate "busfähig" machen, 
oder?

Hab das mit dem Transistor heut Nacht auch noch kurz ausprobiert, ging 
erstmal nicht.
Meine Schaltung hatte noch einen Fehler, das RESET Pin soll lt. Atmel 
Application Notice einen Pullup bekommen.
Danach ging es noch nicht und zwar deshalb, weil die Spannung des 
Schmitt nur auf um die 3,x V gezogen wurde. Nach Verkleinerung des 
Vorwiderstands gings, aber unzuverlässig - mal schon, mal nicht. 
Niedrigste Spannung am Schmitt Trigger IC 2,xV, aber nicht immer 
komischerweise.

Wenn allerdings ein Widerstand reicht, dann kann ich mir das alles 
sparen.
Trotzdem interessiert es mich, wie es mit dem Transistor richtig geht.

VG,
Konrad

von Conny G. (conny_g)


Lesenswert?

... nur zum Verständnis: ich könnte statt dem Widerstand auch einen 
Tristate-Buffer zwischenschalten oder, genau dafür sind die da?

Damit wäre die Lösung mit dem Widerstand die einfachstmögliche 
"elektrische" Lösung, der Tristate-Buffer die digitalelektronische und 
meine Transistorlösung ein "Hack"? :-)

VG,
Konrad

von Route_66 H. (route_66)


Lesenswert?

Konrad G. schrieb:
> meine Transistorlösung ein "Hack"? :-)

Hallo!
Eher wohl Dreck statt Hack! Man macht ein IC nicht unsichtbar, indem man 
ihm seine Betriebsspannung klaut - schon gar nicht über GND. Je nach 
Innenschaltung führt das zu ungeahnten Effekten.

von Conny G. (conny_g)


Lesenswert?

Hallo route_66,

ich stimme zu, das kam mir auch schon recht "unkonventionell" vor. 
Wusste mir aber erstmal nicht besser zu helfen.

Ich habe inzwischen auch weiterrecherchiert und verstanden, dass die 
richtige Lösung wohl sowas wäre:
http://www.klaus-leidinger.de/mp/index.html

Also einen Switch IC mit dem ich generell die Pins des Programmers 
ab-/anklemme. Wenn ich richtig denke kann ich das auch automatisch auf 
Basis des RESET Signals machen, wenn das kommt schalte ich zum 
Programmer.

Dann noch die abschliessende Frage in die Runde: könnte ich ebenso mit 
einem Tristate Buffer machen oder muss es ein Switcher sein?

VG,
Konrad

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.