Hallo Schwarmwissen, so langsam verzweifele ich an der KI bei diversen Suchmaschinen. Da kommt nur noch Unsinn heraus. Und man merkt täglich, dass man alt wird und die Zeiten der PDP11/40 (VAX, Z80, 6802, ...) vorbei sind. Mein Problem: Ich benötige für ein (FPGA-)Projekt einen externen 2.048 MHz Takt. Dazu habe ich einen AT85 (fuse EF,DF,FF) mit einem 8.192 MHz Quarz zum Laufen gebracht. Jetzt benötige ich einen exakten 2.048 Takt auf PB0, PB1 oder PB2. Da sollte ja eigentlich eine Interrupt-Routine mit OCR0x genügen. Kann mir einer aus dem Schwarmwissen einen Tipp geben? Bitte kein RTFM. Danke. Ernst
1 | .include "tn85def.inc" |
2 | |
3 | sbi DDRB,0 ; OC0A |
4 | ldi r16,(1<<WGM01)+(1<<COM0A0) ; CTC, toggle OC0A |
5 | out TCCR0A,r16 |
6 | ldi r16,2 -1 |
7 | out OCR0A,r16 |
8 | ldi r16,(1<<CS00) ; /1 |
9 | out TCCR0B,r16 |
10 | rjmp pc |
Ernst H. schrieb: > Ich benötige für ein (FPGA-)Projekt einen externen 2.048 MHz Takt. I.d.R. hat man beim FPGA (viel) mehr Freiheiten seinen Takt zu gestalten. Um was für ein FPGA handelt es sich denn? Hast du Zugriff auf das FPGA-Design? Wenn ja, welche Taktquellen stehen im bzw. am FPGA zur Verfügung?
Beitrag #7902620 wurde vom Autor gelöscht.
Beitrag #7902622 wurde vom Autor gelöscht.
Ernst H. schrieb: > Da sollte ja eigentlich eine Interrupt-Routine mit OCR0x genügen. Du willst jeden zweiten CPU-Takt einen Ausgangspegel umschalten und denkst, dass man dazu eine längliche ISR benutzen kann? Entweder nimmst du einen Waveform-Ausgang des Timers (wie gezeigt wurde). Alternativ produziert die Folge
1 | 1: sbi x,POUTB |
2 | cbi x,POUTB |
3 | rjmp 1b |
gerade so dein 1:4, aber nicht mit 50 % Tastverhältnis.
:
Bearbeitet durch Moderator
Ernst H. schrieb: > so langsam verzweifele ich an der KI bei diversen Suchmaschinen. Da sieht man mal wieder dass man mit Brain-Anwendung oft viel weiter kommt als mit Belästigung diverser KI-Maschinen. Noch dazu bei so einfachen Problemstellungen. Bei dir braucht es allerdings noch etwas Nachhilfe bei den Grundlagen zur Mikrocontroller-Programmierung. Da hilft auch keine KI. Vor den Erfolg haben die Götter der Schweiss gesetzt.
> Alternativ produziert die Folge ...
Der vorausgesetzte ATtiny85 gehört zur AVRe-Klasse, folglich benötigt
sbi bzw. cbi 2 Takte, die gezeigte Folge erzeugt 1:6.
Warum nimmt man statt 8MHz Quarz plus programmiertem Controller nicht sofort einen 2MHz Oszillator? Offensichtlich sind für den Controller keine weiteren Aufgaben geplant außer der Erzeugung des Takts. Ein entsprechender Oszillator dürfte ähnlich im Stromverbrauch sein (wenn nicht geringer) und benötigt m.E. definitiv weniger Platz. Oder ist das so ein "Einzelstück, ich hab aber jede Menge 8er Quarze und Attinys in der Lade liegen, die kommen dann endlich mal weg"-Ding? Ich meine außerdem, das diverse PICs einen Quarz/4-Hardwareausgang haben, d.h. das ginge sogar ohne großes Programm ;) Bin mir aber nicht sicher ob das mit einem Quarz geht und nicht einen Oszi erfordert.
:
Bearbeitet durch User
S. L. schrieb: > Der vorausgesetzte ATtiny85 gehört zur AVRe-Klasse, folglich benötigt > sbi bzw. cbi 2 Takte, die gezeigte Folge erzeugt 1:6. Dann eben so. Siehe pin toggle function im Datenblatt.
1 | ldi r16,0x7 |
2 | out DDRB, r16 |
3 | loop: |
4 | out PINB, r16 |
5 | out PINB, r16 |
6 | rjmp loop |
Moin, vielleicht kannst du den Timer 0 in Mode 7 also Fast PWM laufen lassen. Im Register OCR0A müsste dann der Wert 4 stehen. Im Register OCA0B der Wert 2. Am Ausgang OCR0B – PB1 müsste dann ein Signal ganz ohne INT entstehen. Das habe ich jedoch nicht getestet. Gruß Carsten
Ernst H. schrieb: > Jetzt benötige ich einen exakten 2.048 Takt auf PB0, PB1 oder PB2. Da > sollte ja eigentlich eine Interrupt-Routine mit OCR0x genügen.
1 | #include <avr/io.h> |
2 | |
3 | void setup_timer0_toggle_2048mhz() { |
4 | // Set PB0 (OC0A) as output
|
5 | DDRB |= (1 << PB0); |
6 | |
7 | // Timer0 in CTC-Modus (Clear Timer on Compare Match)
|
8 | TCCR0A = (1 << COM0A0) | (1 << WGM01); // Toggle OC0A on Compare Match, CTC mode |
9 | TCCR0B = (1 << CS00); // Prescaler = 1 → volle Taktfrequenz: 8.192 MHz |
10 | |
11 | OCR0A = 1; // Toggle alle 2 Takte → 8.192 MHz / 4 = 2.048 MHz Rechteck |
12 | }
|
13 | |
14 | int main(void) { |
15 | setup_timer0_toggle_2048mhz(); |
16 | |
17 | while (1) { |
18 | }
|
19 | }
|
Kanns leider mangels HW nicht testen.
Carsten-Peter C. schrieb: > vielleicht kannst du den Timer 0 in Mode 7 also Fast PWM laufen lassen. > Im Register OCR0A müsste dann der Wert 4 stehen. Im Register OCA0B der > Wert 2. Am Ausgang OCR0B – PB1 müsste dann ein Signal ganz ohne INT > entstehen. Das habe ich jedoch nicht getestet. Fast richtig. Die korrekten Werte sind: OCR0A=3 OCR0B=1 Dann paßt das.
Ernst H. schrieb: > Hallo Schwarmwissen, > > so langsam verzweifele ich an der KI bei diversen Suchmaschinen. Da > kommt nur noch Unsinn heraus. Und man merkt täglich, dass man alt wird > und die Zeiten der PDP11/40 (VAX, Z80, 6802, ...) vorbei sind. Offenbar sind auch deine Synapsen dort zurückgeblieben. > Mein Problem: Ich benötige für ein (FPGA-)Projekt einen externen 2.048 > MHz Takt. Dazu habe ich einen AT85 (fuse EF,DF,FF) mit einem 8.192 MHz > Quarz zum Laufen gebracht. > > Jetzt benötige ich einen exakten 2.048 Takt auf PB0, PB1 oder PB2. Da > sollte ja eigentlich eine Interrupt-Routine mit OCR0x genügen. Ein 74xy74, als Muster eines Dual-D-Flipflops, kann das auch. Das braucht dann natürlich noch einen 8192 kHz Taktgenerator. Wobei jedes FPGA das ich kenne, dass auch mit ein wenig VHDL/Verilog aus seinem primären Takt ableiten, und auf einem Pin ausgeben könnte.
Hallo zusammen, Danke für die vielen Antworten. vorab: ja, es ist ein "Einzelstück", zufällig hatte ich in meiner Bastelkiste mehrere Attiny 85,84 und 2313. Neben mehreren 16 MHz Oszillatoren hatte ich noch einige 16, 8 und 8.192 MHz Quarze. Ich benötige aber für mein Projekt nicht 2.000, sondern 2.048 MHz (2**11!). Also fiel meine Wahl auf den vorhandenen 8.192 MHz Quarz. Zur Zeit (auch aus der Bastelkiste) habe ich zum ersten Test einen Altera Cyclone ii EP2C5T144 Mini-Board. Mit dem 50 MHz Oszillator kann ich jedoch mit PLL keine 2.048.000 Hz erzeugen. In einem anderen Thread werde ich mal mein Projekt vorstellen. Es geht ganz grob um "Geschichte der Computer", also um den "Nachbau" eines Rechners mit FPGA. Neben diversen Assemblern programmiere ich u.A. auch in C, C++, Haskell, Clash, Perl, Verilog (aber nicht VHDL), Step-7, Rockwell ControlLogix, ... Manchmal hat man bei den einfachsten Problemen Aussetzer. Die meisten Probleme fangen an mit: "Mal >SCHNELL< ... (z.B. einen 2.048 MHz Quarzoszillator aufbauen)". Ernst
Moin, Brauchst du die 2.048Mhz als Taktsignal fuer irgendwas ausserhalb des FPGAs oder wuerde nicht auch ein entsprechendes CLK_Enable Signal innerhalb des FPGAs reichen, was halt alle 24..25 Taktzyklen (vom vorhandenen 50MHz Takt ausgehend) mal fuer einen Takt auf High geht, so dass sich im Mittel 2.048MHz ergeben? Hier mal n Link, wie jemand aus 50MHz 4.43361875MHz generiert hat, und damit wohl zufriedener war, als ich erwartet hatte: Beitrag "Re: krumme Frequenzen aus 50Mhz erzeugen" Gruss WK
:
Bearbeitet durch User
Kann man an so einem FPGA nicht einfach zwei Pins als Inverter konfigurieren und da den Quarz und zwei Kondensatoren anschließen? Synchron durch vier dividieren ist dann ja kein Problem mehr.
Ernst H. schrieb: > Manchmal hat man bei den einfachsten Problemen Aussetzer. Die meisten > Probleme fangen an mit: "Mal >SCHNELL< ... (z.B. einen 2.048 MHz > Quarzoszillator aufbauen)". Die 2,048 MHz gibt es auch als fertiges Bauteil mit 4 Pins, kostet 50 Cent und da kann man sich dann die ganze Akrobatik mit den verstaubten Teilen aus der in diesem Forum berühmten „Bastelkiste” sparen – heutzutage würde man dann auch zu der SMD-Variante mit 3.3V greifen, z.B. als SMD7050 oder SMD5032. Bei solchen Geschichten fragt man sich natürlich auch, wie es denn überhaupt mit dem erwähnten FPGA-Projekt klappen soll, wenn jemand bei so einer Oszillator- oder ATTINY-Lappalie die sogenannte „KI” oder ein Forum bemühen muss – in beiden Fällen wirft das kein gutes Licht auf die Sache, aber das nur so nebenbei. Dass man den Takt einfach durch zwei D-Flipflop eines FPGAs durch vier teilen oder generell intern zu vielen brauchbaren Frequenzen aufbereiten kann (Stichwort PLL oder DCMs bei vergleichbaren Xilinx-Produkten), sollte einem „Entwickler” in diesem Zusammenhang eigentlich auch schon klar sein – wenn er das nicht weiß oder kennt, sollte er sich unbedingt zeitnah damit auseinandersetzen, denn dieses Thema wird einen immer wieder einholen. Bei einem zusätzlichen, externen Takt schafft man sich ferner in der Regel auch ein neues Problem, denn am Ende des Tages muss es womöglich mit den 50 MHz des FPGAs irgendwie synchronisiert werden, aber wer weiß schon, was das für ein Rechner im FPGA sein soll – ist ja bis dato alles streng geheim. Vor dem „Bau” eines „Rechners” im FPGA empfehle ich jedem den „Bau” von deutlich einfacheren Dingen in einem FPGA, wie beispielsweise Blink- oder Lauflicht etc, oder das ganze gar erstmal mit einem CPLD, die deutlich einfacher handzuhaben und zu begreifen sind, zu üben.
:
Bearbeitet durch User
@Gregor J. Jawoll! Blinklichter! Oder Lauflichter! Es ist kein geheimes Projekt (s.u.) Ich war zu faul aufzustehen und 3 m entfernt die ausgedruckte Version vom Manual des AT85 zu holen. Also habe ich den "Gockel" angefragt, auf welchem Pin der CKOUT (bzw. CLKO) liegt. Antwort mit KI: PB2. Falsch, nichts ging. (liegt an PB4, wo auch XTAL2 liegt). Also mal zu später Stunde die Freunde im Forum fragen. @all Zum Projekt: Ich habe vor ca. 15 Jahren angefangen, den Apollo Guidance Computer (AGC) zu simulieren. Damit meine ich nicht das Verhalten zu emulieren, sondern die Hardware zu simulieren. Der/die Schaltpläne sind veröffentlicht. Der AGC besteht aus fast 6000 NOR-Gattern. Um an jeder Stelle die Signale "messen" zu können, habe ich in Perl eine Simulationsumgebung und eine Sprache nebst Compiler entwickelt, um den kompletten AGC zu simulieren. Allerdings war die Laufzeit der Perl-Simulation 1000-10000 mal länger als in Echtzeit. Die Schaltung habe ich in monatelanger Arbeit in meiner neuen Sprache beschrieben. Und siehe da, er läuft an und ich kann an allen möglichen Stellen das Verhalten und die Signale messen und plotten. Dann ca. 10 Jahre Pause, Zeit für Ehefrau, andere Projekte, ... Jetzt möchte ich mein Modell in Hardeware abbilden.Die 50 MHz nutze ich, um einen 10 ms "propagation delay" für die Chips zu erzeugen. Asynchron! dazu wird ein 2.048 MHz Takt benötigt, der den Systemtakt des AGC darstellt. Durch diverse Teiler wird da ein Sekundentakt ermittelt, der u.A. die Missionszeit (seit Start) anzeigt. Endergebnis soll eventuell eine Vorlesung "Geschichte der technischen Informatik" sein. Viele Grüße, Ernst p.s. Ich weiß, es gibt in C++ eine sehr gute Emulation des AGC, dies ist aber keine Simulation auf Hardwareebene. Es gibt auch mehrere FPGA-Projekte zum AGC, aber ich möchte mein eigenes haben.
Hast Du denn schon die Hardware aufgebaut? https://upload.wikimedia.org/wikipedia/commons/b/bd/Apollo_display_and_keyboard_unit_%28DSKY%29_used_on_F-8_DFBW_DVIDS683588.jpg
Ernst H. schrieb: > dazu wird ein 2.048 MHz Takt benötigt, der den Systemtakt des AGC > darstellt. Dafür reicht die von WK verlinke Variante dicke aus. Beitrag "Re: ATTiny85 als Oszillator (8.192 MHz XTAL, output 2.048 MHz)"
Ernst H. schrieb: > Ich war zu faul aufzustehen und 3 m entfernt die ausgedruckte Version > vom Manual des AT85 zu holen. Also habe ich den "Gockel" angefragt, auf > welchem Pin der CKOUT (bzw. CLKO) liegt. Antwort mit KI: PB2 Tja, reingefallen. KI als Suchassistent ist mal so richtig Scheiße. Wenn man sich die rohen Google-Treffer anschaut, kommt man schnell dahinter, daß es widersprüchliche Antworten gibt. Wenn man der "KI" glaubt, bekommt man zwar eine Antwort, hat aber keinerlei Anhalt ob die auch richtig ist. Was heutzutage als KI - insbesondere als KI Suchassistenz - verkauft wird, ist krude Statistik über die Suchergebnisse. Wenn 99% das falsche sagen und nur 1% richtig liegt, dann kriegt man die falsche Antwort. Und mit der Tendenz, hemmunglos voneinander abzuschreiben, verbreiten sich falsche Antworten mindestens so schnell wie richtige. Und die "KI" befeuert das noch. > Also mal zu später Stunde die Freunde im Forum fragen. Anstatt aufzustehen? Oder mal das Datenblatt als PDF anzusehen? Ich meine dafür gibt es doch Datenblätter. Wie kommt man da überhaupt darauf, Google zu fragen?
http://nmp24.de/?Digitaltechnik:Frequenzteiler Kann man die Frequenzteiler nicht im FPGA umsetzen?
:
Bearbeitet durch User
Axel S. schrieb: > Anstatt aufzustehen? Oder mal das Datenblatt als PDF anzusehen? Ich > meine dafür gibt es doch Datenblätter. Wie kommt man da überhaupt > darauf, Google zu fragen? Der Grund dafür könnte durchaus die berühmte Datenblattphobie sein oder 'ich lasse einfach mal die anderen es für mich erledigen', denn schließlich gibt es genügend pathologisch konkurrierende Jungens mit Helfersyndrom hier, die das machen werden, was ja am Ende tatsächlich auch geschah. Dass man nicht mal in der Lage ist, einen bestimmten Pin eines ATTINY85 zuzuordnen oder generell zu finden, wo es im Grunde genommen insgesamt nur acht bzw. sechs relevante davon und eine explizite Zeichnung im Datenblatt von diesen gibt, und lächerliche fünf Zeilen C-Code in der IDE mithilfe des Datenblatts zu verfassen, offenbart eigentlich den mentalen Zustand oder Trip, auf dem man gerade unterwegs ist. Ausgedruckt war das Datenblatt ja schon, aber am besten erstmal schön an die Seite tun und bloß nicht reinschauen, denn es könnte ja wehtun – lieber stundenlang überall außerhalb der Wohnräume fragen, statt einfach mal in das Ausgedruckte zu schauen oder mit der Maus auf die PDF-Doku zu klicken. ___________ Obelix X. schrieb: > Kann man die Frequenzteiler nicht im FPGA umsetzen? Es kommt immer auf das Konzept an, aber normalerweise versucht man schon die Ressourcen eines FPGAs so zu nutzen, dass man außenrum kaum etwas derartiges braucht, denn meistens ist ja alles notwendige im Silizium schon vorhanden und man muss nur in der Lage sein, den Inhalt nutzen zu können – hier stößt man aber auf das gleiche Problem, denn man muss auch in diesem Kontext Datenblätter studieren und in Falle eines FPGAs sogar deutlich mehr blättern, lesen und verstehen lernen; ein ATTINY85 ist im Vergleich dazu nur eine kleine Babykacke. Und wenn man sich dann gar nicht oder nicht genügend mit FPGAs auskennt, macht man halt komische bzw. unsinnige Dinge, wo dann von hinten durchs Auge etwas angeschlossen und auf merkwürdige Weise betrieben wird. Im besten Fall benötigt man nur einen externen, hochfrequenten Oszillator für den FPGA und lässt sich die gewünschten Frequenzen intern bereitstellen, um alles andere, selbstentworfene, was auch im FPGA sitzt, damit zu betreiben. Bestenfalls kommuniziert man dann mit der Außenwelt (LCD, Taster etc.) nur noch über die selbstdefinierten IOs, denn auch so etwas wie die Pull-UPs, Pull-Downs oder Spannungspegel sind in der Regel inclusive und einstellbar. ___________ Ernst H. schrieb: > Endergebnis soll eventuell eine Vorlesung "Geschichte der technischen > Informatik" sein. Ja nee ist klar, sagt ja auch der richtige, der nicht einmal den CLKO beim ATTINY85 finden konnte – träumen ist aber nach wie vor erlaubt und übrigens: wenn Du Dich weiter so „intensiv” wie bisher mit Deinen Datenblättern beschäftigst, könnte es auch auf eine Vorlesung „Warum ich es mit dem AGC in einem FPGA als eigene Kreation nicht geschafft habe” hinauslaufen – aus wissenschaftlicher Sicht ist es bestimmt mindestens genauso interessant.
Jens M. schrieb: > Warum nimmt man statt 8MHz Quarz plus programmiertem Controller nicht > sofort einen 2MHz Oszillator? > Ein entsprechender Oszillator dürfte ähnlich im Stromverbrauch sein > (wenn nicht geringer) und benötigt m.E. definitiv weniger Platz. Wenn es vor allem klein sein soll: RV-3032-C7, 3.2x1.5x0.8mm plus 1 Abblock-C. Der erzeugt aus dem internen Uhrenquarz bis zu 67MHz, programmierbar in 8kHz-Schritten. Funktioniert mit 1.8 bis 5V und braucht bei 3.3V, 2MHz und 10pF Last weniger als 100uA. Muss einmalig per I2C programmiert werden.
Ernst H. schrieb: > Ich war zu faul aufzustehen und 3 m entfernt die > ausgedruckte Version vom Manual des AT85 zu holen. Warum druckt man so etwas aus? Mir wäre die Volltext-Suche dabei zu langsam.
Das Einzigste, was einige der Foristen hier können, ist Andere zusammenzuscheißen(sic) und für saudumm erklären. Trotzdem danke an alle, die etwas sinnvolles beigetragen haben.
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.