• Hallo TT-Modellbahner, schön, dass du zu uns gefunden hast.
    Um alle Funktionen nutzen zu können, empfehlen wir dir, dich anzumelden. Denn vieles, was das Board zu bieten hat, ist ausschließlich angemeldeten Nutzern vorbehalten. Du benötigst nur eine gültige E-Mail-Adresse und schon kannst du dich registrieren.
    Deine Mailadresse wird für nichts Anderes verwendet als zur Kommunikation zwischen uns.
    Die Crew des TT-Boardes

PIC oder Atmel? Aller Anfang ist schwer...

flicflac

Foriker
Beiträge
894
Reaktionen
1 1
Ort
Minden / NRW
Der Mensch wächst mit seinen Aufgaben...
Wir haben ja nun einige Vertreter welche sich mit µC auskennen. In Anlehnung an diese (meiner) Hardware-Lösung blüht mir im HBF-Bereich eine Vervielfachung der E/A. Mein Gedanke war dies per µC zu lösen.
Zielstellung:
Ich möchte viele digitale Eingänge (Richtwert 20 evtl. eher mehr) nur per logischer Verknüpfungen auswerten und die Ergebnisse auf (relativ) wenige Ausgänge (Richtwert 4-8) digital ausgeben. Alles reine high/low Signale, Geschwindigkeit absolut kein Kriterium. Das mit CMOS-Logik zu realisieren würde ein Chip-Grab ergeben, von der Löterei mal ganz abgesehen. Und wäre absolut hardcoded...
Es geht mit beiden, klar! Aber vielleicht beherrscht ein Typ die Sache einfacher?

THX
Flic
 
Also wenn Du Atmel oder Microchip zur Auswahl hast, würde ich auf die PIC-Variante v Microchip gehen.
Wie sehen denn die Preisunterschiede aus?
...übrigens sieht es cooler und professioneller aus wenn Du "µC" schreibst an stelle von "µP". :)
 
@EUROFIMA

Dein Wunsch war mir Befehl, Controller statt Prozessor :)
[edit] obwohl er ja rechnen kann, was dann wieder ein "P" wäre... Haaaarspalterei[/edit]

Preislich wird sich das wohl in den E/A niederschlagen, aber da wart' ich ja auf die helfenden Hinweise

flic
 
Welche Controllerfamilie Vorteilhaft wäre ist eine Frage der eigenen Einstellung und des eigenen Könnens.
Wer Assembler oder C beherrscht, dem kann es prinzipiell egal sein da es die Entwicklungsumgebungen für beide Sprachen kostenfrei im Netz gibt. Da ich aber nur Basic so halbwegs beherrsche und es mit Bascom eine komplette IDE für Atmels gibt fiel die wahl nicht sonderlich schwer da man mit der voll funktionsfähigen Demo des genannten Programms mittlerweile 4k Maschinencode erzeugen kann.
Für Anfänger ist das immens viel.
Außerdem sind Atmels fast immer schneller und preiswerter als vergleichbare PICs. Der Hersteller Microchip schließt erst jetzt so langsam wieder mit der 18F-Reihe zu Atmel auf.




Die E/A's eines µC spielen bei Deinen Wünschen eine eher untergeordnete Rolle. Für Deine Zwecke kann man Schieberegister nutzen die den SPI-Bus unterstützen. Die sind zu 100% preiswerter als jeder weitere µC.
Von CMOS-Schieberegister rate ich aber ab.
Frag TTOpa-Junior. Der hatte zuerst CMOS Technik verbaut die sich aber technisch bedingt als sehr störanfällig erwies. Die alten 74er Reihen sind da deutlich unempfindlicher.
Für den SPI-Bus braucht man drei Leitungen wenn man Daten nur einlesen oder ausgeben möchte. Ist beides von Nöten reichen vier Leitungen aus. (CS, Clk, Din, Do = Chip Select, Clock, Data In und Data Out)
Manche Schieberegister brauchen eine weitere Leitung weil sie einen Latch (so ne Art Zwischenspeicher) haben der erst freigegeben werden muss bevor die Daten durchgegeben werden. Hört sich kompliziert an ist aber sehr einfach zu erledigen.
Also in Deinem Fall:
Daten Einlesen, Auswerten, ausgeben, fertsch.
Passende Bausteine wären zum Beispiel 74xx164, 74xx165, 74xx166, 74xx194, 74xx195, 74xx198, 74xx322, 74xx595, 74xx596.
Ein Blick in die Datenblätter ist aber vorher zwingend notwendig! http://www.datasheetcatalog.com
 
