Mein erstes Programm.funktioniert nicht

#2959424
Lesenswert?

Ich bin Neuling und lerne derzeit Bascom, möchte später aber C lernen.

Nun habe ich mein erstes Programm in Bascom geschrieben, welches bei 
einem ATtiny 2313 (von Pollin) einfach nur den Port D0 aller 500ms an- 
bzw. ausschalten soll, an welchem eine LED hängt. Also ein ganz 
einfacher Blinker.
Nach dem ich das Programm aufgespielt habe(mit PonyProg, nem ATMEL 
Evolution-Board V2.0.1 und USB-Seriell-Wandler), habe ich ihn auf ein 
Steckbrettchen gesteckt und per Netzgerät mit 5V versorgt.
Die LED blinkt nun auch, allerdings zeitlich nicht richtig: sie ist ca. 
5s an und dann ca. ne halbe aus. Dann geht sie wieder an.

Hier ist der Quelltext:

   $crystal = 20000000
   $regfile = "ATtiny2313.dat"
   $hwstack = 12
   $swstack = 8
   $framesize = 8

   Config Portd = Output

   Do
     Portd.0 = 1
     Waitms 500
     Portd.0 = 0
     Waitms 500
   Loop
   End

An den anderen Ports ist nichts zu messen. Ich habe auch schon versucht 
den Port zu ändern und dann wurde auch dieser bedient, nur eben zeitlich 
nicht richtig.
Ich hoffe ich habe alle nötigen Informationen gegeben und danke schon 
mal in Voraus.
Gast #2959456
Lesenswert?

Du hast da wirklich einen 20 MHZ Quarz dran und die Fusebits auf 
externen Quarz umgestellt?  Sieht nicht danach aus, dein Programm 
verhält sich nicht entsprechend deiner Quarz-Vorgabe.

20 MHZ, sind das nicht zuviel für den Prozessor?
Ändere mal die Angabe auf 1000000 ab, falls der Tiny mit den internen 1 
MHZ laufen sollte, passt wenigstens dein Programm.
Wenn es neu übersetzt und eingespielt ist, auf internen Takt steht.
#2959473
Lesenswert?

Ich benutze jetzt erstmal ein ATMega8, der scheint mir 
anfängerfreundlicher zu seien. Ponyprog schreibt gerade... (oh man sind 
die USB-Seriell Wandler lahm...)

Das mit den Fuses ist mir noch zu hoch, ich werde mich mal ein bisschen 
belesen müssen.

Kennt jemand einen guten Link wo beschrieben wird was diese Befehle tun 
und was da hin muss?

$hwstack
$swstack
$framesize
#2959502
Lesenswert?

Ja so meinte ich das auch ^^.

Es läuft jetzt übrigens jetzt (gut, alles ist 8x langsamer als es sein 
sollte aber das liegt an der falschen $crystal Einstellung, da ich 
dachte der läuft schon mit 8MHz...)

Wie ändere ich denn jetzt eigentlich die Taktfrequenz, bzw. wie befehle 
ich dem µC einen externen Quarz zu benutzen?
#2959520
Lesenswert?

Hätte ich als nächstes auch gemacht ^^
Aber eine fachkundige Person ist immer besser :)

Es funktionier jetzt übrigens einwandfrei.
es blinkt wie ich es mir vorstelle. Jetzt kann ich mich an was größeres 
also aus deiner Sicht etwas, was man in 2 Minuten macht. :D
PS: Hast du eigentlich ne eigene Seite?
Gast #2959538
Lesenswert?

Ich kann kein Bascom, aber wenn die LED jetzt blinkt ist doch erstmal 
alles gut.

Nächster Schritt: Signale einlesen. Bis jetzt gibts du ja nur was aus. 
Aber ein "normales" Programm lässt sich ja gut in 3 grobe Schritt 
gliedern:
Eingabe, Verarbeitung, Ausgabe.
Gast #2959593
Lesenswert?

Edgar Brucke schrieb:
> Den If befehl kenne ich schon von NetLogo. Aus der Anleitung für das
> Entprellen von Tastern werde ich allerdings nicht ganz schlau...

Mach erstmal was wo das entprellen nicht notwendig ist.
Also: Schalter gedrückt -> LED an
      Schalter nicht gedrückt -> LED aus

Das geht natürlich auch ohne Controller, aber du sollst ja erstmal 
lernen wie man Eingänge einliest :)
Gast #2959601
Lesenswert?

Das mit dem Prellen ist z.b. wichtig wenn du mit einem Taster einen Wert 
hochzählen willst. Also einmal drücken und der Wert wir erhöht. Der 
Taster prellt allerdings bei drücken und wieder loslassen. Also kann es 
sein, dass du nur einmal drückst aber der Wert um 7 (oder irgendeine 
andere Zahl) erhöht wird. Das will natürlich keiner :)
#2959662
Lesenswert?

Edgar Brucke schrieb:
> Das ist ja mal schön übersichtlich, im Gegensatz was man so im Inet
> findet!
> Ich hab da noch ne Frage: Was ist der Unterschied zwischen PortB.0 und
> PinB.0?


Spätestens jetzt solltest du dich auch als BASCOM Programmierer ein 
bischen mit den Grundlagen deines µC beschäftigen, welche zb im
AVR-Tutorial
zu finden sind.
Konkret kannst du hier
AVR-Tutorial: IO-Grundlagen
zu Lesen anfangen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren