Forum: Mikrocontroller und Digitale Elektronik PortB an ATTINY2313 verhält sich komisch


von Benjamin K. (benkly)


Lesenswert?

Hi,

ich bin Anfänger was µC angeht und versuche gerade mit grundlegenden 
Ausgabeversuchen an den Ports diese zu verstehen.

Mit folgendem Code müssten ja eigentlich alle LEDs an PortB blinken, tun 
diese aber nicht. Es blinkt nur portb.0 und portb.4

Was mach ich da falsch bzw. was könnte das sein?

Hier der Code:

$regfile = "attiny2313.dat"
$crystal = 1000000
Config Portb = Output
Do
Portb = $b00000000
Wait 1
Portb = $b11111111
Wait 1
Loop
End


Gruß, Benny.

von Skua C. (skua)


Lesenswert?

Der Code sieht ganz gut aus.

Vieleicht Kalte Lötstellen oder LEDs falschherum angeschlossen.

Mess doch mal den Pegel and den Pins.

von Benjamin K. (benkly)


Lesenswert?

Hi,

ok, hab glaub die Richtung des Fehler herausgefunden. Kann es sein das 
man den µC jedes mal vorher löschen muss bevor man den neu proggt? Ich 
dachte Bascom macht das automatisch. Hab jetzt ein wenig herumgespielt 
und bemerkt das er anscheinend nicht alles neu beschreibt, sondern nur 
das was neu programmiert wurde.

Irgendwie blicke ich das nicht, vorher also immer löschen. Aber wo sage 
ich das dem Bascom?


Gruß, Benny.

von Benjamin K. (benkly)


Lesenswert?

Hi nochmal,

also ich blicks jetzt gar nicht mehr.

Hab eben mit AVR-Studio extra den Chip vorher gelöscht. Bei folgendem 
Code blinken jetzt die LEDs an Portb 0 und 4.

$regfile = "attiny2313.dat"
$crystal = 1000000
Ddrb = $b11111111
Do
Portb.0 = 0
Portb.1 = 0
Portb.2 = 0
Portb.3 = 0
Portb.4 = 0
Portb.5 = 0
Portb.6 = 0
Portb.7 = 0
Wait 1
Portb.0 = 1
Portb.1 = 1
Portb.2 = 1
Portb.3 = 1
Portb.4 = 1
Portb.5 = 1
Portb.6 = 1
Portb.7 = 1
Wait 1
Loop
End


Gruß, Benny.

von G. L. (glt)


Lesenswert?

Mal einen anderen versucht? Kann ja auch mal einer hin sein.

Vorausgesetzt es gibt keinen Verdrahtungsfehler.

von Skua C. (skua)


Lesenswert?

Was los?
Hast du kein Multimeter?
Dann wirds Zeit ein zu kaufen.

Nimm doch mal den P. raus und verbinde die pins 12-19 der Fassung mit 
mit pin 20 leuchten alle LED dann ists der P. wenn nicht ists auch klar.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>DDRB = $b11111111

Ich weiß nicht, aber müßte das nicht DDRB = 0b11111111 heißen?

von Benjamin K. (benkly)


Lesenswert?

Hi Leute,

ups, hatte ich vergessen zu sagen. Ich habe ja das STK500 Board. Hab das 
schon abgesteckt und die Bahnen durchgepiepst, alles ok.

Dann habe ich den µC wieder eingesteckt und die Spannungen gemessen. 
Also die LEDs zeigen schon das an was der IC ausgibt, das passt soweit. 
Allerdings gibt der IC nicht das aus was im Programm steht. Eigentlich 
sollte der doch den kompletten PortB blinken lassen. Aber es blinken nur 
die LEDs an PortB.0 und PortB.4, das konnte ich dann durch messen auch 
bestätigen.

Allerdings bringt mich das jetzt auch nicht weiter.

Kann es sein das der µC nen Schuss hat weil ich nicht ESD geschützt war? 
Ich habe zwar ESD Schutz in meiner Werkstatt, habe das STK500 aber in 
meinem Büro wegen dem Notebook aufgebaut.
Und ist das STK500 selbst auch empfindlich?


@skua

Was meinst Du mit "P."? Den Prozzi? Ok, werd ich machen. Mal sehen was 
sich dann ergibt. Hab ja zum Glück noch ein paar hundert von den attinys 
da.