@E-Fan

Den Hinweis mit den Schieberegistern bekam ich auch schon an anderer Stelle. Hab nur noch nie damit gearbeitet und die Vorlesungen sind lange, lange her... Da muss ich mir etwas Nachhilfe holen.

Was TTL statt CMOS angeht werd ich bei CMOS bleiben. Alles was bis jetzt werkelt läuft mit 12V. Vom Vorwiderstand für Lichtschranken über Treiber, Weichenrückmeldungen bis zu den Relais. Um nicht mit 4 Spannungen (Fahrstrom, 16V~, 12V=) zu hantieren hab ich mich für CMOS statt TTL entschieden. Wobei pinkompatible Relais für 5V einen so niedrigen Widerstand haben dass sich der Strom verdreifachen würde, vom Finanziellen mal ganz abgesehen :(
Aber die Schieberegister haben den Vorteil das nur 4 (bzw.5) Leitungen über Pegelwandler laufen müssen, ich denke da an 4049/4050 bzw 4104.

Was die Programmierung betrifft, Assembler hab ich früher mal was damit gemacht und fand es so schwierig nicht, ist nur viel Tipperei. C geht so, über "Hello World" bin ich ein Stück drüber hinaus :D

Was nun die Kernfrage betrifft bin ich schon auf PIC (fremdprogrammiert im Einsatz) und Atmel (z.B. LDT) gestoßen. Ähh, was setzt eigentlich Lenz ein?? Die Frage bleibt also weiterhin, allerdings auch die Orientierung in Richtung der Kosten für PRG. Da würde ich, da alle Seriell und Parallel besetzt, in Richtung USB tendieren.

flic
 
Ttl/cmos

Hallo, COMS ist nur für statische Entladungen empfindlich, ich verwende deshalb überall Steckfüße aber die teureren. Also erst alles zusammen löten alle Eingänge anschließen und zum Schluß die IC´s aufstecken. Verwendet man CMOS mit 12 Volt hat man den Vorteil, das das HI/ LO Niveau weiter auseinander liegt. Ich habe bei mir noch ein zwei TTL Schaltungen laufen die aber nur mit dem größten Aufwand störungsfrei sind , was bis zu Ferritringen bei den Eingängen geht und einem großen Einsatz von Condensatoren zum Auffangen von Spannungspitzen, und den kommpletten verzicht auf Magnetschaltartickel für Weichen und Signale, sowie der Verbannung der alten Rundmotoren.
mfg Bahn120
 
@flicflac

schau dir mal den AtMega 8515 an, der hat 35 frei programmierbare Pins und kostet ca 2 €. Ansonsten kann man sowas auch mit Eproms machen. Die Adressleitungen sind die Eingänge und die Datenleitungen die Ausgänge, nur das programmieren ist schwierig bzw. Eprom Programmer sind teuer.
Und zu Lenz auf den aktuellen Gold mini sind AtMega8 drauf
 
@Gordon

EErpoms waren auch schon im Gespräch, aber die Wertetabelle aufzustellen ist auch eine heiden Arbeit. Zumal bei gleichem Arbeitsaufwand
EEProm <> µC die Sache schon wieder zu statisch wird und die Felxibilität fehlt. Für das grundsätzliche Ziel ok, aber irgendwie schleichen sich in Umkehrung schon wieder Hintergedanken an mögliche Schaltungen von Weichenstraßen ein, da der Zustand aller Weichen bekannt ist...
Stop! ;) Ziel im Auge behalten...

@Bahn120
Grüße nach Hoogezand :)
An meiner CMOS Entscheidung hattest du ja mit deiner Lichtschranke keinen geringen Anteil :) Einfachst und funktioniert perfekt.
Mit TTL hab ich seit Urzeiten meine Probleme da ich mich mit OC nie richtig anfreunden konnte. Und TP hat eben so seine Tücken, von der geringen Verfügbarkeit entsprechender Gatter mal abgesehen.
 
Also ich bin mehr für Risc-Prozessoren von Atmel. Da finde ich die Befehlsliste im Datenblatt, und kann direkt aus dem Parallelport des PC die dinger Füttern!
Zu den PIc habe ich im datenblatt zu wenig über die innere Strucktur gefunden, den Befehlssatz habe ich auch nirgens einfach erklärt gefunden, und ein Programiergerät müßte ich mir auch erst noch bauen, also war die wahl recht klar!

