Guten Tag,
Das programm war dazu gedacht, um zu wissen, wie lange ein
Eingangssignal auf `high´ liegt, überall wo ich ein PC? auf 1 setze,
wird nur ein LED zum leuchten gebracht ( zum kontrollieren ob der Punkt
im Programm erreicht wird.)
Wenn ich das Programm mit dem AVR Simulator durchlaufen lasse, klappts
einwandfrei.
PS: Nicht wundern das die Main so fade aussieht, hab einiges da
rausgenommen, ist aber unwichtig.
Main:
1
/*
2
* main_rfid.c
3
*
4
* Created on: 19.08.2011
5
* Author: Centro
6
*/
7
//Arduino libs nur benutzbar, wenn c++ Datei.
8
//#include "arduino/WProgram.h"
9
/* Ich muss noch die IRS entsprechend Konfigurieren, dass ich mitkriege,
10
* was sie zählt und die Ausgabe entsprechend einrichten
11
*/
12
#include<avr/io.h>
13
#include<avr/interrupt.h>
14
#include<string.h>
15
#include"globals.h" //momentan nur Deff. von Counter1
Ich empfehle Dir etwas mehr Eigenleistung einzubringen.
Vor allem fehlt da eine Beschreibung was nun genau nicht funktioniert,
woran Du das siehst, anhand welcher Teile des Datenblatts die davon
ausgehest, dass es funktionieren müsste und welche Gegenmaßnahmen Du
bisher probiert hast.
Dein Code ist nicht gerade gut lesbar. Einrückung, sonst fehlerhafte
Formatierung und sinnlose Kommentare tun den Rest, das man sich das
garnicht anschauen will.
spess53 schrieb:> Hi>> Was hast du denn für einen Controller?>> Bei einigen Typen könnte PORTC |= (1<<PC5) durch das JTAG-Interface> blockiert sein.>> MfG Spess
PORTC |= (1<<PC5)
funktioniert problemlos, ein Programier adapter heißt AVRISP mkII
Was ich schon gemacht habe um es ans laufen zu kriegen?
Jede Menge, sitze da schon den ganzen tag dran, ich habe den Code aufs
nötigste reduziert
1
include<avr/io.h>
2
#include<avr/interrupt.h>
3
4
5
intmain()
6
{
7
EICRA=0x03;//High löst aus, bei 0x02 löst Low aus
8
EIMSK|=(1<<ISC00);// Aktiviert den Interrupt an INT0
9
sei();
10
while(1)
11
{
12
PORTC|=(1<<PC2);// LED 2
13
}
14
}
15
16
ISR(INT0_vect)
17
{
18
PORTC|=(1<<PC3);// LED 3
19
}
Sobald ein Interrupt angeht sollte jetz das LED 3 leuchten, tut es aber
nicht.
Zu den 'dummen' Kommentaren, dafür entschuldige ich mich, das ist mein
erstes Programm udn die Kommentare sidn dazu da das ich mir merken kann
wozu was da ist :/
mfg johannes
Da hab ich mich wohl verschrieben
In der AVR Simulation Funktionietr das ganze Einwandfrei, wenn ich es
auf den Chip lade, leuchtet nur LED 4 (d.h. er geht nicht in die IRS
rein )
ps: Ich habe nun auch mit nem zweiten ATmega168 ausprobiert, bei diesem
funktioniert es ebenfalls nicht. Ich will das ganze allerdings
nocheinmal mit dem ATmega48 ausprobieren, mit diesem lief es ja am
Anfang auch (ATmega 168 = ATmega48 mit mehr Speicher)
Wie spess53 schon in den Raum warf:
Fehler an PORTC beruhen meistens auf JTAG.
Deaktivier mal in den FuseBits die JTAG Schnittstelle und berichte.
Defaulmäßig ist die nämlich aktiv und du hast bisher nich geschrieben,
dass du diese deaktiviert hast.
Edit:
Kanns sein, dass der 168 gar kein JTAG Interface hat?! xD
Beitrag "JTAG bei ATmega168"
Nein kann man nicht, ich programmiere peer isp ^^
Wie gesagt, es scheint mir das das am (auch wenns ungewöhnlichklingt)
ATmega168 liegt, mit dem ATmega48 funktionierte ja alles.
btw: Ich glaub ich habe das oben schoneinmal gesagt: Eine der beiden
LED`s läuft ja, nur halt nicht die, die ich in der ISR anknippse :)
Das lässt vermuten, dass du nicht in der ISR landest ;-)
Prüf mal in der While-Schleife ob das INTF-Bit gesetzt wird, während du
eine rising edge an PIN PD2 machst. Lass dir das ggf. mit einer
einschaltenden LED quittieren.
Einhart Pape schrieb:> Int0 wird über PIN B0 ausgelöst.
nein, Int0 wird beim ATmega168 über PD2 ausgelöst,
Ich habe das Problem inzwischen gefunden kopf auf Tisch hau
Nachdem ich noch ein wenig mit bad_vector rumexperimentiert habe kam ich
dann drauf ..., besser gesagt durch einen Freund, ich hatte in Eclipse
das Projekt noch nicht auf den ATmega168 umgestellt (es stand noch auf
ATmega48) und da der 168`ger mehr Speicher hat, sind die ISR nicht an
der selben Speicherstellen, ergo konnte keine ISR auslösen.
Trotzdem vielen dank für eure Hilfe, ich glaube sowas passiert mir nicht
nocheinmal