Gefunden für prozessor bits - Zum Elektronik Forum |
| 1 - ISP-Adapter für RS232 ohne MAX232? -- ISP-Adapter für RS232 ohne MAX232? | |||
| |||
| 2 - Serielle Schnittstellen - grundlegende Fragen -- Serielle Schnittstellen - grundlegende Fragen | |||
| Hallo Andy
der I2C-Bus ist gedacht für eine Datenübertragung zwischen zwei oder mehreren Chips auf einer Platine. Die Übertragungspegel liegen zwischen 0 und 5 V. I2C-Uhren-Chips reagieren zum Beispiel auf zwei mögliche Adressen. Auf welche sie dann letztlich reagieren, wird durch die externe Beschaltung festgelegt. Dafür ist ein Pin zuständig. Wird der mit Masse verbunden, nimmt er die niedere mögliche Adresse, legt man den Pin an die Versorgungsspannung, dann nimmt er die obere Adresse. Bei den Speicher-Chips ist es ähnlich. Die Adressen sind durch den Chip vorgegeben, und können dann durch die Belegung von zwei oder drei Pins entgültig fest gelegt werden. Die Chips werden über drei Leitungen miteinander verbunden. An einem µProzessor muss man dazu zwei PORT-PINs opfern. Ein PIN ist ein Ausgang der CLK, der zweite PIN der DATA muss zum Senden als Ausgang, und zum Empfang als Eingang umgeschaltet werden. Wenn man ein BIT zu einem Chip senden will, muss der Wert des BITs an den Ausgang DATA gelegt werden, und der Ausgang CLK einmal von LOW nach HIGH geschaltet werden. Dann kommt das nächste BIT. Wenn Daten zu einem Chip übertragen werden sollen, muss eine bestimmte Folge von Bytes zu einem Chip gesendet werden, das heißt, eine bestimmte Folge von BITs. Vor j... | |||
3 - Lauflicht im BASCOM -- Lauflicht im BASCOM | |||
| Hallo,
Deine Aliase sind, wenn BASCOM sich ans Datenblatt hält, falsch, sie müssen statt LedN Alias Pind.N LedN Alias Portd.N heißen. Das Register, was mit PIN(x) bezeichnet wird, dient zum Lesen! (steht auch alles im Datenblatt, deshalb kann ich von BASCOM nur abraten, das ist käse). @perl Zitat : Zum einen ist er überflüssig, da der Pullup hardwaremäßig automatisch abgeschaltet wird, wenn du einen Pin als Ausgang konfigurierst, aber außerdem sprichst du damit ja nicht ein Konfigurationsregister, sondern den Ausgang an, genau so, wie du es etwas später beim Schalten der LEDs machst. Ja, Pullups abschalten ist hier blödsinnig. Wird ein IO-Pin aber als Eingang definiert, kann man über das korrespondierende Bit im PORT-Register den Pullup an- (Bit=1) oder ab- (Bit=0) schalten. Also: PORTD(1) ist Ausgang: DDRD(1) &l... | |||
| 4 - AVR-Assemblercode von Atmega88 auf -8 umstricken -- AVR-Assemblercode von Atmega88 auf -8 umstricken | |||
Zitat : wird ein Atmega88 verwendet, ich habe aber nur den Atmega8 hier.Warum besorgst du dir dann nicht einfach den passenden Prozessor? Das ist viel billiger und nervenschonender als alle derartige Änderungen zu berücksichtigen und ggfs umzubauen: Zitat : The I/O Registers listed in Table 4 have not maintained the same functionality as some of the bits are changed or moved compared to ATmega88. ... | |||
| 5 - Infrarotempfänger -- Infrarotempfänger | |||
Zitat : Entweder hat die Bitfolge auf dem Bildschirm nicht platz, oder man erkennt die Bits nur mehr sehr schwer. so ist es. Bild eingefügt also zusammenfassend: *es gibt unterschiedliche Übertragungssignale *diese können mit normalen Mitteln (freiäugig) nicht voneinander unterschieden werden *jedenfalls kann ich den unterschied zwischen 1 und einer anderen Taste auf diesem Weg nicht feststellen *aber es ist ein unterschied auf jeden Fall vorhanden, auch wenn ich es nicht merke, dh ein angeschlossener Prozessor merkt ihn *wenn ich also irgenwie den Unterschied auswerten könnte könnte ich auch, zB einen uC damit "fernsteuern". Danke an alle die mir bisher weitergeholfen haben ! ... | |||
| 6 - 19" Gehäuse -- 19" Gehäuse | |||
| Z80 oder 8085 ist erstmal egal.
Es gab das System auch mit einem 880 Prozessor ( Z80 software-kompatibel, 8085 hardwarekompatibel) CP/M war damit möglich. Die Busverdrahtung und die Plastik-Führungsleisten waren dennoch die Gleichen. Ob nun 30 Jahre zu spät oder nicht ... Mit diesem System kann man die Bits und Bytes noch selber setzen und verstehen, was dahinter abläuft. (Mit Tasten und STEP Funktion). Vor 20 Jahren habe ich an diesem System meine Ausbildung absolviert. ... | |||
| 7 - Probleme TWI (I2C) Atmega 16 -- Probleme TWI (I2C) Atmega 16 | |||
| Moin,
Zur Bibliothek: das ist ein (schrieb ich ja) TAR-Archiv, sollte selbst Vista lesen können. Kannst mir auch ne Mail schreiben, dann hänge ich dir die Bibliothek an, wenn das unter Vista nicht klappt. Offtopic :Was für ein unfähiges System
Zitat : Hier nochmal mein bisheriger Fortschritt: [...] Ergänze (Fettgedruckt) zu: void i2c_init (uint8_t Address) { TWSR = 0; // kein Vorteiler TWBR = 32; // Da Quartz bei 8 MHz /* ** Set the TWI slave address */ TWAR = (Address << 1); /* ... | |||
| 8 - AVR - Geschwindigkeit von Operationen und Variablentypen -- AVR - Geschwindigkeit von Operationen und Variablentypen | |||
Zitat : Braucht der AtMega zum Subtrahieren (bzw. simples Dekrementieren) deutlich länger als für Additionen? Oder für Schiebeoperationen nach links statt rechts? Nein, aber es gibt schlechte Programmierpraktiken. Zitat : Einlesen von Daten aus einem PISO-Schieberegister gestrickt.Meinst du jetzt Auslesen oder ein SIPO-SR? Zitat : während hereinkommende Bits nach einer ... | |||
| 9 - VB6 - Bits in Bytes umrechnern -- VB6 - Bits in Bytes umrechnern | |||
| Ich habe hier das Gefühl, dass z.B. Checkbox-Zustände übertragen werden sollen und die Zustände durch Einsen und Nullen in einer Zeichenkette repräsentiert werden.
Sollte dem so sein, ließe sich das auch wesentlich einfacher machen, wenn man, wie Clembra andeutete, direkt Ganzzahlen dafür verwendet, indem man gezielt Bits setzt oder löscht. Bits löscht man mit UND, setzen mit ODER. Jeder Prozessor kann das i.d.R. mit einer Instruktion ausführen. ... | |||
| 10 - Arbeitsspeicher aufrüsten -- Arbeitsspeicher aufrüsten | |||
Zitat : Er ist etwas länger als 13cm. So um die 133,35mm/5.250"?
Ob das Mobo den futtert, da musst Du CPU-Z o.ä. mal fragen, wie der Chipsatz heißt - sonst können wir das nicht sagen.
Was das ominöse single-sided/double-sided angeht, hier eine Erklärung, wie so ein Speicherriegel arbeitet: Gewünscht ist, dass der RAM 64-bit tauglich ist, also auf Anfrage einer Adresse 64 Bit (ein Datenwort) auf einen Schlag rausgibt (das gab's auch schon zu Zeiten der 32-Bit-Prozessoren, wurde mit dem 586er aka Pentium eingeführt). Den Aufbau dazu realisiert man wie folgt (Beispiel: 512 Mebibyte SD-RAM): Auf einer Platinenseite sitzen acht Chips. Jeder dieser Chips ist für 8 Bits zuständig (8*8 Bits=64 Bits). In jedem dieser Chips müssen insgesamt 512MB/8=64MB Platz finden. Intern in den Chips realis... | |||
| 11 - AVR - I²C-Slave -- AVR - I²C-Slave | |||
| Hallo,
wenn es nicht so wichtig ist, die IO-Zustände zurückzulesen, dann würde ich dir drei Schieberegister (z.B. CD4094) empfehlen. Du kannst den Überlauf des vorherigen Registers an den Dateneingang des nachfolgenden anschließend und dann schlicht und ergreifend deine 24 Bits austakten als wäre es ein großes Register. Soll allerdings jedes Bit unabhängig von den Nachbarbits gesetzt/gelöscht werden können, kommst du nicht darum, drei Bytes im SRAM als Abbild zu reservieren. Dort würden dann die Bitoperationen durchgeführt und anschließend jeweils der ganze Puffer ausgetaktet. Soll es dennoch beim I²C bleiben: Schau ins Datenblatt, dort steht, wie du deinen AVR als Slave einstellen kannst! Hier mal ein Auszug aus einem meiner früheren Programme: Code : | |||
| 12 - 74HC164 - 8-bit serial-in, parallel-out shift register -- 74HC164 - 8-bit serial-in, parallel-out shift register | |||
Auch wenn sich die Fragen mit eigener Recherche eventuell beantworten ließen, bin ich mal nicht so. Habe die ganze nach an einem Projekt programmiert, da tut es gut, mal zu schreiben ...
Zitat : der ic ist also ein logisches Schaltwerk. wievile fehlt denn noch zu einem microcontroller ? Viel. Ein Prozessor kann aber ein Schieberegister in seiner Recheneinheit besitzen oder als Mikrokontroller welche besitzen, um z.B. eine serielle Schnittstelle zu betreiben. Da sind die Schieberegister i.d.R. direkt an den internen Daten- und Adressbus angeschlossen, muss aber nicht zwingend. Von einem Schieberegister zu einer CPU ist es ein großer Schritt. Schau dir doch mal an, wie das Register intern aufgebaut ist, also aus welchen Grundelementen. Da sind ein paar FlipFlops, ein paar Gatter. Schon ein winziger Mikrokontroller baucht für die denkbar einfachsten Sachen zig tausende davon. Und natürlich die Verbin... | |||
| 13 - Projekt Tastatur in Morsecode umwandeln -- Projekt Tastatur in Morsecode umwandeln | |||
Zitat : Tatsächlich konnten wir eine Folge von 11 Bits festellen, die bei jeder taste anders war. (1 anfangs Bit, 1 Bestätigungs Bit, 8 Bit für den echten zeichen und 1 Paritätsbit) Das entspricht völlig dem, was man mit der RS-232 Schnittstelle empfangen kann. Allerdings sind dort noch invertierende Treiber- und Empfängerchips im Spiel, die die 0/+5V Signale des UART auf die +12V/-12V der COM-Schnittstelle umsetzen. Nur ein Teil der Tasten schickt übrigens nur ein Byte, oft sind es zwei, drei oder sogar vier, aber alle melden sowohl das Drücken wie auch das Loslassen durch unterschiedliche Codierung. Das ist nötig, damit man z.B. zwischen a und A unterscheiden kann. Ausserdem kann sich die Codierung ändern, wenn die Num-Lock LED brennt. Das ist aber alles gut dokumentiert, ihr braucht da keine grossartige Forschungsarbeit zu leisten. | |||
| 14 - Angst vor SMD im Hobbybereich? -- Angst vor SMD im Hobbybereich? | |||
Zitat : Benutzt Ihr eigentlich noch EPROMs? Selten. Entweder für Spielereien (habe mal EPROM-Spielereien mit USB, Linux und nem kleineren Prozessor gemacht) oder für Adressdekoder bzw. allgemein Dekoder, die nicht soo schnell sein müssen (ca 100ns). Ansonsten nicht, da viel zu umständlich, vorallem der Löschvorgang. Außerdem haben viele neue Flashroms diverse Algorithmen zur Datenbeschützung, zum sauberen, sicheren Programmieren, einige andere Vorteile wie Pageread etc. Da die Belegung zumindest der DIL/DIP-EPROM meist mit EEPROM derselben Gehäuseart übereinstimmt, kann man situationsabhängig sowohl als auch benutzen. Ich habe hier ziemliche Mengen an selbstgelöschten EPROMs rumliegen, ich überlege mir derzeit einen sinnvollen Verwendungszweck. Viele sind 128kB groß, das ist garnicht mal schlecht. Die haben vier Arrays zu je 262144 Bits. Sind aber unhandlich, schwer und brauchen lange beim Löschen. [ Diese Nachricht wurde ge&aum... | |||
| 15 - PIC und C Amfängerfrage -- PIC und C Amfängerfrage | |||
| Naja, der Eingang wird ja nicht direkt Invertiert, sndern nur ein Abbild des Einganges im Speicher.
Du musst es ja nichtmal invertieren, um zu testen, ob das Bit 0 oder 1 ist. Dazu maskiert man das Bit, so wie ich das gemacht habe. Das ist aber völlig unabhängig vom Prozessor, die Bildung des Komplements (=Inversion) aller Bits erfolgt in der Sprache C nunmal mit der Tilde. Das ist also Sprach- und nicht maschinenabhängig. Mit dem ! kann man z.b. das Gegenteil eines Ausdrucks ausdrücken: Wenn das Bit nicht 1 ist, dann ist der Taster gedrückt. if(!(Variable & Maske)){...}; Der Compiler wiederum bastelt daraus eine möglichst effiziente Konstruktion von Mnemonics. Das ist aber wieder eher unwichtig. ... | |||
| 16 - PWM beim ATMega 8 -- PWM beim ATMega 8 | |||
| Moin,
eher allgemein: Die PWM-Hardware kann nicht jeden beliebigen Pin, sondern nur den OC-Pin ansteuern. Dies stellt man im Timer Control Register ein. Wird ein anderer Pin benötigt, so muss es etwas anders gemacht werden: Der Timer wird im CTC-Modus initialisiert, in jedem Compare Match Interrupt wird dann beispielsweise ein Pin angeknipst und im Überlauf-Interrupt wieder ausgeschaltet. Das bedeutet für den Prozessor zwar ein kleines bischen mehr Zeit, aber die Hardware ist wesentlich anpassbarer. Willst du die PWM automatisch laufen lassen, musst du dich also auf den OC-Pin beschränken, und dem tut es gut, wenn man ihn einmalig als Ausgang definiert, ob das jetzt andere Hardware (UART, I²C, etc.) automatisch macht oder nicht. Das steht so auch im Datenblatt. Zitat : The general I/O port function is overridden by the Output Compare (OC1x) from the waveform generator if either of the COM1x1:0 bits are set. However, | |||
| 17 - SOS PT 100 - Temperaturmessung -- SOS PT 100 - Temperaturmessung | |||
Zitat : Der AT Mega16 hat 8 Interne 12Bit Analog Digital converter Auch das ist leider falsch. Es handelt sich um einen 10-Bit Analogdigitalwandler, die verschiedenen Eingänge werden mit einem integrierten MUX auf den ADC geschaltet. Edit: Was Jorn mit den INH meinte: Das sind die Inhibiteingänge, wenn sie aktiviert werden, dann ist auch erst der Multiplexer aktiv. Jeder einzelne Inhibiteingang muss zum Prozessor gehen, der damit gezielt einen Analogmultiplexer aktivieren kann. Dazu kann man auch einen Adressdekoder nehmen, der dann die Adressbreite um drei Bits erhöht: Bit0-2: Auswahl des Kanals Bit3-5: Auswahl des Muxers Damit entfällt logischerweise auch das weitere Multiplexen am µC selbst, die Ausgänge der Multiplexer sollten sich im Idealfall parallel schalten lassen. Somit muss immer von 0-49 gezählt werden und der Analogwert gelesen werden. Das ganze k... | |||
| 18 - Signal mehrerer Fotodioden (Lichtintensität) mit µC auswerten (Signalkonditionierung) -- Signal mehrerer Fotodioden (Lichtintensität) mit µC auswerten (Signalkonditionierung) | |||
| Hallo,
ich habe mit einem AVR schon ca. 50ksamples/s geschafft (mit anschließender Datenverarbeitung versteht sich) Der Trick liegt dabei in der Reduzierung der Auflösung auf 8 Bit und die Genauigkeit ist dann etwas geringer. Ein Impedanzwandler ist schonmal nicht verkehrt. Du kannst die Dioden in einer Matrix anordnen, per ADC-Muxer dann jeweils eine Diode anwählen, den Wert sampleln und mit dem vorherigen Vergleichen. Der Vergleich sollte nicht auf Gleichheit, sondern auf größere Unterschiede (also nicht nur 1 sondern 2-3 Bits) stattfinden. Dieser Prozessor wäre dann zwar gut ausgelastet, aber es ist sowieso nicht unüblich, für die Bedienungseinheit eines Gerätes einen gesonderten Kontroller zu nutzen. So machen das namhafte Hersteller und so habe ich es auch öfters gemacht. Die Daten werden dann mit einem frei wählbaren Protokoll und auf Hardwareebene per I²C oder SPI oder ähnlich zum Master verschickt. Läuft tadellos und der Hauptprozessor wird nicht mit Polling o.ä. belastet. Wenn was auf der Bedienungseinheit geschieht wird ein IRQ gesendet und sobald der Master kann, holt er sich die Daten in der Empfangseinheit ab. ... | |||
| 19 - RFID-Projekt - Tipps und Kaufberatung -- RFID-Projekt - Tipps und Kaufberatung | |||
| OK, schön eins nach dem anderen:
Die Initialisierung von ANSEL und CMCON0 so wie Du sie gemacht hast, dient dazu alle Pins als "digital I/O" zu verwenden. Macht man das nicht, verweigern die I/O den Dienst für digitale Eingangs, bzw. Ausgangssignale. Bei der Initialisierung von ANSEL fehlt die Bankumschaltung. ANSEL liegt in Bank 1, das heisst, vorher muss umgeschaltet werden, sonst wird auf ein Register in Bank 0 zugegriffen (Siehe Kapitel 2.2.2). Das ist eine kleine Gemeinheit der PICs über die fast alle Anfänger stolpern. Ansonsten ist dieser Codeschnipsel richtig. Was meinst Du mit "Port 3"? Ich habe das Gefühl, dass Du PIN 3 meinst. Bringe die Begriffe "Port" und "Pin" nicht durcheinander. Der Pin ist das Ding aus Draht, das aus dem schwarzen Käfer kommt. Der "Port" ist das Ein-/Ausgangsregister in dem Käfer drin, das mit den Pins außen verbunden ist - sofern es durch die Initialisierung auf die Pins geschaltet ist. GP4 spielt nicht, wegen der nicht erfolgten Löschung von ANSEL. Setze "clrf ANSEL" vor oder nach "BCF TRISIO GPIO,...". Dort wird auf Bank 1 zugegriffen. UND, was ich an Deinem Code NICHT sehen kann: der PIC muss in den Configuration-Bits so eingestellt werde... | |||
| 20 - [PC] Tonprobleme mit VLC-Portable unter Win98 -- [PC] Tonprobleme mit VLC-Portable unter Win98 | |||
Zitat : Am Wochenende werd ich mal die Systemauslastung beim decodieren messen, dann seh ich weiter. Die CPU ist schonmal nicht das Problem, unter 40% Auslastung. Der RAM hingegen wird beim Abspielen knapp, es bleiben ca. 15MB übrig. Leider hat die Kiste hat nur 128MB , werde versuchen 256MB einzubauen.
Kann der knappe RAM das Problem verursachen? Was kommt sonst noch in Frage? @Tom-Driver Zitat : Ein Interrupt Request (IRQ) bzw. eine Unterbrechungsanforderung löst eine Unterbrechung eines Prozessors im System aus, in der Regel ausgehend von Geräten im System. Der Prozessor unterbricht daraufhin seine derzeitige Au... | |||
| 21 - Bascom AVR Frage zu Arraynamen in Variablen -- Bascom AVR Frage zu Arraynamen in Variablen | |||
| Ich mache das ungefähr so:
Tabelle mit Offsetwerten irgendwo im ROM platzieren. Das auszugebene Zeichen wird auf die Basisadresse (erstes Byte) gerechnet, und der Tabellenwert wird wiederum als Offset benutzt und auf eine Tabellenbasisadresse gerechnet. Nachdem nun die Adresse eingestellt ist, wird nurnoch der Inhalt gelesen. Da du 5 Bytes hast, musst du halt entsprechend große Tabellen schreiben, aber das sollte eigentlich rel. gut gehen. Nachdem du das erste Byte gelesen hast, muss der ROM-Zeiger (Z-Register) inkrementiert werden und das nächste Byte gelesen werden. Das ganze fünf mal. Du musst dir nur was ausdenken, wie du das mit dem krummen Wert von 5 machst. Mit 5 multiplizieren ist in Basic leicht, aber auch anstrengend und zeitintensiv für den Prozessor. Besser mit graden Werten wie 8 oder so rechnen. Da reicht es z.B., alle Bits drei Stellen nach links zu schieben. Du verschwendest dann zwar pro Zeichen 3 Bytes, aber man muss da Nachteile und Vorteile gegeneinander aufrechnen. Habe ich das Thema getroffen?
Oder: verschachtelte Select Case-Anweisungen. ... | |||
| 22 - Gemultiplexter Druckerport, oder wie? -- Gemultiplexter Druckerport, oder wie? | |||
| Na super ...
Lauter Antworten und keine richtig verstanden
Die Relaiskarte hat Transistoren zu hauf unterm Deckel. Der Steuerstrom beträgt bei +5V genau 0,901 mA, bei 0V halt eben bei 0 mA. @DonComi (letztes Posting): Kann man das ohne Mikroprozessor machen? Den letzten von den Dingern habe ich vor nem halben Jahr programmiert, ich garantiere für nichts mehr. Könntest du mir vielleicht mal einen Schaltplan hochladen? Falls irgendwer Schaltpläne für sowas hat, bitte hochladen! Die Pins am LTP-Port habe ich schon auf einem Klemmbrett. Ich habe Target3001, muss aber nicht gleich die Profi-Variante sein, ne gescannte Freihandzeichnung wär mir bald lieber. Wenn möglich würde ich das gerne ohne Prozessor realisieren. Wegen dem Lötaufwand braucht ihr euch ja keine Sorgen zu machen ...
Es sollte auch nicht zuviel kosten, schließlich will ich dass Ding ja nicht verkaufen. (max. ~50€) @Dracos-Carazza: Ich will ja nix sagen, aber ich glaub, es ist schon abends, oder? Was soll´s. Danke für die Erklärung mit den Bits. Wenn ich das richtig verstanden hätte, müsste das so aussehen: Je... | |||
| 23 - Schleife -- Schleife | |||
Zitat : Wofür brauch denn der uP include? Das ist eine Textdatei in der numerischen Werten sprechende Namen zugewiesen werden. Auch bestimmte Tests und Verarbeitungsanweisungen für den Assembler können darin enthalten sein. Der Assembler liest die darin enthaltenen Anweisungen in dem Moment, in dem er über die $include-Anweisung stolpert. Schau einfach mal mit dem Editor in die Datei hinein. Du kannst dort auch selbst Eintragungen machen, wenn Du beim Programmieren häufig bestimmte Namen verwenden willst. Besser ist es allerdings, wenn Du dafür eine eigene Include-Datei anlegst, und dann auch ein eigenes $include -Statement verwendest. Zitat : der näc... | |||
| 24 - COM-Port programmieren -- COM-Port programmieren | |||
Danke für eure schnellen (und umfangreichen) Antworten ! Ich brauche allerdings eine sehr schnelle Übertragungsgeschwindigkeit und hatte mir gedacht, da ich mir bereits ein einfaches Testprogramm zum Ansteuern von 2 LEDs geschrieben hab, dass die Ausgänge einzeln ein-und ausschaltet (was auch funktioniert |
|
Zum Ersatzteileshop Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation! gerechnet auf die letzten 30 Tage haben wir 8 Beiträge im Durchschnitt pro Tag heute wurden bisher 7 Beiträge verfasst 2 Besucher in den letzten 60 Sekunden alle 30.00 Sekunden ein neuer Besucher ---- logout ----su ---- logout ---- |