PS Zur Störanfälligkeit von C-Mos: Die liegt oft an fehlenden oder zu großen Abschlußwiderständen bei Eingängen die ungenutzt sind oder über Schalter bedient werden. Dann "liest" der C-Mos jedes Elektron aus der luft als befehl.
 
nochmal eine Anmerkung zur Störsicherheit. Ein µC ist Taktgesteuert, das heißt nur bei der Taktflanke wird ein Eingang eingelesen. Im Gegensatz zu statischer Logik wo jeder Impuls (auch ein Störimpuls) sofort weitergeleitet wird. Außerdem kannst du bei einem µC durch entsprechende Auslegung der Software die Störsicherheit noch mal erhöhen. Um Eingänge zu sparen kann die Beschaltung in Form einer Matrix erfolgen. Statt 16 Eingängen hast du dann 8x8 gleich 64 Eingänge. Die Auswertung erfolgt wieder nur durch die Software. Somit reicht dann 1 µC ohne zusätzliche Logik für die gestellte Aufgabe aus.
 
@ptlbahn
Der PIC ist ebenfalls ein RISC-Prozessor mit Harvard-Architektur und arbeitet einen Befehl pro Zyklus ab. Anleitungen für Programmiergeräte am Parallel/Serialport findest Du bei sprut.de.
Atmel und PIC sind gleichwertig, welchen man nimmt, hängt mehr davon ab, welche Funktionen/Speicher in einem bestimmten Gehäuse realisiert sind.
Fällt mir noch was ein, was für den Atmel sprechen könnte: Das bei vielen Typen mittlerweile integrierte JTAG-Interface. Dann braucht man kein Programmiergerät mehr.
Gruß vom Heizer
 
Hast Du zufällig nen Link der etwas auf die Funktionsweise und ~Vorteile des JTAG-Interfaces eingeht?
Ich hab schon oft davon gelesen aber meist nur kryptische Beschreibungen gefunden weshalb ich mich nen bissel dafür scheue 45,- für ein Adapter auszugeben.

...PS Zur Störanfälligkeit von C-Mos: Die liegt oft an fehlenden oder zu großen Abschlußwiderständen bei Eingängen die ungenutzt sind oder über Schalter bedient werden. Dann "liest" der C-Mos jedes Elektron aus der luft als befehl...
Ungenutzte Eingänge sollte man je nach Bedarf eh auf Vcc oder Masse legen.
 
Die JTAG Funktion dient hauptsächlich zum debuggen. Mit dem entsprechenden Adapter kann das Programm direkt in der Schaltung getestet werden. Die Simulationen sind zwar nicht schlecht, aber bestimmte Hardwareeinheiten können nicht simuliert werden.
 
@flicflac
Da ich mit beiden erfahrungen gesammelt habe empfehle ich Dir die Atmels. Vor allem da es hier einen sehr guten C-Compiler (gcc) für umsonst gibt. Für die Pics sieht es da nicht so gut aus.
Alle AVRs besitzen FLASH-Speicher (10000 mal beschreibbar) und in der Schaltung programmierbar. Man braucht also generell kein besonderes Programmiergerät sondern nur einen kleinen Adapter für den Parallelport.
Die Pics brauchen zum Programmieren eine höhere Spannung und damit ist das Programmieren aufwändiger.
Außerdem haben fast alle AVRs ein EEPROM on chip. Microchip hängt da hinterher.

@ateshci
Das JTAG-Interface ist nur für das Debuggen interessant, wie Gorden schon erwähnte. Ein brauchbarer Debuggger kostet richtig Geld und ist erst für komplexe Anwendungen von nöten.
Einen Lokdekoder oder ähnliches kann man ganz gut ohne Debugger entwickeln.
 
>Der PIC ist ebenfalls ein RISC-Prozessor mit Harvard-Architektur und
>arbeitet einen Befehl pro Zyklus ab.

In einem Zyklus ja, aber ein Zyklus ist nicht ein Takt wie bei den Atmels...
 
Leut's, lasst es nicht zu einem Glaubenskrieg ausarten...

