mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC10F202 im SOT23, was macht man damit?


Autor: Remo@ Te (remo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
im Markt thread
http://www.mikrocontroller.net/topic/goto_post/2115983

wurde von David ... (volatile) folgende Frage gestellt:
Hm, interessantes Teil :) Was macht ihr damit so? Waer nett wenn ein
Benutzer nen neuen Thread aufmacht (dass wir den hier nicht kapern) und
berichtet :)

Ich nutze diese Winzlinge um LEDs über einen 2-Draht-Power-Bus 
anzusteuern.
Die 6 Pins des PIC sind von hausaus als 2 Versorgungspins, 1 Input und 3 
In/Out designed. Es lassen sich also 3 LEDs direkt oder über Multi- und 
Charlieplexing bis zu 6 LEDs ansteuern. Der Powerbus ist so designed, 
dass die Versorgungsspannung vom Sender, das kann irgendein uC mit 
Transistor hintendran sein, ich nutze hier idR AVRs, kurzzeitig gepulst 
wird, um die Information zu übertragen. Am Mini-PIC ist die 
Versorgungsleitung direkt auf den Input Pin gelegt. von dort geht eine 
Diode an den Mini-PIC Versorgungspin. An den Versorgungspins hängt noch 
ein >= 100nF Kerko, um die Lücken in der Versorgungsspannung zur 
Informationsübertragung zu überbrücken. Um kein Missverständnis 
aufkommen zu lassen. die Versorgungsleitung des 2-Drahtbusses hängt nur 
über die Diode an dem Versorgungspin, also nicht direkt. GND geht 
natürlich direkt dran. Sollte man nicht alle drei Ausgänge des PICs 
benötigen, nimmt man einen anderen Pin als Eingang, dann kann man die 
Diode weglassen, weil sie intern im PIC dann schon als 
Überspannungsschutzdiode vorhanden ist. Nur an dem Only-Inpin ist keine 
Diode drin, weil dieser Pin bei der Porgammierung die höhere 
Programmierspannung abbekommt.
Im PIC Programm schalte ich die LEDs für die Dauer der 
Infromationsübertragung dunkel, um den Stromverbrauch zu senken, damit 
der Kerko nicht den Strom für die LEDs puffern muss. Den Beginn der 
Informationsübertragung erkennt man daran, dass der Inpin auf GND 
gezogen wird. die = / 1 Übertragung ist durch unterschiedlich lange GND 
Pulse definiert. Das is ganz easy im Programm zu detektieren. Aktiv auf 
0 am Inpin warten, der PIC hat ja sonst nix zu tun, 3 mal Däumchen drehn 
und den am INpin anliegenden Wert als bit einlesen und in eine Variable 
schieben. Dann warten, dass am Inpin eine 1 anliegt (ist eigentlich nur 
bei einer 0 nötig) und los gehts zur Runde fürs nächste Bit, also auf 
eine 0 warten.
Wozu ist der Aufwand gut?
Sehr simple Verkabelung. Es gehn eben nur zwei Drähte zur Anzeigeplatine 
und durch geeignete Addressierung kann man an den einen 
Zweidraht-Powerbus gleich mehrere Anzeigeplatinchen dranhängen.
Einziger wirklicher Nanchteil dieser Lösung: der Mini-PIC hat kein 
EEprom, das hat der inzwischen in diesem Gehäuse erhältliche AVR Tiny4/5 
übrigens auch nicht. da sind sich die Dinger auffallend ähnlich.
Dieser PIC hat aber ein paar Vorteile (und ich bevorzuge sonst AVRs 
!!!!):
1) er ist billiger als der ensprechende AVR
2) es gibt von Microchip einen Header-Adapter AC162059, kostet so um die 
15EURO. Auf diesem Adapter befindet sich ein 20Pin DIP PIC-xyz-IDC der 
sich an sechs Pins genau wie der Mini-PIC verhält und einige der 
zusätzlichen Pins zum realtime in-circuit debuggen benutzt. Mit einem 
MCD2 oder 3 development tool von Microchip oder Chinas weisse Ware kann 
man dadurch für diese Winzlinge seinen Code in realtime in der Schaltung 
debuggen. Das ist echt cool und Klasse.

