Hallo mein Tiny läuft net mit 20Mhz hier mein Blinkitest Code : ;----------------------------------------------------------------------- ---- ; ; ATTINY2313 mit 20 Mhz externer Quarzoscil. ; Ponnyprog Sec Bit ist nur SUT0 ein Häkchen ;----------------------------------------------------------------------- ----- .include "tn2313def.inc" ; Definitionsdatei einbinden .def temp = r16 ; Allround-Variable .cseg ; Codesegment .org 0x00 ; Interrupt Vektoren ab Adresse ; 0x00 im Codesegment des AVR reset: rjmp start ; Programmstart ; Initalisierung ; -------------- start: ldi temp, RAMEND ; Stack out SPL, temp ldi temp, 0x00 ; Port D durch Ausgabe von 0x00 ins out DDRD, temp ; Richtungsregister DDRD als Eingang konfigurieren ldi temp, 0x01 ; lade 1 ins register temp out PORTD, temp ; aktiviere den internen Pull-Up Port D ldi temp, 0xFF ; Port B durch Ausgabe von 0xFF ins out DDRB, temp ; Richtungsregister DDRB als Ausgang konfigurieren ; Hauptprogramm ; ------------- main: sbi PORTB,0 nop nop cbi PORTB,0 nop nop rjmp main ; laut Messgerät kommen nur 1,8 MHZ raus ??????
Hallo, cbi 1 Takt nop 1 Takt nop 1 Takt rjmp 2 Takte macht 5 Takte, 20 Mhz / 5 = 2 Mhz, sieht doch nicht so schlecht aus Gruß Rene
@ Diode77 (Gast) >Hallo mein Tiny läuft net mit 20Mhz hier mein Blinkitest Code : >; laut Messgerät kommen nur 1,8 MHZ raus ?????? Du must die Fuses setzen. Dein Tiny läuft noch mit internem Takt. AVR Fuses MFG Falk
> cbi 1 Takt > nop 1 Takt > nop 1 Takt > rjmp 2 Takte > > macht 5 Takte, 20 Mhz / 5 = 2 Mhz Das solltest du nochmal überdenken, auch wenn das Ergebnis trotzdem stimmt. 20/5 sind nicht 2. Abgesehen davon sind es 4 nops und noch ein sbi, und sbi und cbi brauchen jeweils 2 Takte. Das macht zusammen also 10 Taktzyklen. Das Ergebnis ist dann 20 Mhz / 10 = 2 Mhz.
Hallo, @Rolf Magnus; 2MHz habe ich auch ausgerechnet, das erkärt ihm aber immer noch nicht seine gemessenen 1,8MHz. ;) Gruß aus berlin Michael
Das ein Quarz soweit wegdriftet -> kann nicht sein Das der AVR mit internem Oszillator läuft -> kann nicht sein Da bleiben nur 3 Möglichkeiten: - Es ist ein 18MHz Quarz angeschlossen - Das Messgerät misst Mist - Diese Software befindet sich nicht im AVR
Wenn ich das richtig sehe hat der Tiny2313 einen CKOUT-Pin. Vielleicht einfach mal den beschalten und Messen mit welchem Takt der µC läuft.
bin jetzt total verunsichert. Fuse bits stimmen nicht ? Ponnyprog Sec Bit ist nur SUT0 ein Häkchen. Hänge ich den Quatzoszi ab geht nix mehr. Also kein internert Takt oder ? Gruß Diode77
Also wenn Du 1,8 MHz statt 2 MHz misst werden die Fusebits wohl in Ordnung sein. Mögliche Fehlerquellen wäre jetzt noch: - Quarz - Messgerät - ein Zyklus dauert 11 statt 10 Takte - sonstiges :)
@ Diode77 (Gast) >bin jetzt total verunsichert. >Fuse bits stimmen nicht ? Mein Fehler, ich hab das Programm nicht genau angeschaut. Entschuldigung. >Hänge ich den Quatzoszi ab geht nix mehr. Also kein internert Takt oder >? Passt schon. MfG Falk
Vielleicht solltest Du wirklich endlich mal erzählen, was für ein "Messgerät" Dir sagt, dass da 1,8 MHz rauskommen...
Ein DSO schafft Klarheit, da sieht man was man misst! Die Investition von knapp 1000€ lohnen sich für engagierte Bastler auf jeden Fall. ;)
> Ein DSO schafft Klarheit, da sieht man was man misst!
Um die Frequenz eines konstanten Rechtecksignals zu ermitteln, braucht
es mit Sicherheit kein DSO.
Und ein einfaches 50 oder 100MHz 2 Kanal Oszi dürfte wohl für >90% alles Bastler ausreichen. Es soll sogar noch welche geben, die auch ohne Oszi ganz gut auskommen...
Möglicherweise könnte das Messgerät auch falsch messen da es kein 50:50 Rechteck ist.
Jörg B. wrote: > Möglicherweise könnte das Messgerät auch falsch messen da es kein 50:50 > Rechteck ist. Dann misst das Messgerät aber nicht falsch, sondern der Bediener liest falsch ab! Oder kennst Du irgendein Messgerät, das einen Frequenzwert ausgibt, der nicht auf einer Messung der Periodendauer, sondern vielleicht nur der High-Zeit basiert?
Ich kenne jetzt den Assembler bzw. dessen Einstellungen nicht, aber könnte es sein, dass ggf. das Alignment dort reinpfuscht? Vielleicht testweise einfach einmal ein Map-File ausgeben lassen und die Ergebnisse mit dem Quelltext vergleichen.
Wieso nicht einfach mal einen Timer nehmen und nen Pin togglen? Da kann man mit der Frequenz noch etwas runtergehen und kann sich schön ausrechnen ob die 20 MHz passen.
Florian Demski wrote: > Ich kenne jetzt den Assembler bzw. dessen Einstellungen nicht, aber > könnte es sein, dass ggf. das Alignment dort reinpfuscht? Nein, daran liegt es ganz sicher nicht. Ich weiß zwar nicht genau was das ist, aber beim AVR gibt es das nicht, zumindest nich beim Programm Code. Ich vermute, dass der Benutzer einen Fehler gemacht halt: Entweder kann er den Frequenzzähler nicht bedienen, oder der Quarz ist falsch, oder es ist eine ander Software im µC, denn diese die er gepostet hat, sollte genau 1/10 der Quarzfrequenz erzeugen.
Benedikt K. wrote: > Nein, daran liegt es ganz sicher nicht. Ich weiß zwar nicht genau was > das ist, aber beim AVR gibt es das nicht, zumindest nich beim Programm > Code. Ich kenne das von der PC-Programmierung (bin mir jetzt aber unsicher, welcher Assembler das war). Hier wurden Sprungziele gerne auf 4- oder 8-Byte grenzen gelegt (die Opcodes hatte jeweils verschiedene Längen) und entsprechend mit NOPs aufgefüllt, da der Prozessor dann besser auf den Speicher zugreifen konnte. Ehrlich gesagt bin ich mir nicht sicher, ob die NOPs auch in den Programmfluss eingebaut wurden oder nur zwischen verschiedenen Blöcken, damit der Code quasi aufgefüllt wurde, diese aber nie ausgeführt wurden, wobei ich allerdings glaube, dass die nie ausgeführt wurden.
Danke für die Erklärung, sowas ähnliches hatte ich vermutet, wusste aber bisher nicht, das es sowas auch beim Programmcode gibt. Ich bin eher im Bereich µC zu hause, da haben die Befehle meist eine feste Länge.
@Diode77: Falls Du Zeit hast probier mal den Code. ; Hauptprogramm ; ------------- main: in R16,PORTB com R16 out PORTB,R16 ; rjmp main Sollte bei fünf Cycles 20MHz/5/2 -> 2MHz sein. Gruß Stevko
> Möglicherweise könnte das Messgerät auch falsch messen da es kein 50:50 > Rechteck ist. Das könnte man ändern, indem man eins der nops nach dem cbi entfernt und davor eins einfügt.
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.