Autor |
Microkontroller oder konventionell? |
|
|
|
|
BID = 891632
Kleinspannung Urgestein
Beiträge: 13359 Wohnort: Tal der Ahnungslosen
|
|
Außerdem hab ich mir in den Kopf gesetzt,Peter davon zu überzeugen das man auch als Rentner ohne Vorkenntnisse "Programmiererfolge" feiern kann.
Ganz einfach deshalb,weil ich ihn gut leiden kann(auch wenn ich ihn nicht persönlich kenne)und weil ich den selben Prozess selber mal durchgemacht habe.
Hatte mich auch standhaft geweigert in die Materie einzudringen und mir eingeredet das ich das nie begreife.
Irgendwann hab ich aber mal den Schweinhund überwunden und dachte einen Versuch kann man ja mal wagen.
Und so bin ich auf Bascom gekommen.
Da muß man gar nicht wissen(und es interessiert am Anfang auch keine Sau) in wieviel zig Anweisungen der eingetippte "Befehl" zerlegt wird und was der kleine schwarze Käfer intern damit veranstaltet.
Wichtig ist doch nur,das zum Schluss das passiert was man wollte.
Fragt mich nicht,wie meine ersten Versuche ausgesehen haben und wie oft ich den "Mist" in die Ecke geschmissen hab.
Mittlerweile bin ich soweit,das ich bei allen "ich hätte da gern mal ein Problem" Sachen zuerst überlege ob ich das nicht irgendwie mit µC lösen kann.
Manchmal klappts,manchmal merk ich auch das ich mich hoffnungslos übernommen hab und muß mir was anderes ausdenken.
Aber man wird auf jedenfall nicht dümmer davon.
Also Peter,Angebot steht nach wie vor.
Wenn es irgendwann mal zeitlich passt,werf ich meinen ganzen Krempel ins Auto und zeig dir was alles geht auch wenn man nicht die leiseste Ahnung hat.
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein) |
|
BID = 891634
Kleinspannung Urgestein
Beiträge: 13359 Wohnort: Tal der Ahnungslosen
|
|
Zitat :
Otiffany hat am 25 Jun 2013 23:51 geschrieben :
|
Ich habe mir heute mal dieses Buch bestellt
|
Das kenn ich z.B. auch noch nicht.
Aber der Burkhardt schreibt normalerweise keine schlechten Sachen und nichts wovon er selbe keine Ahnung hat.
_________________
Manche Männer bemühen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitätstheorie.
(Albert Einstein) |
|
BID = 892021
Otiffany Urgestein
Beiträge: 13763 Wohnort: 37081 Göttingen
|
Leider hatte sich noch Niemand zur Funktionsfähigkeit meines letzten Schaltungsentwurfs geäußert, sodaß ich gezwungen war, es selbst herauszufinden .
Jetzt funktioniert es wie gewollt!
Gruß
Peter
|
BID = 892072
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| Leider hatte sich noch Niemand zur Funktionsfähigkeit meines letzten Schaltungsentwurfs geäußer |
Weil man diesen "Schaltplan" nicht lesen kann.
Und ihn umzuzeichnen, dazu hat wohl keiner Lust.
|
BID = 892097
high_speed Schreibmaschine
Beiträge: 2073
|
Zitat :
asdf hat am 23 Jun 2013 23:37 geschrieben :
|
..
Da ich ähnliche Überlegungen wie Peter wälze, fällt mir noch das Stichwort
CPLD ein. (gelesen bei Ulrich Radig)
Zitat :
| Wenn irgendwas definitiv funktionieren soll und nicht abstürzen darf |
Ist es richtig, dass
A) diese Bausteine deutlich schneller als Controller sein können?
B) Sie recht einfach zu programmieren sind?
c) siehe Zitat Deneriel
Was ist aus CPLDs und FPGAs geworden?
Werden die dank immer schnellerer Controller ungebräuchlich oder eine Alternative?
|
CPLDs werde mit der Zeit durch kleinere FPGAs mit interem Konfigurationsspeicher verdrängt. Die meisten CPLDs besitzen nur eine kleine Anzahl an Flip-Flops, die meist mit großen Logikblöcken verbunden sind.
So können mehrere Signale kombinatorisch mit einander verknüpft werden, aber nur kleine Speicherregister gebaut werden. Der Vorteil bei CPLDs liegt in der Speicherung der Konfiguration, da der CPLD EEPROM basiert ist.
Beim FPGA dagegen muss die Konfiguration aus einem EEPROM beim Starten geladen werden. Bei FPGAs sind die logischen Zellen kleiner, meist 4 Eingänge, 1 Ausgang und Überlauf um Recheneinheiten zu bauen.
Die einzelnen logischen Zellen sind auch mit Flip-Flops kombiniert.
Kleine FPGAs besitzen schon ~4000 Logigelemente, die großen weit über mehr als 359200 (Stratix V E).
Wo viele Rechenoperationen in kurzer Zeit durchgeführt werden müssen, kommt
man an einem FPGA nicht vorbei. Wo hingegen die Ablaufsteuerung einer CPU gefragt ist, wird es mit einem FPGA schwierig. CPUs lassen sich in einem FPGA aufbauen, das Problem dabei ist die ungünstige lange Signalführung auf dem FPGA, wodurch nur geringe Taktraten erreicht werden.
Eine Zustandsautomat in einem FPGA kann genau so gut abstürzen wie ein Programm. Wenn durch ein Planungsfehler ein Bitmuster erzeugt wird, zu dem es keinen Folgezustand gibt, bleibt der Automat in diesem Zustand gefangen.
Beim beschreiben einer Hardware muss man auch anders denken als beim Programmieren eines Programms. Eine Schleife Produziert die Hardware öfters.
MfG
Holger
_________________
George Orwell 1984 ist nichts gegen heute.
Der Überwachungsstaat ist schon da!
Leider lernen die Menschen nicht aus der Geschichte,
ansonsten würde sie sich nicht andauernd wiederholen.
|
BID = 892108
der mit den kurzen Armen Urgestein
Beiträge: 17434
|
so ich hab mir mal die Mühe gemacht Peters Zeichnung neu zu zeichnen
Peter überprüfe die mal! Zeichnungsfehler kann ich nicht aus schließen.
Edit: einen Fehler hab ich schon beseitigt
_________________
Tippfehler sind vom Umtausch ausgeschlossen.
Arbeiten an Verteilern gehören in fachkundige Hände!
Sei Dir immer bewusst, dass von Deiner Arbeit das Leben und die Gesundheit anderer abhängen!
[ Diese Nachricht wurde geändert von: der mit den kurzen Armen am 29 Jun 2013 21:53 ]
|
BID = 892118
Otiffany Urgestein
Beiträge: 13763 Wohnort: 37081 Göttingen
|
Welchen Fehler hast Du beseitigt; ich konnte bisher keine Abweichung von meiner Schaltung feststellen?
Danke für deine Mühe!
Ich habe den Zähler vom Aufbau her getestet und der funktioniert so wie ich mir das gedacht habe. Die Triggerschaltung hatte ich schon vor einiger Zeit getestet und auch die funktionierte. Die Timerschaltung sollte auch funktionieren (das IC ist schließlich mein Hobby! ).
Die Widerstandswerte an den Fets habe ich nach Gutdünken gewählt, in der Hoffnung, daß es auf Anhieb geht.
Gruß
Peter
|
BID = 892120
der mit den kurzen Armen Urgestein
Beiträge: 17434
|
da fehlte eine GND -Verbindung
_________________
Tippfehler sind vom Umtausch ausgeschlossen.
Arbeiten an Verteilern gehören in fachkundige Hände!
Sei Dir immer bewusst, dass von Deiner Arbeit das Leben und die Gesundheit anderer abhängen!
|
BID = 892122
Otiffany Urgestein
Beiträge: 13763 Wohnort: 37081 Göttingen
|
Welche Groundverbindung?
Gruß
Peter
|
BID = 892123
der mit den kurzen Armen Urgestein
Beiträge: 17434
|
R8 nach gnd
_________________
Tippfehler sind vom Umtausch ausgeschlossen.
Arbeiten an Verteilern gehören in fachkundige Hände!
Sei Dir immer bewusst, dass von Deiner Arbeit das Leben und die Gesundheit anderer abhängen!
|
BID = 892125
Otiffany Urgestein
Beiträge: 13763 Wohnort: 37081 Göttingen
|
Ach so, ich dachte in meinem Plan
Bis auf ein paar überflüssige Verbindungspunkte ist dein Plan mit meinem identisch!
Gruß
Peter
P.S.
Das Layout steht auch schon:
[ Diese Nachricht wurde geändert von: Otiffany am 29 Jun 2013 23:19 ]
|
BID = 892132
perl Ehrenmitglied
Beiträge: 11110,1 Wohnort: Rheinbach
|
Und wie bringst du das Ding in eine definierte Ausgangsstellung?
Sowohl der Stand des Zählers, wie auch die Zustände der FF sind doch beim Einschalten beliebig.
Du könntest natürlich vorab auch manuell ein paar Dummy-Impulse generieren, bis sich alles eingespielt hat.
|
BID = 892151
Otiffany Urgestein
Beiträge: 13763 Wohnort: 37081 Göttingen
|
Die Ausgangsstellung ist nicht so wichtig.
Der Zähler wird von Hand auf Null gestellt.
Wann die rechts-links Bewegung einsetzt ist nicht so kritisch, weil der Anfang des Drahtes ja nach außen geführt wird. Ob der nun direkt am Anfang des ersten Pfostens oder erst beim 5. oder 6. anfängt die eigentliche Honigwabenspule zu wickeln ist unkritisch.
Wichtig ist nur, daß der Draht nach den voreingestellten Impulsen um die Pfosten geführt wird; z.B. nach neun Pfosten nach rechts und nach weiteren neun Pfosten nach links usw. Dazwischen muß der Draht mittig geführt werden.
Der Timer dient nur dazu, die Bewegung der Drahtführung der Geschwindigkeit der Wickelmaschine anzupassen. Ob das dann auch so funktioniert, wird der Versuch zeigen
Die Magnete dürfen ja nur kurz anziehen und wenn der Draht hinter dem Pfosten vorbeigeführt ist, müssen sie wieder abfallen.
Gruß
Peter
P.S.
Die Mechanik muß ich noch fertigstellen, sonst hätte ich ein Bild eingestellt.
[ Diese Nachricht wurde geändert von: Otiffany am 30 Jun 2013 12:34 ]
|
BID = 895006
BlackLight Inventar
Beiträge: 5321
|
Offtopic :
|
Zitat :
BlackLight hat am 18 Jun 2013 16:46 geschrieben :
|
Zeitmultiplex.
Für je 2,5s werden die Ziffern 10E3, 10E2, 10E1 und 10E0 (wenn vorhanden) angezeigt.
Für die Ziffern 1-6 gehen 1-6 LEDs an. Bei der 7-9 gehen 1-3 LEDs von der anderen Seite an. Für die Zahl 0 geht eine LED an, die nicht von 1 oder 7 belegt ist.
|
Habe es heute mal etwas besser dokumentiert, hier ist die Lösung.
Hoffe aus meinem Gequassel wird das wichtigste erkennbar. Läuft bei mir auf einem ATMega 8.
P.S. Das sind meine aktuellen Gehversuche mit AVR-GCC, bitte nicht alles in der Luft zerreißen. Habe es auch als Dateien angehängt ...
Code : |
// Funktionen.c
#ifndef F_CPU
#define F_CPU 6144000UL
#endif
#include "funktionen.h"
#include <util/delay.h>
// An die Pins PC3-5, PD2-4 jeweils eine LED mit Vorwiderstand löten und sie in einem 2x3er Muster anordnen.
// x bedeutet LED aus
// ziffer = a: (alle LEDs aus)
// x x
// x x
// x x
//
// ziffer = 1...6
// 5 6
// 3 4
// 1 2
//
// ziffer = 7...9
// x 7
// x 8
// x 9
//
// ziffer = 0
// x x
// x x
// x 0
//
// Alle anderen Angaben erzeugen folgende Fehlerausgabe:
// F x
// x x
// F x
//
void ausgabe ( char ziffer )
{
//
// PD4
// PD3
// PD2
// PC3 TDX
// PC4 RDX
// PC5 /\ -Reset
// Alle LEDs ausschalten
PORTD &= ~( (1<<PD2) | (1<<PD3) | (1<<PD4));
PORTC &= ~ ((1<<PC3) | (1<<PC4) | (1<<PC5));
switch(ziffer){
case 'a':
break;
case 0:
PORTD |= (1<<PD2);
break;
case 1:
PORTC |= (1<<PC5);
break;
case 2:
PORTC |= (1<<PC5);
PORTD |= (1<<PD2);
break;
case 3:
PORTC |= (1<<PC5) | (1<<PC4);
PORTD |= (1<<PD2);
break;
case 4:
PORTC |= (1<<PC5) | (1<<PC4);
PORTD |= (1<<PD2) | (1<<PD3);
break;
case 5:
PORTC |= (1<<PC5) | (1<<PC4) | (1<<PC3);
PORTD |= (1<<PD2) | (1<<PD3);
break;
case 6:
PORTC |= (1<<PC5) | (1<<PC4) | (1<<PC3);
PORTD |= (1<<PD2) | (1<<PD3) | (1<<PD4);
break;
case 7:
PORTD |= (1<<PD4);
break;
case 8:
PORTD |= (1<<PD3) | (1<<PD4);
break;
case 9:
PORTD |= (1<<PD2) | (1<<PD3) | (1<<PD4);
break;
default:
PORTC |= (1<<PC3) | (1<<PC5);
}
}
void ausgabe_1000 (signed long zahl)
{
char t, h, z, e;
int a_delay = 2000;
t = zahl / 1000;
h = zahl % 1000 / 100;
z = zahl % 100 /10;
e = zahl % 10;
if(zahl<10)
{
ausgabe(zahl);
_delay_ms(a_delay);
}
else
{
if (zahl<100)
{
ausgabe(z);
_delay_ms(a_delay);
ausgabe('a');
_delay_ms(100);
ausgabe(e);
_delay_ms(a_delay);
ausgabe('a');
_delay_ms(100);
}
else
{
if(zahl<1000)
{
ausgabe(h);
_delay_ms(a_delay);
ausgabe('a');
_delay_ms(100);
ausgabe(z);
_delay_ms(a_delay);
ausgabe('a');
_delay_ms(100);
ausgabe(e);
_delay_ms(a_delay);
}
else
{
if(zahl<10000)
{
ausgabe(t);
_delay_ms(a_delay);
ausgabe('a');
_delay_ms(100);
ausgabe(h);
_delay_ms(a_delay);
ausgabe('a');
_delay_ms(100);
ausgabe(z);
_delay_ms(a_delay);
ausgabe('a');
_delay_ms(100);
ausgabe(e);
_delay_ms(a_delay);
}
else
{
ausgabe(zahl);
_delay_ms(a_delay);
}
}
}
}
} |
|
|
|