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
>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.
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
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
Bist du sicher das der PullUp immer ausgeschalten bleibt. Zein mal den Code wie du ihn jetzt hast.
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.
Die Schaltung ist 1:1 vom Asuro übernommen. Funktioniert auch dort nur mit Magenschmerzen.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.

