Forum: Mikrocontroller und Digitale Elektronik ATMEGA8 INT1 funktioniert nur teilweise


von Uwe K. (uk3461)


Angehängte Dateien:

Lesenswert?

Guten Abend,

Ich habe meinen Asuro Robby mit einem neuen ATMEGA8L-8PU ausgerüstet und 
versuche die Tasterauswertung mit Bascom zum Laufen zu bringen. Da ich 
weder ein Elektroniker, noch ein guter Programmier bin (für Bascom lang 
es gerade) bin ich ein wenig am verzweifeln.
Bei den ersten Tastern mit den niedrigen Widerstandswerten (2k, 4k, 8k2 
und 16k) wird der Interrupt INT1 ausgelöst. Die beiden letzten Taster 
ignoriert der Interrupt einfach. Bei einem Test mit einem Poti habe ich 
herausgefunden, das INT1 nur bis zu einem Widerstand von 28,5K ausgelöst 
wird.

Zum Testen habe ich die Tasterschaltung auch noch einmal auf meinem 
Steckbrett mit einem ATMEGA8-16PU nachgebaut. Hier hat INT1 nur bis zu 
einem Widerstand von 17K ausgelöst.

Ich habe auch schon das ATMEGA Datenblatt durchgeschaut und im Forum 
gesucht. Leider hat mich das nicht weiter gebracht. Da die Taster mit 
dem C Programm und dem Original ATMEGA schon mal funktioniert haben, 
müsste eigentlich alles richtig verdrahtet sein. Habe ich vielleicht 
einen ungeeigneten Controller Typ verwendet?

Kann mir jemand helfen?

Gruß Uwe
von Hubert G. (hubertg)


Lesenswert?

Ist in dem C-Programm am PD3 auch der PullUp aktiv?
von holger (Gast)


Lesenswert?

>Die beiden letzten Taster
>ignoriert der Interrupt einfach. Bei einem Test mit einem Poti habe ich
>herausgefunden, das INT1 nur bis zu einem Widerstand von 28,5K ausgelöst
>wird.

Das liegt am internen Pullup. Der bildet einen
Spannungsteiler mit deinen Widerständen. Ab einem
bestimmten Wert wird halt kein Low Pegel mehr erkannt.
von Uwe K. (uk3461)


Lesenswert?

Vielen Dank für die schnellen Antworten:

Ob beim C-Programm die Pullups gesetzt sind kann ich leide nicht sagen, 
da ich das Programm momentan nicht verfügbar habe.

Ich habe jetzt das PullUp-Bit am PD3 Port auf 0 gesetzt und neu 
getestet. INT1 löst jetzt bis ca. 26k aus (vorher waren es max. 17k). 
Bis zu den 68k des letzten Tasters ist das noch ein weiter Weg.

Gruß Uwe
von spess53 (Gast)


Lesenswert?

Hi

>Bis zu den 68k des letzten Tasters ist das noch ein weiter Weg.

Dann messe doch einfach mal die Spannungen, die bei den gedrückten 
Tasten anliegen. Für besonders prickelnd halte ich diese Schaltung 
übrigens nicht.

MfG Spess
von Hubert G. (hubertg)


Lesenswert?

Bist du sicher das der PullUp immer ausgeschalten bleibt.
Zein mal den Code wie du ihn jetzt hast.
von Steffen W. (derwarze)


Lesenswert?

Im Programm wird immer wieder der PullUp eingeschaltet (Portd.3=1) das 
funktioniert so nicht.
Die ganze hochohmige Schaltung ist aber alles andere als eine 
zuverlässige Konstruktion.
von Hubert G. (hubertg)


Lesenswert?

Die Schaltung ist 1:1 vom Asuro übernommen. Funktioniert auch dort nur 
mit Magenschmerzen.
von spess53 (Gast)


Lesenswert?

Hi

>Die Schaltung ist 1:1 vom Asuro übernommen. Funktioniert auch dort nur
>mit Magenschmerzen.

Ist auch nicht verwunderlich. Hier im Forum gab es schon ein paar 
Beiträge, wie man es richtig macht.

MfG Spess
von Uwe K. (uk3461)


Lesenswert?

Super, es funktioniert!

Zunächst einmal vielen Dank für die zahlreichen Rückmeldungen.
Der Fehler lag natürlich bei mir.

Nach euren Rückfragen, ob ich denn alle PullUps entfernt habe, habe ich 
mir das Programm noch einmal in Ruhe angeschaut und PullUps in der 
Interruptroutine gefunden (ich Dussel). Nach dem Entfernen wird INT1 
sogar noch mit 200K ausgelöst(Steckbrett). Auch die Ausuro Taster werden 
jetzt sicher erkannt.

Vielen Dank für die Hilfe
Gruß Uwe
1
'Interruptroutine
2
Taster:
3
  Print "INT1"
4
  ' Widerstands-Dekade aktivieren
5
  Ddrd.3 = 1
6
  ' Portd.3 = 1 ******************************** Code gelöscht
7
  ' Analogwert lesen und formatieren
8
  Adc4 = Getadc(4)
9
  ' Ausgabe an Terminal
10
  Print Adc4
11
  ' Widerstands-Dekade deaktivieren
12
  Ddrd.3 = 0
13
  ' Portd.3 = 1 ******************************** Code gelöscht
14
Return
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.