ATTiny24 und Bascom

Gast #4926320
Lesenswert?

Hallo,
Habe gerade Probleme mit einem ATTiny24A im Bascom!
Hier mal das Programm:

'Interner Takt v. 8MHz

$regfile = "ATtiny24.DAT"
$crystal = 1000000

Ddra = &B11111111                                           'Port A= 
Ausgang

Do

PinA.0=1
waitms 2000
PinA.0=0
PinA.1=1
waitms 2000

Loop

End

Es passiert folgendes:
LED PINA.0 = EIN
Nach ca. 4s ist PinA.1 = 1 und PinA.0 noch =1
Nach ca. 4s ist PINA.0 = 0 und PinA.1 noch =1
Nach ca. 4s ist PinA.1 = AUS

Warum????

PinA.0 müsste eigentlich immer EIN sein!

Also 1. Led1 = 1
     2. Led2 = 1
     1. Led1 = 0
     2. Led2 = 0

Mit eimm gekauften BASCOM 2.0.7.7 und Atmel-Studio 4.19! als
Programmer und einem MKII

Der ganze Zyklus dauert 8s --- keine Ahnung warum!

Schönen Abend noch und Gruß aus Magdeburg.
Gast #4926431
Lesenswert?

Sorry. PinA.1 sollte es auch heißen.

Ich habe an den Ausgängen LEDs mit
einem Vorwiderstand von 470 Ohm. Die
LEDs sind an Masse.
Ich habe eigentlich bei dem Befehl:
PinA.X = 1 erwartet, daß der interne
Widerstand (ca. 25kOhm) eingeschaltet
wird. Die LEDs sollten dann nur ganz
schwach leuchten. Aber sie werden voll
angesteuert. Ja, der Tiny toggelt! und
das sehr seltsam. LED (A.0) Ein, wait,
LED (A.1) Ein, wait, LED (A.0) Aus, wait,
LED (A.1) Aus, wait, und von vorn!!!

Mit PortA.X arbeitet er korrekt!

Danke
#4928639
Lesenswert?

Also, Du verwendest Befehle im ungeeigneten Kontext und ich fasse die 
Anmerkungen der Vorredner zusammen:

Du schreibst nicht die Ausgänge, sondern ins Eingangsregister von A, 
deshalb toggeln die Ausgänge:
1
  PinA.0=1

Stattdessen musst Du nur...
1
  PortA.0=1
2
  PortA.1=0

... verwenden.

Und die internen Pullups sind für den Betrieb als EINGANG vorgesehen, 
weil der Port im Betrieb aks AUSGANG sauber High/Low ausgibt (da gibts 
kein "bissel High zum LED antreiben").

Verständlich?
Gast #4928821
Lesenswert?

Marc V. schrieb:
>  Du solltest dich bei Weinbauer bedanken:
> Weinbauer schrieb:
>> PS: A.1 wird einmal 1 gesetzt und das war es dann eigentlich, A.0 sollte
>> wechseln ca. 1/4 Sekunde

Für was soll er sich denn bedanken? Dafür, dass Weinbauer nicht erkannt 
hat, dass auf Pin und nicht auf Port geschrieben wurde? Dementsprechend 
verhielt sich der Controller auch nicht so wie erwartet, statt dessen 
hat er eben beide Pins A0 und A1 getoggelt, da im Originalcode 
wiederholt eine 1 auf jedes der zwei Bits des Pin-Registers geschrieben 
wurde.

Eben genauso wie's im Datenblatt steht:
> Writing a logical one to PINxn toggles the value of PORTxn,

Das deckt sich mit dem beobachteten Verhalten. Auch ist CKDIV8 beim 
ATiny24 per Default gesetzt und damit ergibt sich ein 1MHz Systemtakt, 
entsprechend der $Crystal Einstellung, welche damit auch richtig war, 
nur der Kommentar dazu war falsch. Und damit ist der Hinweis auf die 1/4 
Sekunde Unsinn, zumal der TO etwas anderes beobachtet hat.

Also hat Weinbauer eben nicht einmal im Ansatz den Kern des Problems 
erfasst und da Du seine Antwort scheinbar als die Richtige betrachtest, 
könnte man davon ausgehen, dass Du's auch nicht erfassen kannst. Jetzt 
bist Du ja nicht so der Blitzmerker, aber das solltest Du jetzt schon 
verstehen können ;D

Und jetzt bitte keinen ellenlangen Posts wieder darüber, warum Deine 
Anmerkung trotz des gezeigten Unverständnisses völlig richtig gewesen 
sein soll.
Gast #4929089
Lesenswert?

Ja MWS hat schon wieder den Kern getroffen!
Ich hatte durch Kopieren den falschen Befehl
erwischt und wollte eigentlich nur wissen,
warum sich der ATTiny24 so verhält. Und es
ist kein Fehler in BASCOM sondern so wie
es MWS gepostet hat!
Mit internen Takt meinete ich: Ohne externen
Quarz! Und der Haken für den Systemtakt bei
den Fuses war gesetzt. Also >>> 1MHz!
Danke und Ende
(Firma: Vescomp) #4929157
Lesenswert?

MWS schrieb:
> hat er eben beide Pins A0 und A1 getoggelt, da im Originalcode
> wiederholt eine 1 auf jedes der zwei Bits des Pin-Registers geschrieben
> wurde.

 Sicher.
 Und woher soll er wissen was im Originalcode stand ?
 Im geposteten Code stand es jedenfalls so.


MWS schrieb:
> könnte man davon ausgehen, dass Du's auch nicht erfassen kannst. Jetzt
> bist Du ja nicht so der Blitzmerker, aber das solltest Du jetzt schon
> verstehen können ;D

 Hier:
Beitrag "Re: Welche AVR besitzen die PIN Toggle Fähigkeit?"
 und hier:
Beitrag "Re: Welche AVR besitzen die PIN Toggle Fähigkeit?"

 Oder einen von der älteren Beiträgen versuchen:
Beitrag "Re: Atmega/C: eine Funktion aus einer Funktions heraus aufrufen"

 Lesen und weinen.

HJH-TT schrieb:
> Ja MWS hat schon wieder den Kern getroffen!

 Ja, wahrscheinlich hat er die obigen Beiträge gelesen.

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