hi! also ich hab zwei Problem
1. Der yC springt immer in Interrupt 0 auch wenn ich den Int1 aktivier
2. PortC Pin0 und Pin1 geben noch was anderes aus, wie kann man das
abschalten
Jtag ist abgeschaltet
>&=~(1<<TWEN)|(1<<2);;
~(1<<TWEN) = 0xF9
(1<<2) = 0x04
==> TWEN &= 0xF9 | 0x04 => TWEN wird nicht verändert (das Bit 2 ist eh
immer 0)
Ohne einen vernünfitgen Quellcode kann man nur rumstochern...
so mmm wenn ich jetzt portc richtig als ausgang schalte dreht mein
display durch
mein display ist an Port a angeschlossen
finde ich auf jedenfall komisch
>Wieso?>Das Problem ist das der total spinnt wenn ich das mach
Stell dir mal vor main() macht gerade lcd_string(string);
Dann kommt ein INT0 und ballert dir voll dazwischen
und macht ebenfalls lcd_string(string);
Was soll da wohl gutes bei rauskommen ?
>komischer weise ist das nicht mal das problem sondern wenn ich PORTC =>0x01;
Alles gequirlte Kinderkacke !
Funktionen die in main() verwendet werden, dürfen
nicht in Interrupts verwendet werden. Funktionen
die in Interrupts verwendet werden, dürfen nicht in main()
verwendet werden. Ohne Vorsichtsmassnahmen jedenfalls nicht.
> sprintf(string,"j = %d",j++);> lcd_string(string);> _delay_ms(10);> lcd_clear();
Du glaubst doch nicht etwa das du dein Display in 10ms
ablesen kannst ?
//MCUCR |= (1<<ISC01)|(1<<ISC00); //Wie wird der Interrupt gestartet hier:low aktiv
15
16
17
//sei(); //allgemein Interrups einschalten
18
19
//*****************************
20
21
staticunsignedintj=0;
22
charstring[15];
23
_delay_ms(100);
24
while(1){
25
26
set_cursor(0,1);
27
sprintf(string,"j = %d",j++);
28
lcd_string(string);
29
_delay_ms(10);
30
31
32
}
33
34
35
return0;
36
}
37
38
39
ISR(INT0_vect)// veraltet: SIGNAL(SIG_INTERRUPT0)
40
{
41
charstring[15];
42
staticunsignedinti=0;
43
44
45
PORTC=~PORTC;
46
47
48
/*
49
set_cursor(0,1);
50
sprintf(string,"%d",i++);
51
lcd_string(string);
52
53
54
55
set_cursor(0,2);
56
57
sprintf(string,"INT0");
58
lcd_string(string);
59
_delay_ms(10);
60
lcd_clear();
61
*/
62
// Interrupt Code
63
}
so hab die interrupts ausgeschaltet
jetzt gibt der immer alles richtig aus wenn PORTC nicht initialisiert
wird
ab der intialisierung
gibt der immer noch was aus aber immer nur blödsinn:
36##36##36##36##36##
und so ein kram
>das liegt wohl daran das ich den TWI Port initialisier.>wie kann ich den abschalten also das das ein reiner ausgang ist.
machst du doch schon, indem du ihn gar nicht erst einschaltest:
>//TWCR &=~(1<<TWEN);;
also ich hab die pots auf leds
und Pin0 und 1 sind ständig am blinken ohne das ich was mach
außerdem spinnt der yC wenn ich den auf PORTC 0x01 0x02 oder 0x03
initialisier
mmmmm
>also ich hab die pots auf leds
Du hast also LEDs an den Ports.
Vieleicht bricht dein schlappes Netzteil zusammen
wenn du die einschaltest ? Brown Out Reset
wäre denkbar.
und das bricht dann nur zusammen wenn ich Pin 0 und 1 initialisier??
und alle anderen 5 LEDs ziehen gar kein strom ??? naja
hätte auf jedenfall sein können, aber das netzteil macht das schon macht
1000mA sollte reichen.
ne ich vermute eher die geschichte mit TWI?
>ne ich vermute eher die geschichte mit TWI?
Quatsch.
Ohne deine Schaltung wird das hier nix mehr.
Hast du einen Hauch von Kondensator in der Nähe
Vcc/GND vom uC ?
Entweder du hast nen JTAG Prommer angeschlossen
oder JTAG nicht abgeschaltet. PC0 und PC1 werden
vom Addon Board auf PC4,PC5 geroutet. Weiss der
Teufel wieso. Kann man da Jumper abziehen ?
achso ne das sieht nur so aus das ist ne steckkontaktbuchse.
ich muss das dann selbst noch verdrahten.
mmmm also was mich irretiert ist folgendes wenn ich das löcd nicht
initialisier dann blinken PC0 und PC1 nicht.
also wenn ich DDRA = 0xff; aufrufe um den Porta als ausgang zu
definieren macht der den Mist.
wenn ich aber auch wenn es keinen sinn macht den Porta = 0xcf definiere
dann tuts zwar mein display aufgrund der fehlenden Eingänge nur
bescheiden, aber der PortC wird nich beeinträchtigt.
wenn ich das simuliere macht der nicht den mist
>mmmm also was mich irretiert ist folgendes wenn ich das löcd nicht>initialisier dann blinken PC0 und PC1 nicht.
Das mag ich jetzt nicht mehr verstehen :(
Da ist ein ganz dicker Bug in deinem Programm oder
in der Hardware.
@ Holger Danke für deine Mühe,
ja es war die Hardware.
Auf dem Pollinhauptboard wird PIN0 und 1 noch über jumper auf nen Eeprom
geführt und liegen dahinter an 5v. Jumper weg ---> Problem gelöst