Bascom BASCOM ; Erste Schritte zum Ausprobieren

Abblock Kondensator (typisch Keramik, 100nf) immer an VCC und GND. Falls andere Pins vorhanden sind (wie AVCC, AGND, ...) dort auch. Bei mehreren Pins mit dem selben Namen, die sind eh gebrückt, da muss es nicht mehrfach sein.
Das ist jetzt im Übrigen nicht nur für AVR's so, für fast alle IC's. Manche haben auch noch VSS (negative Betriebsspannung), dort auch.
Diese Kondensatoren sollten immer so nah wie möglich am IC platziert werden.

Hintergrundwissen von den Kollegen:

AREF (sofern vorhanden) ist ähnlich. Da hattest du aber schon ein gutes Beispiel für. Geht auch ohne, aber zu Lasten der Genauigkeit.
 
Kondensator ist dran, Code mit Interrupt geht trotzdem nicht. Schaust bitte mal drüber? Danke!
 
Hallo Heini-14

Wenn der Code auf einem ATiny13a laufen soll (siehe Post #451) - warum habt Ihr ihn dann nicht gleich dafür konzipiert?

mfg

Hero_123
 
Hi Hero_123,
aus meiner Sicht ganz einfach: Weil es hier primär um's lernen ging. Und dazu sind größere AVR's deutlich besser geeignet, allein schon wegen UART, wo man mal Ausgaben zum Testen drauf ausgeben kann. Hat der t13 nicht. Der Weg war/ist das Ziel.

Ich schau morgen heute mal in ner XP VM nach.
 
Ich hab den Fehler gefunden.

CodeBox BascomAVR
On Timer0 Ontimer1overflow
Enable Timer0
On Int0 Onadc
'On Onadc
'Enable Adc
Enable Int0
Enable Interrupts
 
Also Zeile 3 und 4 verwirren mich jetzt.
Warum aktivierst du bei INT0 die ISR OnADC?
Zeile 4, wenn auch auskommentiert, hat zu wenig Parameter. Es heißt immer On [InterruptName] [SprungAdresse]

So wie jetzt würde der OnADC Code nur dann ausgeführt (und somit die Lampe an- und ausgeschaltet, wenn du den Taster drückst (und die Lichtverhältnisse stimmen).
 
Warum aktivierst du bei INT0 die ISR OnADC?
Genau, weiß ich nicht, was ich da gemacht habe. Ich habe halt im Internet nach Lösungen gesucht und bin auf Beispiel Codes gestoßen, wobei ich diese Änderung ausprobiert habe. Ein Taster ist nicht mehr nötig, wenn ich die Pwm mittels eine LDR (Hell=aus und Dunkel=an) steuere. Die Grüne LED blinkt nur noch, wenn die PWM an ist ansonsten ist sie aus/an je nachdem Zähler gerade steht. Das ist aber keine Priorität. Was mich stutzig macht, ich kann 1Mhz bis 8Mhz oder und Prescale = 8 oder 64 ändern, der zu schnelle ein Sekundentakt ändert sich nicht. Ändere ich aber Dim C As Word und erhöhe somit den Wert in

CodeBox BascomAVR
Incr C
      If C = 491 Then                     'nur ein angenommener Wert
         C = 0               
         Toggle Gruen

dann wird die Blinkdauer länger. Gelernt habe ich beim Maga8 Taktfrquenz 8Mhz / Prescale=64 = 125000 Phasenkorrekter 8-Bit-PWM =510 Schritte sind 245Hz, was dann so
Incr C
If C = 245 Then
C = 0
Toggle Gruen
ausgesehen hat. Was ist bei meinen Rechnungen falsch? :close_tema:
 
An der Rechnung dürfte eigentlich nichts falsch sein. Aber vergiss nicht nachzuschaun welche Taktfrequenz wirklich genutzt wird. Der Tiny13 hat entweder 4,8 oder 9,6MHz oder 128KHz (Datenblatt, Kapitel 6.2). Die Mega's haben meistens 8MHz. Dann kann die häufig noch geteilt werden, meistens durch 8. All das hat mit deinem Code nichts zu tun, das wird beim Programmieren über die Fuses eingestellt. Du musst es nur in deinem Code beachten.
 
Kann ich das so verstehen, wenn ich $crystall=1000000 im Code schreibe, hat der Tiny immer noch die 4,8Mhz oder 9,6Mhz die über Fuses eingestellt sind.
Ich müsste so zusagen die Taktfrquenz über Fuses ändern?
 
Ja. Das crystal dient nur Bascom, also deinem Code, als Definition wie schnell die CPU läuft. Wie schnell sie es in Wirklichkeit macht besagt es nicht. Es muss übereinstimmen.
Bascom braucht das für die Wait Befehle und sowas wie prescaler=auto oder auch die Baudratenberechnung bei UART.
 
Das hat meine Frage noch nicht beantwortet. Muss ich die Fuse umstellen, um die gewünschte Taktfrequenz zu erhalten?
 
Ich dachte das "Ja" war eindeutig.
Ja, du musst es über die Fuses einstellen. Bzw. zumindest diese sehen um zu wissen mit was für einer Frequenz der Chip läuft und deine Berechnung dementsprechend anpassen. Wer weiß was da vorher eingestellt war. 8MHz wirst du bei einem Tiny13 nicht erreichen (höchstens mit Glück und komplizierten Umwegen). Außer du taktest den extern. Dann wärst du natürlich frei von jeglichen Limitierungen, außer den maximalen 20MHz. Dann müsste es aber ein Quarzt-Oszillator sein, also einer der schon TTL Pegel ausgibt (und typisch rund 2-3x so groß ist wie der Tiny).
 
Das hat mich schon immer gewundert, dass ich einfach im Code die Frequenz geändert habe und sich nichts weiter verändert. Jetzt muss ich im Code Dim C As Word deklarieren und dann If 294 Then schreiben, um auf einen ein Sekunden Takt zu kommen. Richtig?
 
Aus Sicht eines Assembler-Programmierers, es gibt keine Crystal Direktive/Angabe.
Der Code läuft halt so schnell wie er läuft. Einziger Einfluss ist die System Clock.
Die Clock geht auch auf externe Komponenten, wie ADC, Timer, ... Das ist beim Debuggen häufig sinnvoll, einfach die Clock runter setzen. Klar, sämtliche Timings sind hinüber, aber über LEDs kann man eher sehen was was grade passiert. Vorsicht hier nur bei den KHz Frequenzen. Die ausgewählt mit /8 Teiler, das kickt manche Programmer raus, weil der Chip viel zu langsam antwortet. Bricked.

Aber auch in Assembler könnte man es angeben und somit später, also wenn benötigt, passende umgerechnete Werte einfügen lassen. Bascom hat vielleicht etwas ähnliches, habe ich aber noch nicht gesehen.

Nachgerechnet habe ich deinen Wert jetzt nicht, aber grob überschlagen, kommt hin. Wie gesagt, je nachdem wie die Fuses gesetzt sind. Die kenn ich ja noch nicht.
 
Ich hab halt nur den einen Fuse geändert bzw. nach dem testen wieder auf 9'6Mhz eingestellt. Was bedeutet eigentlich debuggen?
 
Debuggen, ja klar, kann mich jetzt wieder erinnern. Ich vergesse schnell mal was. War gerade unterwegs und nur Handy dabei.
Gibt es eine Möglichkeit, einen Code mit dem ich den Sekundentakt genau erkennen kann. Eventuell ein Timer / Counter wodurch eine LED nach einer längeren Zeit an / aus geht. Ich habe es mit einer If Anwendung versucht, leider klappt das auch nicht so richtig. Ich meine das rechnerisch ermittelte Ergebnis mit der Stoppuhr messen kann.
 
Hmmm... Wie wäre es als nächstes Projekt einen Frequenzzähler zu basteln?
Alternativ könnte man natürlich eben so einen nutzen, oder ein Oszilloskop.

Hardware die sich selbst überprüft ist immer etwas kritisch. Bei Servern hast du etwas ähnliches, aber da ist es fast ein 2. PC der da drin läuft, recht leistungsschwach, wie ein Raspberry Pi Zero. Reicht aber aus um ordnungsgemäße Funktion zu überwachen.
 
Projekt einen Frequenzzähler zu basteln?
Das wäre sehr interessant. Mit Server, Raspberry Pi Zero... und so hab ich noch nichts zu tun gehabt. Es kommt immer wieder mal vor, dass ich beim lesen auf solche Begriffe stoße, aber dann breche ich gleich ab. Bascom ist Aufwendig genug für mich, kann kaum das alles aufnehmen.
Können wir heut noch anfangen :dance3:
 
Boah, Bascom ey... Und für sowas soll man auch noch Geld bezahlen...
Selbst in ner XP VM verreckt es...

Hat irgendwer noch eine Version die funktioniert?
Die aktuellste Demo tut es nicht.


8073
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)