Zum Prommen habe ich mir so einen chinesischen Testsockel mit Adapter 
auf DIP8 zugelegt. Den steckt man in den ZIF Sockel des Prommers, Deckel 
des Sokkels aufklappen, Winzling mit Pinzette einlegen, Klappe zu und 
Program reinschiessen. geht wies Brezelbacken.

Also lasst mal hören, was ihr so damit anstellt oder einfach nur 
Kommentare.
so long
Remo

Autor: faustian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mir wuerde jetzt der Modellbau als ein wesentlicher 
Anwendungsbereich einfallen....

Autor: Remo@ Te (remo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir fällt gerade ein, ich hab auch mal den ELV FS20 Code in einen 
solchen Mini-PIC gepackt. Taste, FS20 Senderplatinchen und eine 3Volt 
Knopfzelle dran und fertig ist der FS20 Sender.

Autor: Sergey (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine gute Idee ist es, den PIC als gemeinen "Clone-Schutz" in 
Schaltungen einzusetzen, vorzugsweise dort plaziert, wo ihn ein 
potentieller Nachbauer nicht weiter beachtet, z.b. auf einer Platine wo 
sonst nur das Display ist.  Antwortet der kleine PIC nicht richtig oder 
ist garnicht vorhanden macht der Hauptcontroller komische Fehler. Die 
Leiterbahn am besten in einen Innenlayer routen. Noch fieser ist es, den 
PIC unter einen Sockel zu plazieren ;)

Ich nutze die 10F-PICs als Protokoll-Converter, also z.b. RS232 auf 1 
Wire usw.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für power sequencing wird er gerne hergenommen, ebenso für 
Sensoraufgaben
(Linearisation, Kalibration, Protokollanbindung). Für Schaltungen in 
geringer
Auflage ist das einzige Problem die in circuit programmierung, welche 
bei
diesen Bausteinen schwierig ist.

Autor: Erhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Remo@ Te

wo hattest du das Protokoll für den FS20 Code her?

Ich benutze diese PICs im Modellbaubereich (Blaulichter, Schweißlichter, 
usw.

Außerdem hauche ich defekten Billigfunkempfängern damit neues Leben ein.
(Harzkleckschip abfräsen, die benötigten Leiterbahnen mit dem PIC 
verbinden und der Fantasie freien Lauf lassen ;-) )

Autor: Remo@ Te (remo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Erhard

Den Code für den FS20 Sender hatte ich in Assembler selbst geschrieben.
Ist nicht sonderlich aufwendig.

Das FS20 Protokoll ist eigentlich ganz einfach

0 bit = 400µs High, 400µs Low
1 bit = 600µs High, 600µs Low

diesen Ablauf 3 mal wiederholen
send synchronization 0000000000001 (12* 0, 1* 1)
send HouseCode1 byte
send parity bit for HC1
send HouseCode2 byte
send parity bit for HC1
send Adress byte
send parity bit for Adress
send Data byte
send parity bit for Data
send QuerSumme byte  ; calculate Quersumme as 0x06+HC1+HC2+Adr+Dat
send parity bit for QuerSumme
send 0 bit to terminate transmission
wait 10ms

Ich hatte das Gefühl das Timing sei relativ unproblematisch, auf ein 
paar us hin oder her scheint es nicht anzukommen.
Die parity bits hatte ich der Einfachheit halber nicht zur Laufzeit 
ausgerechnet sondern als Konstanten abgelegt.
Ich hatte mir nicht die Mühe gemacht den Hauscode oder die Adresse 
einstellbar zu machen, die hab ich einfach als Konstanten festgelegt und 
reingebrannt. Das macht den Code eben so kurz und einfach. Ausserdem 
hätte der PIC eh kein EEProm gehabt, wo man die Adressen ablegen hätte 
können.

Um die Frage vorwegzunehmen, nein ich finde den Code gerade nicht, 
Komisch sowas verschwindet doch nicht....das wäre ärgerlich, hab das 
gleiche aber auch für einen AVR programmiert und dort habe die obige 
Zeiten und den Ablauf rauskopiert. Also posten is leider nicht, 
zumindest nicht auf die Schnelle.

Gruß
Remo

Autor: Pic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.