Ich habe die Frage nicht nur hier gestellt. In anderen Foren verliert sich jedoch leider zu schnell der Bezug (Moba) und es kommen Vorschläge die (sehr) weit über das Ziel hinausschießen oder es endet eben im Glaubenskrieg. Deshalb hoffe ich hier auf die passendere Antwort.
Es gibt viele Foriker welche sich mit dem Thema beschäftigen und mir evtl. auf die Sprünge helfen können. Obwohl Argumente gegen oder für X bzw. Y mich nicht dümmer machen :)
Nur sollte man das Ziel nicht aus den Augen verlieren. Vielleicht schubst mich mal einer über die Hürde "Schieberegister", die Programmierung der Verknüpfungen und Abhängigkeiten sehe ich nicht als das Problem.
Die Entscheidung fällt entsprechend Handhabung und Kosten was das Programmieren angeht. Struktur ist mittlerweile klar:
Ausgänge seriell oder parallel erst mal offen. Da CMOS (12V) als Basis bleibt und auf Grund der Unmengen an Eingänge (träge) sind Schiebregister die einfachste Wahl wegen der max. Pegelwandlung von fünf Leitungen (incl. Ausgang seriell).

Hätt' ich doch blos Kochen als Hobby genommen...

flic
 
@flicflac

beschreib doch erst mal was das für Eingänge sein sollen. Potenzialfreier Kontakt oder Spannung. Wenn Spannung Gleich oder Wechsel und wie hoch und was willst du als Ausgang schalten Relais ? Ziel sollte sein so einfach wie möglich und so kompliziert wie nötig. Ich realisiere Funktionen gern in Software da die außer Hirnschmalz nichts kosten. Wie soll die Verknüpfung zwischen Ein und Ausgängen aussehen?
Da ich schon einige Programme in Assembler geschrieben habe könnte ich dir bei der Programmierung behilflich sein. Ich kenn mich allerdings nur mit Atmel aus.
 
@Gordon

Meine BHf Gleise sind zwischen 1,40 uns 1,80m. Damit das wenigstens halbwegs ordentlich aussieht ist die Bremstrecke ist auf 2,40m eingestellt. Ziel ist es in Abhängigkeit des Zielgleises (Bremsen oder Durchfahrt), Streckengleis (Falschfahrt möglich) und der Weichenstellungen die benötigten Abschnitte (4) der Weichenstraße und das entsprechende Streckengleis (2) mit auf Bremssignal zu schalten.

Es sind 20 Logiksignale (Rückmeldung von Weichen und Zielgleise) mit 12V= über Trigger HCF40106. Die wollte ich, nach neusten Erkenntnissen über Schieberegister (4014?), und Pegelwandler 4049/4050 in den µC schicken, so dass ich mit 8 Eingängen hinkomme. Ausgänge brauche ich 8x (6x plus 2x Reserve) welche wieder über Pegelwandler 4104 und Treiber ULN2004 per 12V (Mono)Relais Abschnitte der Weichenstraße mit in die Bremsstrecke schalten.

Eigentlich sind es alles rein logische Verknüpfungen, aber eben zu viele um es mit Gattern zu realisieren. Dazu kommt das auf der anderen Seite des Bhf das Gleiche ansteht.

Bei den 12V möchte ich definitiv bleiben um die Typenvielfalt der Relais nicht noch zu erhöhen und vor allem um nicht mit noch einer Spannung mehr zu hantieren. Durch die Pegelwandlung bleiben die 5V auf die µC Platine beschränkt.

flic
 
Wenn Du denn unbedingt mit Scheiberegistern arbeiten willst...
Du brauchst drei 74HC166 (PISO) seriell kaskadiert, macht einen µC-Eingang für bis zu 24 Signale. Zum Clock-Ansteuern mußt Du dann noch pro IC einen µC-Ausgang haben, einen Ausgang als allgemeinen Rücksetzeingang der 166er. Macht also dafür 1E/4A.
Das muß alles auf 5V laufen. Die Signale mußt Du mit Optokopplern anschließen, so daß der µC-Kreis nicht auf den Rest der Anlage elektrisch bezogen ist, denn alles andere führt unweigerlich zu gewaltigem Ärger. Die 12V für die Relais kannst Du ja mit dem Fußpunkt auf 5V beziehen, solange die nicht mit irgendwelchen anderen Punkten des Schienennetzes in Verbindung sethen, funktioniert das auch. Entstörung ist natürlich zwingend notwendig.

Gruß vom Heizer
 
@ateshci