@travelrec

Gute Frage, ich habe das "DDRB = $b11111111" von der Roland Walter 
Homepage. Und das hat auch bisher gut geklappt. Aber mal anders herum 
gefragt ist es mir nicht klar was das "$" oder die "0" vor dem "B" zu 
bedeuten hat.


Gruß, Benny.

von Paul Baumann (Gast)


Lesenswert?

Es muß ein "UND"-Zeichen sein: &

Zum Bleistift:
Portb =&B00000000

MfG Paul

von Benjamin K. (benkly)


Lesenswert?

Hi,

Mist, das wäre ja peinlich wenn das der Fehler wäre. Komisch nur das mir 
Bascom keinen Fehler gemeldet hat. Werd das aber nachher auf jeden Fall 
testen und das "$" gegen ein "&" austauschen.


Gruß, Benny.

von Peter D. (peda)


Lesenswert?

Benjamin Klyeisen wrote:
> Aber mal anders herum
> gefragt ist es mir nicht klar was das "$" oder die "0" vor dem "B" zu
> bedeuten hat.

Das ist natürlich keine geeignete Voraussetzung, damit ein Programm 
funktioniert.
Man sollte seine Programmiersprache schon beherrschen (und nicht 
umgekehrt).
Bzw. ganz einfach mal in der Hilfe nachschlagen.

Bisher scheint unter den Antwortern auch kein Bascom-Crack zu sein 
(steht ja auch nicht im Topic, daß es um Bascom geht).
Ich könnte Dir auch nur zeigen, wie es in C oder Assembler geht.
Du könntest ja mal das Assembler-Listing von Deinem Bascom posten.


Peter

von Paul Baumann (Gast)


Lesenswert?

Wenn Du ein $ Zeichen benutzt, denkt der Compiler, daß alles was danach 
kommt in ASM gemeint ist. Syntaktisch ist das kein Fehler, aber logisch.

MfG Paul

von Benjamin K. (benkly)


Lesenswert?

@ Peter

Hi, ja, ich sagte ja schon bereits das ich blutiger Anfänger bin. Das 
mit dem $ war jetzt schon blöd. Aber das & sieht bei mir auf dem 
Bildschirm irgendwie abgeschnitten aus und ist schlecht als dieses 
erkennbar. Naja, auf jeden Fall werde ich das jetzt nochmals testen und 
hoffe dann das das der Fehler war, oder einfach nur der µC hin ist und 
ein Austausch geholfen hat. Ich werd das dann hier posten.

Ich hab ja noch nicht viel mit Bascom gemacht, aber Deine Bulletproof 
Tasterentprellung hab ich mir gleich mal als Bascom Code kopiert. Den 
werd ich bestimmt noch irgendwann gebrauchen :-)
Allerdings muss ich das vorher alles erst mal verstehen.

Wie sieht das hier allgemein aus, gibt es hier ein paar Bascom-Profis?


Gruß, Benny.

von Skua C. (skua)


Lesenswert?

Bin zwar kein BASCOM crack aber das wird so sein.

Das &B ist die Einleitung einer Binärzahl.
Mit $ leitet man Hexzahlen ein.


$B11111111 = &B101100010001000100010001000100010001
Und jetzt schlägt noch der BASCOM zu.

Dim A as Byte

A = $B11111111
ergibt fehlermeldung

DDRB = $B11111111
ergibt keine fehlermeldung obwohl DDRB auch Byte ist merkt BASCOM aber 
nicht sonder nimmt einfach das untere Byte.

Wenn man
Dim A as Long
A = $B11111111
nimmt
wird A zu 00010001000100010001000100010001

Eigentlich mußte der compiler hier auch meckern
aber einfach wegwerfen ist einfacher.


Und keine Angst!
Du bist nicht der einzige Blinde hier.
Man sieht halt was man sehen will.

von Benjamin K. (benkly)


Lesenswert?

Hi,

ok, es hat sich erledigt. Es war tatsächlich das "$" das Problem. ls ich 
ein "&" daraus gemacht habe ging es. Och menno, immer müssen die blöden 
Computer recht haben und der User ist der Dumme ;-)

Aber danke an alle!


Gruß, Benny.

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
Noch kein Account? Hier anmelden.