Hallo an alle, ich hoffe ihr könnt mir helfen..also erstmal zu den Kenndaten Pollin Board ISP programmer(auf dem pollin board) compiler avr studio 4 kommunikation ponyprog uc Atmega32 also ich habe das testprogramm von pollin draufgeladen, welches zwar funktioniert jedoch rumspinnt. Auch bei eigenen Programmen scheint der Atmega32 rumzuspinnen. Er reagiert oftmals nicht bei Tastendruck und wenn er reagiert kommt es auch ab und zu vor, dass er die falsche Led ansteuert. (im Testprogramm und eigenen testroutinen) Wisst ihr vllt woran das liegen kann??? Kann eine nicht korrekte Tastenentprellung dafür sorgen, dass eine falsche LED angesteuert wird?? Sprich der falsche Port auf HIGH gesetzt wird? Oder liegen die Gründe wo anders? Beitrag melden | Bearbeiten | Thread löschen | Markierten Text zitieren | Antwort | Antwort mit Zitat
Alexander Herfurtner schrieb: > Wisst ihr vllt woran das liegen kann??? am nichtvorhandenen Programm?
ich habe den anderen beitrag gelöscht, da der betreff nicht richtig war...sorry;(
1 | #include <stdint.h> |
2 | #include <avr/io.h> |
3 | #include <avr/interrupt.h> |
4 | |
5 | |
6 | |
7 | int main(void) |
8 | |
9 | {
|
10 | |
11 | |
12 | |
13 | |
14 | //PORTD
|
15 | DDRD =(1<<PD6)|(1<<PD5); // PD5 und PD6 Ausgang |
16 | PORTD = 0x00; |
17 | |
18 | |
19 | while(1) |
20 | |
21 | {
|
22 | |
23 | if ((PORTD & (1<<PD2)) == (1<<PD2)) |
24 | {
|
25 | while((PORTD & (1<<PD2)) == (1<<PD2)) |
26 | {}
|
27 | |
28 | if ((PORTD & (1<<PD5)) == (1<<PD5)) |
29 | {
|
30 | PORTD &= ~(1<<PD5); |
31 | }
|
32 | else
|
33 | {
|
34 | PORTD |= (1<<PD5); |
35 | }
|
36 | |
37 | }
|
38 | |
39 | |
40 | |
41 | }
|
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | return 0; |
49 | }
|
Also hier kommt es vor, dass auch die 2. LED (PD6) aufleuchtet. Außerdem reagiert der ATMEGA32 nicht jedes mal auf den Tastendruck
Alexander Herfurtner schrieb: > Außerdem > > reagiert der ATMEGA32 nicht jedes mal auf den Tastendruck Welche Taste? mfg.
Alexander Herfurtner schrieb: > Taste 1 --> PD2 Dann musst du den Port aber auch lesen! >if ((PORTD & (1<<PD2)) == (1<<PD2)) Das Lesen des Portpins macht man nicht mit PORTx, damit liest man das Portregister, sondern mit PINx. Deswegen hat so mancher in seine Tastatur gebissen. mfg.
oh man! werd's sofort ausbessern! aber für Schreibvorgänge nutzt man PORT oder?
unter I/O Ports, Seite 49, im Datenblatt ist die Architektur gut dargestellt
Martin schrieb: > unter I/O Ports, Seite 49, im Datenblatt ist die Architektur gut > dargestellt danke!
Hi Noch ein kleiner Tip. Du kannst dir den Umweg über Ponyprog sparen, wenn du dir einen USB-ISP- Progger zulegst. Gibt's in der Bucht für ca.20 €. Vorteil, 1. Der besagte Umweg 2. vieeel schneller 3. freier Comport. Z. B. um mit OpenEye die Variableninhalte aus dem Controller zu lesen. OpenEye ist von mir und ist eigentlich für Assemblerprogramme zugesschnitten. Wenn du dir aus C ein Assemblerlisting erstelen kannst, wird's auch funktionieren. Du findest es hier irgendwo. Such einfach nach OpenEye. Gruß oldmax
Martin Vogel schrieb: > Gibt's in der Bucht für ca.20 €. Kauf dir bloß nicht so einen Billigscheiß. AVRISP MKII und sonst gar nichts. mfg.
okai ich danke euch für eure Tipps! sehr aufmerksam=) und den usb progger werde ich mir denke ich mal zulegen, jedoch später...denke für das kleine projekt wird der isp progger von pollin reichen..denke die programme werden nicht allzu groß! gruß alexito
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.