Keiner sagt das ich unbedingt mit SR arbeiten will, aber bei min. 26 E/A (binär gemäß dann 32) Eingängen scheint das irgendwie sinnvoll. Allerdings kosten Pic bzw. Atmel mit entsprechenden E/A's auch nicht die Welt.
Nur mit dem 74HCxxx komm ich nicht so ganz klar. Ich möchte so wenig wie möglich in 5V haben. Deshalb eben die Pegelwandlung mit 4049/4050 (inv./noinv. je nach Bedarf) im seriellen Abschnitt nach dem SR.
Klar, OC im Übergang 12V/5V garantiert perfekte galvanische Trennung, aber für ein ordentliches HI/LO muss ich dann wieder 5V Trigger machen. Nachdenk... Voll egal! Trigger müssen eh rein, ob nun auf der 12V oder 5V Seite und sind bei 2 ct pro Eingang kein Kostenfaktor.
Ausgangsseitig wäre dann das gleiche Spiel mit OC und Trigger, die Ansteuerung der Relais geht definitiv uber den ULN2004. Ob man sich da den Trigger sparen kann ist eine reine (Löt)fleißaufgabe. Wenn der OC ausreichend durchsteuert evtl... Nee! Vielleicht tut eine weitere einfachste logische 12V Verknüpfung irgendwie Not welche ich jetzt noch nicht absehen kann, Trigger bleiben also.

Aber zurück zum Thema...
PIC oder Atmel scheint definintiv egal zu sein, die Krux liegt ob nun seriell oder parallel in den µC. Seriell ist flexibler da weitere Kaskadierung möglich, parallel bedeutet weniger Aufwand.

Ich bestell mir wohl mal einen µC mit ausreichend Eingängen und teste mal. SR vorschalten kann ich immer noch.

Quadratur des Kreises..., ich geh' Kochen...

flic
 
Hallo flicflac

ich würd das folgendermaßen machen Als Eingang und gleichzeitig Abgrenzung zu der CMOS Schaltung 20 Optokoppler die in Form einer Matrix an den µC angeschlossen werden. Dafür brauchst du 4 Ausgänge für die Zeilen und 5 Eingänge für die Spalten macht zusammen also 9 Pins am µC. Die Pegelwandlung und galvanische Trennung übernehmen die Optokoppler. Es gibt 4-fach OC für 77cent, davon brauchst du dann 5. So eine ähnliche Schaltung habe ich an meinem Servodekoder getestet (16 Signale auf 8 Pins). Für den µC nimmst du dann einen kleinen 5V Regler zur Spannungsanpassung. Die 8 Ausgänge kannst du direkt auf einen ULN 2803 geben und an diesen die 12V Relais dranhängen, eine Pegelwandlung ist nicht notwendig. Du brauchst also 17 Anschlüsse am µC. Da würde dann ein Atiny 2313 ausreichen. Die Software würde ich wie folgt programmieren. In einem Timerinterrupt wird die Matrix abgefragt und eine Entprellung vorgenommen. Im Hauptprogramm wird erst getestet ob eine Änderung vorliegt und wenn ja wird die Eingangsinformation übernommen. Dann wird ausgewertet und entsprechend die Ausgänge gesetzt. Ist erst mal ziemlich grob aber es geht ja erst mal nur ums Prinzip. Zusammengefasst brauchst du 5 4fach Optokoppler 1 Atiny2313 und 1 ULN 2803, dürfte so 5-6 € kosten. Als Takt reicht in dem Fall der interne völlig aus, so das die Außenbeschaltung minimal ausfällt.
 
@per

das ist kein Programmierboard sondern ein Evaluationsboard. Damit kannst du Programme testen und einfache Schaltungen entwickeln. Zum Programmieren der Controller brauchst du trotzdem noch den Programmieradapter der dann an die ISP-Schnittstelle angeschlossen wird. Solche Adapter gibts aber auch sehr preiswert.
 
Diese Platine zum Anschluss an den PC ermöglicht die direkte Programmierung der ATmega8535, ATmega16, ATmega32, ATmega8, ATtiny2313, ATtiny12 und ATtiny15.
Deshalb. Die Bezeichnung selbst habe ich gar nicht gelesen :(.

Tante Edit meinte: Lies doch mal die Anleitung. Und siehe da, über die serielle Schnittstelle (ISP) mittels PonyProg soll es direkt gehen.
 
Zurück
Oben